当前位置: 首页 > news >正文

MySQL学习笔记(基础篇)

1. DATABASE 数据库

# 创建数据库
CREATE DATABASE `fish`DEFAULT CHARACTER SET = 'utf8mb4';# 查询数据库列表
SHOW DATABASES;# 选择数据库
USE fish;# 删除数据库
DROP DATABASE fish;

2. TABLE 数据表

2.1 操作语句
# 创建一张 user表
CREATE TABLE `user` (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',name VARCHAR(50) COMMENT '用户名',age INT COMMENT '年龄',address VARCHAR(100) COMMENT '地址',create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- TIMESTAMP 时间戳类型update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT '用户表';# 查询所有数据表
SHOW TABLES;# 修改表名
ALTER `fish` RENAME `cat`;# 添加一列
ALTER TABLE `user` ADD COLUMN `hobby` VARCHAR(50) COMMENT '爱好' AFTER `age`;# 删除一列或多列
ALTER TABLE `user` DROP `hobby`, DROP `address`;# 编辑列类型
ALTER TABLE `user` MODIFY `age` INT(3) COMMENT '年龄', MODIFY `hobby` VARCHAR(50) COMMENT '爱好';# 修改列名
ALTER TABLE `user` CHANGE COLUMN `username1` `username` VARCHAR(50) COMMENT '用户名';
2.2 查询语句
# 查询结果别名展示
SELECT * FROM `user`;
SELECT id as user_id FROM `user`;# 按照年龄降序查询用户表前5条数据
SELECT * FROM `user` ORDER BY age DESC LIMIT 0, 5;
-- ASC升序(默认) DESC降序
-- LIMIT 限制查询 {开始(从0开始)},{数量} 从第一条开始往后查询5条数据# 条件联合查询 WHERE		AND与 OR或
SELECT * FROM `user` WHERE username IN ('小表姐', '小表妹') AND age BETWEEN 20 AND 30;
-- IN () 包括括号中的值
-- [NOT] BETWEEN {20} AND {30}	[不]在二者之间# 模糊查询 LIKE
SELECT * FROM `user` WHERE username LIKE '%小__';
-- %匹配任意个 _匹配一个
2.3 增删改语句
# 插入一条数据 INSERT INTO
INSERT INTO `user`(name,age,address) VALUES('鱼钓猫',24,'上海市');
INSERT INTO user(`username`, `age`, `hobby`, `address`) VALUES('小表姐', 24, '鸟语花香', '杭州市');
# 更新一条数据 UPDATE SET
UPDATE `user` SET username = '小表妹', age = 12 WHERE id = 6;
# 删除一条或多条数据 DELETE FROM
DELETE FROM `user` WHERE id IN (7, 8);
2.4 表达式 + 函数
SELECT CONCAT(`username`, '啊') AS username,
IF(`sex` = 1, '男', '女') as sex,
age + 1 AS age,
LEFT(`address`, 2) AS address,
ROUND(RAND(), 6) AS random_num
-- ROUND(AVG(age), 2) AS avg_age
FROM `user`;# 查询总条数
SELECT COUNT(*) AS total FROM `user`;
  • RAND():生成一个随机小数,[0, 1)
  • CONCAT({字段}, 'str'):字符串合并
  • LEFT / RIGHT(2):左 / 右截取
  • ROUND({字段}[, 2]):四舍五入,[合并位数]
  • SUM({字段}):求和
  • AVG({字段}):求平均数
  • MAX / MIN({字段}):最大 / 最小值
  • COUNT(*):总条数
  • NOW():返回当前日期
  • DATE_ADD / DATE_SUB(NOW(), INTERVAL 1 DAY):明天 / 昨天的时间
  • IF({条件表达式}, {真值}, {假值}):判断语句
2.5 子查询 IN([SQL查询语句])
# 查询用户表中所有语文成绩90分及以上的人员信息
SELECT * FROM `user` WHERE id IN (SELECT user_id FROM `source` WHERE Chinese >= 90);
2.6 连接查询
  1. 内连接:连接后的数据表中会包含两张表中所有的列,条数取决于关联表中较少的条数,可能会造成数据缺失。
SELECT * FROM `user`, `source` WHERE `user`.id = `source`.user_id;
-- 连接后的数据表中会包含两张表中所有的列,条数取决于关联表中较少的条数,可能会造成数据缺失。
SELECT * FROM `user` AS u INNER JOIN `source` AS s ON u.id = s.user_id;
  1. 外连接
  • 左连接 LEFT JOIN ON
SELECT * FROM `user` AS u LEFT JOIN `source` AS s ON u.id = s.user_id;
-- user作为驱动表,source作为从表,user表中所有的记录都会被查询出来,source表中没有的记录会用NULL填充。
  • 右连接 RIGHT JOIN ON
SELECT * FROM `user` AS u RIGHT JOIN `source` AS s ON u.id = s.user_id;
-- source作为驱动表,user作为从表,source表中所有的记录都会被查询出来,user表中没有的记录会用NULL填充。

3. 数据库链接

npm i mysql2 js-yaml

db.config.yaml

db:user: rootpassword: roothost: localhostport: 3306database: test

idnex.js

import fs from "fs";
import jsyaml from "js-yaml";
import mysql2 from "mysql2/promise";const yaml = fs.readFileSync("./db.config.yaml", "utf-8");
const config = jsyaml.load(yaml); // 获取配置对象
// console.log('config', config);const sql = await mysql2.createConnection(config.db);const [data] = await sql.query("SELECT * FROM user");

相关文章:

  • 解锁Windows异步黑科技:IOCP从入门到精通
  • 虚拟机安装SQLServer2000
  • 用Ai学习wxWidgets笔记——自制wxWidgets开发参考手册(主体)
  • 在油气地震资料积分法偏移成像中,起伏地表处理
  • agent course-2
  • CBC(Clock Boundary Crossing)简介
  • SVTAV1 编码函数 svt_aom_is_pic_skipped
  • Linux -- 操作系统
  • 修改linux账号名
  • TorchRec - PyTorch生态下的推荐系统解决方案 [官方文档翻译]
  • MySQL基础关键_002_DQL
  • 从技术角度看Facebook的隐私保护机制
  • 从AI应用到职业跃迁,AI已成智能时代关键变量
  • Windows 匿名管道通信
  • C++静态编译标准库(libgcc、libstdc++)
  • AE模板 动感节奏快闪图文展示介绍片头 Typographic Intro
  • 深度学习正则化:原理、方法与应用深度解析
  • Pillow 移除或更改了 FreeTypeFont.getsize() 方法
  • AI对IT行业的重塑:挑战与机遇并存的技术革命
  • GD32F407单片机开发入门(十九)DMA详解及ADC-DMA方式采集含源码
  • 从“长绳系日”特展看韩天衡求艺之路
  • 上海:以税务支持鼓励探索更多的创新,助力企业出海
  • 杭州挂牌临平区两宗住宅用地,起始总价约11.02亿元
  • 原国家有色金属工业局副局长黄春萼逝世,享年86岁
  • 俄罗斯纪念卫国战争胜利80周年阅兵式首次彩排在莫斯科举行
  • 探索演艺产业新路径,2万观众走进音乐科技融创节