数据库的查询是数据库使用中比较重要的环节,前面的基础查询比较简单,不做介绍,可自行查阅。本文主要介绍复合查询,并结合用例进行讲解。
本文的用例依据Soctt模式的经典测试表,可以自行下载,也可以自己创建
链接:点这里跳转
自行创建步骤如下:
0、预备工作 0.1 建表 -- 创建 dept 表(部门表) CREATE TABLE dept ( deptno INT PRIMARY KEY, -- 部门编号 dname VARCHAR(14), -- 部门名称 loc VARCHAR(13) -- 部门位置 ); -- 创建 emp 表(员工表) CREATE TABLE emp ( empno INT PRIMARY KEY, -- 员工编号 ename VARCHAR(10), -- 员工姓名 job VARCHAR(9), -- 职位 mgr INT, -- 上级经理编号 hiredate DATE, -- 入职日期 sal DECIMAL(7,2), -- 工资 comm DECIMAL(7,2), -- 奖金 deptno INT, -- 部门编号 FOREIGN KEY (deptno) REFERENCES dept(deptno) ); -- 创建 salgrade 表(工资等级表) CREATE TABLE salgrade ( grade INT PRIMARY KEY, -- 工资等级 losal DECIMAL(7,2), -- 最低工资 hisal DECIMAL(7,2) -- 最高工资 ); 1234567891011121314151617181920212223242526AI写代码 0.2 插入测试数据 -- 插入 dept 表数据 INSERT INTO dept (deptno, dname, loc) VALUES (10, 'ACCOUNTING', 'NEW YORK'), (20, 'RESEARCH', 'DALLAS'), (30, 'SALES', 'CHICAGO'), (40, 'OPERATIONS', 'BOSTON'); -- 插入 emp 表数据 INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800.00, NULL, 20), (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600.00, 300.00, 30), (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250.00, 500.00, 30), (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975.00, NULL, 20), (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250.00, 1400.00, 30), (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850.00, NULL, 30), (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450.00, NULL, 10), (7788, 'SCOTT', 'ANALYST', 7566, '1982-12-09', 3000.00, NULL, 20), (7839, 'KING', 'PRESIDENT', NULL, '1981-11-17', 5000.00, NULL, 10), (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500.00, 0.00, 30), (7876, 'ADAMS', 'CLERK', 7788, '1983-01-12', 1100.00, NULL, 20), (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950.00, NULL, 30), (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000.00, NULL, 20), (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300.00, NULL, 10); -- 插入 salgrade 表数据 INSERT INTO salgrade (grade, losal, hisal) VALUES (1, 700, 1200), (2, 1201, 1400), (3, 1401, 2000), (4, 2001, 3000), (5, 3001, 9999); 12345678910111213141516171819202122232425262728293031AI写代码 创建好以后,如果表的内容和下图一样,那基本就没问题了
...