三、函数
3.1 字符串函数
3.2 数值函数
3.3 日期函数
3.4 流程函数
四、约束
五、多表查询
5.1 多表查询的概述
5.2 连接查询 - 内连接
- 内连接查询语法:
隐式内连接
:select 字段列表 from 表1,表2 where 条件....;
显式内连接
:select 字段列表 from 表1 [ inner ] join 表2 on 连接条件....;
内连接查询的是两张表交集的部分
5.3 连接查询 - 外连接
-
外连接查询语法:
左外连接
:
select 字段列表 from 表1 left [outer] join 表2 on 条件...;
相当于查询表1(左表)的所有数据 并且包含 表1 和 表2 交集部分的数据
右外连接
:
select 字段列表 from 表1 right [outer] join 表2 on 条件...;
相当于查询表1(右表)的所有数据 并且包含 表1 和 表2 交集部分的数据
5.4 连接查询 - 自连接
- 自连接查询语法:
select 字段列表 from 表1 别名1,表2 别名2 where 条件...;
自连接查询,既可以使用内连接的语法,也可以使用外连接的语法。
在使用自链接时,所对应的表,一定要起别名,否则后续会引起报错。
5.5 连接查询 - 联合查询(union、union all)
5.6 子查询
-
标量子查询
:子查询的结果为一行一列(单个值),如数字、字符串、日期等。常用的操作符有:= != > >= < <=
-
列子查询
:子查询返回的结果为一列(可以是多行)
-
行子查询
:子查询返回的结果是一行(可以是多列)常用的操作符有:=、!=、in、not in
-
表子查询
:子查询返回的结果是多行多列常用的操作符有:in
5.7 练习
所涉及到的表结构在文章最下方
5.8 总结
六、事务
6.1 事务简介
6.2 事务操作
6.3 事务四大特性(ACID
)
6.4 并发事务问题
6.5 事务隔离级别
bash select @@transaction_isolation; set session transaction isolation level read uncommitted ;
6.6 总结
CREATE TABLE `employee` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(50) DEFAULT NULL,`gender` varchar(10) DEFAULT NULL,`age` int DEFAULT NULL,`dept_id` int DEFAULT NULL,`salary` decimal(10,2) DEFAULT NULL,`hire_date` date DEFAULT NULL,`position` varchar(50) DEFAULT NULL,`phone` varchar(20) DEFAULT NULL,`email` varchar(100) DEFAULT NULL,PRIMARY KEY (`id`),KEY `dept_id` (`dept_id`),CONSTRAINT `employee_ibfk_1` FOREIGN KEY (`dept_id`) REFERENCES `department` (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ciCREATE TABLE `department` (`dept_id` int NOT NULL AUTO_INCREMENT,`dept_name` varchar(50) NOT NULL,PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ciCREATE TABLE `course` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(10) DEFAULT NULL COMMENT '课程名称',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ciCREATE TABLE `salary_grade` (`grade` int DEFAULT NULL,`losal` int DEFAULT NULL,`hisal` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='薪资等级表'CREATE TABLE `student` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(10) DEFAULT NULL,`no` varchar(10) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ciCREATE TABLE `student_course` (`id` int NOT NULL AUTO_INCREMENT,`student_id` int DEFAULT NULL,`course_id` int DEFAULT NULL,PRIMARY KEY (`id`),KEY `student_id` (`student_id`),KEY `course_id` (`course_id`),CONSTRAINT `student_course_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student` (`id`),CONSTRAINT `student_course_ibfk_2` FOREIGN KEY (`course_id`) REFERENCES `course` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci