SQL
1. SQL 简介
- SQL(Structured Query Language)结构化查询语言,用于操作关系型数据库
- 分类:
- DDL(Data Definition Language)数据定义语言:建库建表、改表结构
- DML(Data Manipulation Language)数据操作语言:增删改数据
- DQL(Data Query Language)数据查询语言:查询数据
- DCL(Data Control Language)数据控制语言:权限管理
2. DDL 数据定义
2.1 数据库操作
CREATE DATABASE/DROP DATABASE/USE
2.2 表操作
CREATE TABLE/DROP TABLE/ALTER TABLE(添加/删除/修改列)
2.3 数据类型
- 数值型:
INT、DECIMAL、FLOAT - 字符串:
VARCHAR、TEXT、CHAR - 日期:
DATE、DATETIME、TIMESTAMP - 布尔:
BOOLEAN
2.4 约束
PRIMARY KEY主键:唯一且非空,一张表只能有一个FOREIGN KEY外键:关联其他表UNIQUE唯一NOT NULL非空DEFAULT默认值CHECK检查约束AUTO_INCREMENT自增
3. DML 数据操作
INSERT INTO:插入数据(单条 / 多条)UPDATE ... SET:更新数据,注意加WHEREDELETE FROM:删除数据,注意加WHERETRUNCATE与DELETE的区别
4. DQL 数据查询(重点)
4.1 基础查询
SELECT查询指定列、DISTINCT去重、AS别名
4.2 条件过滤 WHERE
- 比较运算符:
= > < >= <= != AND/OR/NOT、IN、BETWEEN、LIKE(模糊查询)、IS NULL
4.3 排序与分页
ORDER BY ... ASC/DESC,多字段排序LIMIT offset, count分页
4.4 聚合函数
COUNT/SUM/AVG/MAX/MINCOUNT(*)与COUNT(column)区别
4.5 分组 GROUP BY
GROUP BY分组HAVING对分组结果过滤,与WHERE的区别
4.6 连接 JOIN
INNER JOIN内连接:只返回匹配的行LEFT JOIN左连接:左表全部 + 右表匹配RIGHT JOIN右连接FULL JOIN/ 笛卡尔积
4.7 子查询
WHERE子查询、FROM子查询、EXISTS
4.8 合并
UNION去重合并、UNION ALL不去重
4.9 常用函数
- 字符串函数:
CONCAT、SUBSTRING、LENGTH... - 日期函数:
NOW、DATE_FORMAT... - 条件函数:
IF、CASE WHEN
5. 索引
- 什么是索引、为什么快、优缺点
- 普通索引 / 唯一索引 / 联合索引
- 联合索引最左前缀原则
- 什么时候建索引
6. 事务
- ACID:原子性、一致性、隔离性、持久性
- 隔离级别:读未提交、读已提交、可重复读、串行化
- 并发问题:脏读、不可重复读、幻读
7. 面试题 / 实战
- 常见面试题整理
- 待补充