数据库的高级查询
- 1. 提要
- 2. 数据统计
-
- 2.1 聚合函数
- 2.2 分组查询_group by
- 2.3 having子句_筛选时想使用聚合函数时
- 3. 多表连接查询
-
- 3.1 内连接_inner join
- 3.2 外连接(左外连接)_left join
- 3.3 右外连接_right join
- 3.4 练习
- 3.5 小结
- 4. 子查询
-
- 4.1 from子查询
- 4.2 单行子查询与多行子查询
- 5. SQL测试环境
1. 提要
![在这里插入图片描述](http://img.e-com-net.com/image/info8/d05be0d4a5ce45e5b679fc4c144f3f90.jpg)
![7.4 数据库的高级查询(❤❤)_第1张图片](http://img.e-com-net.com/image/info8/89b2c0e5f7064f149fc9fb97cc752d9d.jpg)
![7.4 数据库的高级查询(❤❤)_第2张图片](http://img.e-com-net.com/image/info8/fd3dd84ec6ec4dd38413025bcab51fb0.jpg)
2. 数据统计
2.1 聚合函数
![7.4 数据库的高级查询(❤❤)_第3张图片](http://img.e-com-net.com/image/info8/89ab00de2d7b4f27b1042ce3d9f48977.jpg)
![7.4 数据库的高级查询(❤❤)_第4张图片](http://img.e-com-net.com/image/info8/fde26e83b79e4491af95d32854a292f5.jpg)
![7.4 数据库的高级查询(❤❤)_第5张图片](http://img.e-com-net.com/image/info8/7c6714a762c642378ba7c9fccc16f5fa.jpg)
![7.4 数据库的高级查询(❤❤)_第6张图片](http://img.e-com-net.com/image/info8/f716637ca39648e4ac8405422196f751.jpg)
![7.4 数据库的高级查询(❤❤)_第7张图片](http://img.e-com-net.com/image/info8/4d4715f9a0df4767b2197289a038a752.jpg)
![7.4 数据库的高级查询(❤❤)_第8张图片](http://img.e-com-net.com/image/info8/ebef5b71426d4bc7b9f35da3f0d1f682.jpg)
2.2 分组查询_group by
![7.4 数据库的高级查询(❤❤)_第9张图片](http://img.e-com-net.com/image/info8/b56701c9db5d485eab5be10374bc500a.jpg)
![7.4 数据库的高级查询(❤❤)_第10张图片](http://img.e-com-net.com/image/info8/7e2da5e17e7d4a799a0ef3b81f151ea3.jpg)
![7.4 数据库的高级查询(❤❤)_第11张图片](http://img.e-com-net.com/image/info8/77125876294942918b72642bf59dca55.jpg)
![7.4 数据库的高级查询(❤❤)_第12张图片](http://img.e-com-net.com/image/info8/b44312a780814515b0d3d4038b373b03.jpg)
![7.4 数据库的高级查询(❤❤)_第13张图片](http://img.e-com-net.com/image/info8/0d9b0b66db6f4e56a7ab2a66922458d8.jpg)
![7.4 数据库的高级查询(❤❤)_第14张图片](http://img.e-com-net.com/image/info8/d8941e74498a444c82f4b19afb63bef4.jpg)
![7.4 数据库的高级查询(❤❤)_第15张图片](http://img.e-com-net.com/image/info8/1837bf7cedd348e2907a4927af307125.jpg)
2.3 having子句_筛选时想使用聚合函数时
![在这里插入图片描述](http://img.e-com-net.com/image/info8/7397ea919356451c8a6a742b713a02ae.jpg)
![7.4 数据库的高级查询(❤❤)_第16张图片](http://img.e-com-net.com/image/info8/74e324eb2b1346f2867b07e6c7be0efa.jpg)
![7.4 数据库的高级查询(❤❤)_第17张图片](http://img.e-com-net.com/image/info8/d765d302e0ea41d6a1a16c78e3497cfe.jpg)
![7.4 数据库的高级查询(❤❤)_第18张图片](http://img.e-com-net.com/image/info8/3a680ba990754d0694cdab6ed5978ce6.jpg)
3. 多表连接查询
![7.4 数据库的高级查询(❤❤)_第19张图片](http://img.e-com-net.com/image/info8/bf5b2243b45a4be087c2a73a3f3e545b.jpg)
![7.4 数据库的高级查询(❤❤)_第20张图片](http://img.e-com-net.com/image/info8/8d231977423f49eca285ad9a744cfb43.jpg)
![7.4 数据库的高级查询(❤❤)_第21张图片](http://img.e-com-net.com/image/info8/37d29402e24e4df8a478534e87eb110a.jpg)
3.1 内连接_inner join
![7.4 数据库的高级查询(❤❤)_第22张图片](http://img.e-com-net.com/image/info8/40595722a19c4df8b51d6418938e1e91.jpg)
![7.4 数据库的高级查询(❤❤)_第23张图片](http://img.e-com-net.com/image/info8/20d3af3635a144aaa3de4b01c811ee02.jpg)
![7.4 数据库的高级查询(❤❤)_第24张图片](http://img.e-com-net.com/image/info8/2a47d7ec53a342b29b45fbe8dcddc644.jpg)
**练习: **
![7.4 数据库的高级查询(❤❤)_第25张图片](http://img.e-com-net.com/image/info8/4d1179b12b9145fea035db53fda04063.jpg)
![7.4 数据库的高级查询(❤❤)_第26张图片](http://img.e-com-net.com/image/info8/d558b2ddf0584273a6bca26bb9f281b5.jpg)
3.2 外连接(左外连接)_left join
![7.4 数据库的高级查询(❤❤)_第27张图片](http://img.e-com-net.com/image/info8/eb49c5cc21364b1cae6f182c0d0360ee.jpg)
![7.4 数据库的高级查询(❤❤)_第28张图片](http://img.e-com-net.com/image/info8/d5a048c3ec2c4999b07e78662feddce7.jpg)
3.3 右外连接_right join
![7.4 数据库的高级查询(❤❤)_第29张图片](http://img.e-com-net.com/image/info8/e260bbe9d4014c8c9c75a033a764ec48.jpg)
3.4 练习
![7.4 数据库的高级查询(❤❤)_第30张图片](http://img.e-com-net.com/image/info8/16ecab36d62a48f78fd92d85ff9167dc.jpg)
![7.4 数据库的高级查询(❤❤)_第31张图片](http://img.e-com-net.com/image/info8/7d6bd377f1184f4cb5e33ec6030bff8d.jpg)
![7.4 数据库的高级查询(❤❤)_第32张图片](http://img.e-com-net.com/image/info8/2a755e493a6e4f569a85fb77c4fce7b3.jpg)
3.5 小结
![7.4 数据库的高级查询(❤❤)_第33张图片](http://img.e-com-net.com/image/info8/144b23da1a524393ac88c0799abf3cdc.jpg)
![7.4 数据库的高级查询(❤❤)_第34张图片](http://img.e-com-net.com/image/info8/a60ad0b35eb24cd38a5d4f298c3a0d79.jpg)
![7.4 数据库的高级查询(❤❤)_第35张图片](http://img.e-com-net.com/image/info8/92ec1d58215c459abe876062a405f597.jpg)
![7.4 数据库的高级查询(❤❤)_第36张图片](http://img.e-com-net.com/image/info8/3adc611af79e461eab2ad1b31fe2d6cd.jpg)
4. 子查询
![7.4 数据库的高级查询(❤❤)_第37张图片](http://img.e-com-net.com/image/info8/7af9caeb0d8846498ba5417276c76be2.jpg)
![7.4 数据库的高级查询(❤❤)_第38张图片](http://img.e-com-net.com/image/info8/99e48cb5c963407e8e483987fddb3e82.jpg)
4.1 from子查询
![7.4 数据库的高级查询(❤❤)_第39张图片](http://img.e-com-net.com/image/info8/2daec95597224905b9d4b5b9adfb7717.jpg)
4.2 单行子查询与多行子查询
![7.4 数据库的高级查询(❤❤)_第40张图片](http://img.e-com-net.com/image/info8/c10817ffde124a31998d8ecd87b93bfe.jpg)
![7.4 数据库的高级查询(❤❤)_第41张图片](http://img.e-com-net.com/image/info8/e7af8010bd884406968c447458653005.jpg)
![7.4 数据库的高级查询(❤❤)_第42张图片](http://img.e-com-net.com/image/info8/09c8489257ce456ca117a14e9ef97403.jpg)
in,all,any,exists使用
![7.4 数据库的高级查询(❤❤)_第43张图片](http://img.e-com-net.com/image/info8/3aa69fda740e4573915ba8ca2b30ff38.jpg)
![7.4 数据库的高级查询(❤❤)_第44张图片](http://img.e-com-net.com/image/info8/dc8c8c555da0449ca33cbb4a1a421432.jpg)
5. SQL测试环境
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `t_dept`;
CREATE TABLE `t_dept` (
`deptno` int(0) NOT NULL COMMENT '部门编号',
`dname` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '部门名称',
`loc` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '部门标志',
PRIMARY KEY (`deptno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic;
INSERT INTO `t_dept` VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO `t_dept` VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO `t_dept` VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO `t_dept` VALUES (40, 'OPERATIONS', 'BOSTON');
DROP TABLE IF EXISTS `t_emp`;
CREATE TABLE `t_emp` (
`empno` int(0) NOT NULL COMMENT '员工ID',
`ename` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '姓名',
`job` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '职位',
`mgr` int(0) NULL DEFAULT NULL COMMENT '领导ID',
`hiredate` date NULL DEFAULT NULL COMMENT '入职日期',
`sal` decimal(10, 2) NULL DEFAULT NULL COMMENT '基本工资',
`comm` decimal(10, 2) NULL DEFAULT NULL COMMENT '绩效',
`deptno` int(0) NULL DEFAULT NULL COMMENT '部门编号',
PRIMARY KEY (`empno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '员工表' ROW_FORMAT = Dynamic;
INSERT INTO `t_emp` VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, NULL, 20);
INSERT INTO `t_emp` VALUES (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600.00, 300.00, 30);
INSERT INTO `t_emp` VALUES (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250.00, 500.00, 30);
INSERT INTO `t_emp` VALUES (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975.00, NULL, 20);
INSERT INTO `t_emp` VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250.00, 1400.00, 30);
INSERT INTO `t_emp` VALUES (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850.00, NULL, 30);
INSERT INTO `t_emp` VALUES (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450.00, NULL, 10);
INSERT INTO `t_emp` VALUES (7788, 'SCOTT', 'ANALYST', 7566, '1982-12-09', 3000.00, NULL, 20);
INSERT INTO `t_emp` VALUES (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000.00, NULL, 10);
INSERT INTO `t_emp` VALUES (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500.00, 0.00, 30);
INSERT INTO `t_emp` VALUES (7876, 'ADAMS', 'CLERK', 7788, '1983-01-12', 1100.00, NULL, 20);
INSERT INTO `t_emp` VALUES (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950.00, NULL, 30);
INSERT INTO `t_emp` VALUES (7902, '田曦薇', 'ANALYST', 7566, '1981-12-03', 3000.00, NULL, 20);
INSERT INTO `t_emp` VALUES (7934, '与海', 'CLERK', 7782, '1982-01-23', 1300.00, NULL, NULL);
DROP TABLE IF EXISTS `t_salgrade`;
CREATE TABLE `t_salgrade` (
`grade` int(0) NOT NULL COMMENT '等级',
`losal` decimal(10, 2) NULL DEFAULT NULL COMMENT '下限',
`hisal` decimal(10, 2) NULL DEFAULT NULL COMMENT '上限',
PRIMARY KEY (`grade`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '工资等级表' ROW_FORMAT = Dynamic;
INSERT INTO `t_salgrade` VALUES (1, 700.00, 1200.00);
INSERT INTO `t_salgrade` VALUES (2, 1201.00, 1400.00);
INSERT INTO `t_salgrade` VALUES (3, 1401.00, 2000.00);
INSERT INTO `t_salgrade` VALUES (4, 2001.00, 3000.00);
INSERT INTO `t_salgrade` VALUES (5, 3001.00, 9999.00);
SET FOREIGN_KEY_CHECKS = 1;