前言
本文是对黑马程序员的《Mysql从入门到精通》系列视频的基础部分的笔记。
1.SQL语句
1.1 SQL通用语法
1.SQL语句可以单行或多行书写,以分号结尾。
2.SQL语句可以使用空格/缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4.注释:
单行注释:--注释内容或#注释内容
(MySQL特有)
多行注释:/*注释内容*/
1.2 SQL分类
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象 (数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
1.3 DDL语句的使用
1.3.1 数据库操作
查询所有数据库
SHOW DATABASES;
查询当前数据库
SELECT DATABASE();
创建
CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集 ] [ COLLATE 排序规则 ];
删除
DROP DATABASE [ IF EXISTS ] 数据库名;
使用
USE 数据库名;
1.3.2 数据表单操作
查询当前数据库所有表
SHOW TABLES;
查询表结构
DESC 表名;
查询指定表的建表语句
SHOW CREATE TABLE 表名;
创建表
CREATE TABLE表名(
字段1 字段1类型 [COMMENT 字段1注释],
字段2 字段2类型 [COMMENT 字段2注释],
字段3 字段3类型 [COMMENT 字段3注释],
...
字段n 字段n类型 [COMMENT 字段n注释]
)[COMMENT表注释];
往表中增加内容
ALTER TABLE 表名 ADD 字段名类型(长度) [COMMENT注释] [约束];
修改表中字段的数据类型
ALTER TABLE 表明 MODIFY 字段名 新数据类型(长度) [COMMENT注释] [约束];
修改表中数据的字段名和数据类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型(长度) [COMMENT注释] [约束];
删除字段
ALTER TABLE 表名 DROP 字段名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
删除表
DROP TABLE [IF EXISTS] 表名;
删除并重新创建表:一般用于清空表中数据
TRUNCATE TABLE 表名;
1.3.3 Mysql字段数据类型梳理
- 数值类型
类型 | 存储大小 | 取值范围(有符号) | 用途 |
---|---|---|---|
TINYINT | 1字节 | -128 ~ 127 | 小整数,常用于布尔值(0/1)、状态标识 |
SMALLINT | 2字节 | -32,768 ~ 32,767 | 较小范围的整数,例如年龄、年份(不推荐用 YEAR) |
MEDIUMINT | 3字节 | -8,388,608 ~ 8,388,607 | 中等范围整数,适合存储较大但不需要 BIGINT 的值 |
INT / INTEGER | 4字节 | -2,147,483,648 ~ 2,147,483,647 | 最常用整数类型,主键 id、计数值等 |
BIGINT | 8字节 | -9.22e18 ~ 9.22e18 | 超大整数,金融金额、雪花 ID、64 位数据 |
DECIMAL(M,D) | 取决于 M | 精确小数,常用于金额(避免浮点误差) | 金融计算(存储 123.45 时,M=5, D=2) |
FLOAT(M,D) | 4字节 | 大约 ±3.4e38,非精确 | 单精度浮点,科学计算、非精确数据 |
DOUBLE / REAL | 8字节 | 大约 ±1.79e308,非精确 | 双精度浮点,更高精度的科学计算 |
- 字符串类型
类型 | 最大长度 | 用途 |
---|---|---|
CHAR(M) | 0 ~ 255 字符,定长 | 固定长度字符串,例如性别'M'/'F' ,国家代码 'CN' |
VARCHAR(M) | 0 ~ 65535 字符(实际取决于行大小和编码) | 可变长度字符串,最常用(如姓名、邮箱) |
TEXT | 65,535 (64KB) | 大文本,例如文章内容、日志 |
TINYTEXT | 255 | 小文本 |
MEDIUMTEXT | 16,777,215 (16MB) | 中等长度文本 |
LONGTEXT | 4,294,967,295 (4GB) | 特大文本 |
BLOB | 65,535 (64KB) | 二进制数据,例如图片、文件(不建议存数据库,建议存文件系统) |
TINYBLOB | 255 | 小二进制 |
MEDIUMBLOB | 16MB | 中等二进制 |
LONGBLOB | 4GB | 特大二进制 |
ENUM('a','b',...) | 最多 65535 个成员 | 枚举值,存储固定集合的字符串,如性别、状态 |
SET('a','b',...) | 最多 64 个成员 | 集合,可同时选择多个值(如权限标签) |
- 日期与时间类型
类型 | 存储大小 | 格式 | 用途 |
---|---|---|---|
DATE | 3字节 | YYYY-MM-DD | 只存日期(生日、节日) |
DATETIME | 8字节 | YYYY-MM-DD HH:MM:SS | 常用,存储完整日期时间(订单时间) |
TIMESTAMP | 4字节 | YYYY-MM-DD HH:MM:SS | 自动存储 UTC 时间,可用于更新时间戳(受时区影响) |
TIME | 3字节 | HH:MM:SS | 只存时间(每天几点) |
YEAR | 1字节 | YYYY (1901–2155) | 存储年份(不推荐,建议用 SMALLINT) |
✅ 总结使用场景:
- 主键 ID:INT / BIGINT
- 金额:DECIMAL(10,2)
- 文章内容:TEXT
- 上传的文件/图片:路径存 VARCHAR,文件本身建议存在对象存储(而不是 BLOB)
- 时间记录:DATETIME(推荐)或 TIMESTAMP(带时区)
- 状态/枚举值:TINYINT 或 ENUM
1.4 DML语句的使用
DML英文全称是DataManipulationLanguage(数据操作语言),用来对数据库中表的数据记录进行增删改操作。
1.4.1 插入数据
给表中部分字段插入数据
INSERT INTO 表名(字段名1,字段名2,..) VALUES(值1,值2,...);
给表中的所有字段插入数据
INSERT INTO 表名 VALUES(值1,值2,...);
给表中的部分字段批量添加多条数据
INSERT INTO 表名(字段名1,字段名2,..) VALUES(值1,值2,..),(值1,值2,...),(值1,值2,..);
给表中的所有字段批量插入数据
INSERT INTO 表名 VALUES(值1,值2,..),(值1,值2,...),(值1,值2,..);
1.4.2 修改数据
UPDATE 表名 SET 字段名1=值1,字段名2=值2... [WHERE 条件];
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
1.4.3 删除数据
DELETE FROM 表名 [WHERE 条件]
注意:
DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
DELETE语句不能删除某一个字段的值(可以使用UPDATE)。
那么不加WHERE语句的DELETE操作和上面提到的TRUNCATE操作有啥区别呢?一句话总结:
TRUNCATE TABLE
速度快(直接全部删除),危险大(通常无法回滚),触发器不响应,自增主键会重置;DELETE
(无条件)速度慢(一条一条删除),安全(可以回滚),触发器响应,自增主键不重置。
1.5 DQL语句的使用
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
1.5.1 基本查询
1.查询多个字段
SELECT 字段1,字段2,字段3... FROM 表名;
SELECT * FROM 表名;
2.设置别名
SELECT 字段1 [AS 别名1],字段2 [AS 别名2]... FROM 表名;
3.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
1.5.2 条件查询
1.基本语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<> 或!= | 不等于 |
BETWEEN … AND … | 在某个范围之内 (含最小、最大值) |
IN(...) | 在 in 之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配 (_匹配单个字符,% 匹配任意个字符) |
IS NULL | 是 NULL |
逻辑运算符 | 功能 | ||
---|---|---|---|
AND 或 && | 并且 (多个条件同时成立) | ||
OR 或\ | \ | 或者 (多个条件任意一个成立) | |
NOT 或! | 非,不是 |
1.5.3 聚合函数
1.介绍
将一列数据作为一个整体,进行纵向计算。
2.常见聚合函数
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
3.语法
SELECT 聚合函数(字段名或者*) FROM 表名;
注意:所有的null值不参与聚合函数运算。
3 条评论
123
除了增删改查,MySQL还有这么多功能的啊,我一直用access的
我是后端开发的嘛,肯定得学的深入一些