MySQL8
Install
1、安装 docker-compose
1 |
|
2、构建文件
1 |
|
1 |
|
3、运行容器
1 |
|
4、配置 mysql
1 |
|
Select
1、简单使用
1 |
|
2、使用 where
1 |
|
3、运算符
- NULL 参与运算结果为 NULL
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
Order
不使用 ORDER BY 时默认排序为数据添加的顺序
使用 ORDER BY 不指定排序规则默认为升序(ASC),指定降序使用 DESC
列别名可以在 ORDER BY 中使用不能在 WHERE 使用
可以指定多个排序列,从前往后进行排序
1 |
|
1 |
|
Limit
实现分页,LIMIT(offset, size)
1 |
|
1 |
|
Join
1 |
|
UNION 返回两个查询的结果集并集,去除重复记录
UNION ALL 返回两个查询的结果集并集,不去重
1 |
|
1 |
|
Func
数值函数:
1 |
|
字符串函数:
1 |
|
日期时间函数:
1 |
|
流程控制处理函数:
1 |
|
加密与解密函数:
1 |
|
MySQL 相关函数:
1 |
|
1 |
|
聚合函数:
1 |
|
Group
GROUP BY 分组,和聚合函数结合使用
可以对多个列进行分组,分组的列必须列出来,不分组的列需要使用聚合函数来使得分组后的数据进行处理
WITH ROLLUP 在分组之后会增加一条记录,计算查询记录总和,不可与 ORDER BY 同时出现
HAVING 分组后过滤,必须在 GROUP BY 后使用
SELECT 格式与执行顺序:
1 |
|
1 |
|
Subquery
子查询要包含在括号内
将子查询放在比较条件的右侧
单行操作符对应单行子查询,多行操作符对应多行子查询
ANY 与子查询某一个值进行比较
ALL 与子查询所有值进行比较
EXISTS 子查询满足条件返回 true
NOT EXISTS 子查询不满足条件,返回 true
1 |
|
DATABASE
创建数据库:
1 |
|
修改数据库:
1 |
|
删除数据库:
1 |
|
TABLE
创建表:
1 |
|
修改表:
1 |
|
1 |
|
RECORD
插入数据:
1 |
|
更新数据:
1 |
|
删除数据:
1 |
|
MySQL8计算列:
1 |
|
1 |
|
Type
整型:
TINYINT(1字节)、SMALLINT(2字节)、MEDIUMINT(3字节)、INT/INTEGER(4字节)、BIGINT(8字节)
1 |
|
浮点型:
FLOAT(4字节)、DOUBLE(8字节)、REAL(默认就是 DOUBLE)
表示精度不精准,不应使用 = 比较浮点型
定点数:
DECIMAL(M,D),M 位有效位,小数点后 D 位。使用字符串存储。
位类型:
BIT(M)
日期时间类型:
YEAR(年)、TIME(时分秒)、DATE(年月日)、DATETIME(年月日时分秒)、TIMESTAMP(年月日时分秒)
DATE:标准格式为:YYYY-MM-DD
TIME:标准格式:D HH-MM-SS
、HH-MM-SS
,D 会转为小时与 HH 相加
DATETIME(8个字节):标准格式:YYYY-MM-DD HH:MM:SS
TIMESTAMP(4字节):标准格式:YYYY-MM-DD HH:MM:SS,存储范围为 “1970-01-01 00:00:01 UTC”到“2038-01-19 03:14:07 UTC”,存储的数据时区不同显示不同。
尽量使用 DATETIME,注册时间等常用于计算的存储使用时间戳
文本字符串类型:
CHAR(M)、VARCHAR(M)、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、ENUM、SET
VARCHAR(20):4.0版本以下指20字节,5.0版本以上指20字符,存储字节为字符串实际长+1,InnoDB 建议使用 VARCHAR
ENUM:season ENUM('春','夏','秋','冬',unknow')
,只能选择一个
SET:s SET ('A', 'B', 'C')
,可多选存储
二进制:
BINARY、VARBINARY、TIBYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
BLOG 和 TEXT 执行大量更新和删除操作时,会产生空洞现象,为提高性能应定期使用 OPTIMIZE TABLE 进行碎片处理。尽量分离到单独的表中,减少主表的碎片。
JSON 类型:
1 |
|
Constraint
实体完整性、域完整性、引用完整性、用户自定义完整性
1 |
|
NOT NULL 非空约束,规定某个字段不能为空
UNIQUE 唯一约束,规定某个字段在整个表中是唯一的
- 定义 UNIQUE 约束时会自动创建一个唯一性索引
- 删除唯一约束,只能通过删除唯一约束来删除
1 |
|
- PRIMARY KEY 主键(非空且唯一)约束,只能有一个主键约束
1 |
|
- AUTO_INCREMENT 自增,一个表只能有一个自增列,必须是主键列、整数类型
1 |
|
- FOREIGN KEY 外键约束,限定表的引用完整性
- 外键必须是主表的主键或唯一约束
- 表可以创建多个外键约束
- 外键有性能开销,推荐应用层解决引用完整性而不是使用外键
1 |
|
- CHECK 检查约束,检查值的范围,5.7 不支持,8 支持
1 |
|
- DEFAULT 默认值约束
View
视图可以看作是一个虚拟表,修改视图数据,基表数据也会修改,视图数据删除,基表不会删除。
视图更新需要视图的行和基表一一对应关系,以下情况不能更新:
- 视图定义时指定
ALGORITHM=TEMPTABLE
,不支持插入和删除操作 - 视图中不包含基表中所有被定义为非空又未指定默认值的列,视图将不支持INSERT操作
- 视图查询语句使用 join,不支持插入和删除操作
- 查询语句使用数学表达式或子查询,不h支持插入和更新哪些列
- 视图列中使用 DISTINCT、聚合函数、GROUP BY、HASVING、UNION 等,不支持插入、更新和删除操作
- 通常视图就是为了方便查询,更新修改数据都是在基表上操作
1 |
|
Procedure&Function
存储过程是一段程序化sql,对底层表进行操作
1 |
|