三、函数
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_ci
CREATE 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_ci
CREATE 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_ci
CREATE 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_ci
CREATE 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