首页 > 数据库技术 > 详细

MySQL之子查询(DQL)

时间:2020-07-23 15:33:48      阅读:75      评论:0      收藏:0      [点我收藏+]

子查询

介绍:

  一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询。在外面的查询语句,称为主查询或外查询。

特点:

  1.子查询都放在小括号内。

  2.子查询可以放在from后面、select后面、where后面、having后面,但一般放在条件的右侧。

  3.子查询优先于主查询执行,主查询使用了子查询的执行结果。

  4.单行操作符对应单行子查询,多行操作符对应多行子查询。

分类:

  按子查询出现的位置:

    select后面:仅仅支持标量子查询

    from后面:支持表子查询

    where或having后面:标量子查询(单行)、列子查询(多行)、行子查询

    exists后面(相关子查询):表子查询

  按结果集的行列数不同:

    标量子查询(结果集只有一行一列)

    列子查询(结果集只有一列多行)

    行子查询(结果集有一行多列)

    表子查询(结果集一般为多行多列)

单行子查询

介绍:

  结果集只有一行。

  一般搭配单行操作符使用:

  技术分享图片

执行单行子查询:

示例:返回job_id与130号员工相同,salary比140号员工多的员工姓名、job_id和工资

SELECT last_name,job_id,salary FROM employees WHERE job_id = (
SELECT job_id FROM employees WHERE employee_id = 130
) AND salary > (
SELECT salary FROM employees WHERE employee_id = 140
);

在子查询中使用组函数:

示例:返回公司工资最少的员工的last_name、job_id和salary

SELECT last_name,job_id,salary FROM employees WHERE salary =
(SELECT MIN(salary) FROM employees);

子查询中的HAVING子句:

  首先执行子查询。

  向主查询中的HAVING子句返回结果。

示例:查询最低工资大于50号部门最低工资的部门id和其最低工资

SELECT MIN(salary),department_id FROM employees GROUP BY department_id
HAVING MIN(salary) > (SELECT MIN(salary) FROM employees WHERE department_id = 50);

非法使用子查询:

#多行子查询使用单行比较符
SELECT employee_id,last_name FROM employees WHERE salary = (SELECT MIN(salary) FROM employees GROUP BY department_id);

子查询中的空值问题:

#子查询不返回任何行
SELECT last_name, job_id FROM employees WHERE job_id = (SELECT job_id FROM employees WHERE last_name = Haas);

多行子查询

介绍:

  结果集返回多行。

  使用多行比较操作符:

  技术分享图片

使用in操作符:

示例:返回location_id是1400或1700的部门中的所有员工姓名

SELECT last_name FROM employees
WHERE department_id <> ALL
(SELECT DISTINCT department_id FROM departments WHERE location_id IN (1400,1700));

在多行子查询中使用ANY操作符:

示例:返回其它部门中比job_idIT_PROG部门任一工资低的员工的员工号、姓名、job_id以及salary

SELECT employee_id,last_name,job_id,salary FROM employees
WHERE salary <ANY
(SELECT salary FROM employees WHERE job_id = IT_PROG)
AND job_id <> IT_PROG;

在多行子查询中使用ALL操作符:

示例:返回其它部门中比job_idIT_PROG部门所有工资都低的员工的员工号、姓名、job_id以及salary

SELECT employee_id,last_name,job_id,salary FROM employees 
WHERE salary < ALL
(SELECT salary FROM employees WHERE job_id = IT_PROG)
AND job_id <> IT_PROG;

子查询中的空值问题:

SELECT emp.last_name FROM employees emp WHERE emp.employee_id NOT IN
(SELECT mgr.manager_id FROM employees mgr);

案例讲解

#一.where或having后面
/*
 * 1.标量子查询(单行子查询)
 * 2.列子查询(多行子查询)
 * 3.行子查询(多列多行)
 * 
 * 特点:
 * ①子查询放在小括号内
 * ②子查询一般放在条件的右侧
 * ③标量子查询,一般搭配着单行操作符使用 > < >= <= = <>
 *  列子查询,一般搭配着多行操作符使用 in、any/some、all
 * ④子查询的执行优先于主查询执行,主查询的条件用到了子查询的结果
 */
#1.标量子查询
#案例1:谁的工资比Sciarra高?
#①查询Sciarra的工资
SELECT salary FROM employees WHERE last_name = Sciarra;
#②查询员工的信息,满足salary>①结果
SELECT * FROM employees WHERE salary > (SELECT salary FROM employees WHERE last_name = Sciarra);


#案例2:返回job_id与130号员工相同,salary比140号员工多的员工姓名、job_id和工资
#①查询130号员工的job_id
SELECT job_id FROM employees WHERE employee_id = 130;
#②查询140号员工的salary
SELECT salary FROM employees WHERE employee_id = 140;
#③查询员工的姓名,job_id和工资,要求job_id=①并且salary>SELECT last_name,job_id,salary FROM employees
WHERE job_id = (
SELECT job_id FROM employees WHERE employee_id = 130
) AND salary>(
SELECT salary FROM employees WHERE employee_id = 140
);


#案例3:返回公司工资最少的员工的last_name、job_id和salary
#①查询公司的最低工资
SELECT MIN(salary) FROM employees;
#②查询last_name、job_id和salary,要求salary=SELECT last_name,job_id,salary FROM employees WHERE salary = (SELECT MIN(salary) FROM employees);


#案例4:查询最低工资大于50号部门最低工资的部门id和其最低工资
#①查询50号部门的最低工资
SELECT MIN(salary) FROM employees WHERE department_id = 50;
#②查询每个部门的最低工资
SELECT MIN(salary),department_id FROM employees GROUP BY department_id;
#③在②基础上筛选,满足min(salary)>SELECT MIN(salary),department_id FROM employees GROUP BY department_id
HAVING MIN(salary) > (SELECT  MIN(salary) FROM employees WHERE department_id = 50);


#非法使用标量子查询
SELECT MIN(salary),department_id FROM employees GROUP BY department_id
HAVING MIN(salary)>(SELECT  salary FROM employees WHERE department_id = 70);


#2.列子查询(多行子查询)
#案例1:返回location_id是1400或1700的部门中的所有员工姓名
#①查询location_id是1400或1700的部门编号
SELECT DISTINCT department_id FROM departments WHERE location_id IN(1400,1700);
#②查询员工姓名,要求部门号是①列表中的某一个
SELECT last_name FROM employees WHERE department_id <> ALL (SELECT DISTINCT department_id FROM departments WHERE location_id IN(1400,1700));


#案例2:返回其它工种中比job_id为IT_PROG工种任一工资低的员工的员工号、姓名、job_id以及salary
#①查询job_id为IT_PROG部门任一工资
SELECT DISTINCT salary FROM employees WHERE job_id = IT_PROG;
#②查询员工号、姓名、job_id以及salary,salary<(①)的任意一个
SELECT last_name,employee_id,job_id,salary FROM employees WHERE salary < ANY (
SELECT DISTINCT salary FROM employees WHERE job_id = IT_PROG) 
AND job_id<>IT_PROG;
#或
SELECT last_name,employee_id,job_id,salary FROM employees WHERE salary < (
SELECT MAX(salary) FROM employees WHERE job_id = IT_PROG
) AND job_id<>IT_PROG;


#案例3:返回其它部门中比job_id为IT_PROG部门所有工资都低的员工的员工号、姓名、job_id以及salary
SELECT last_name,employee_id,job_id,salary FROM employees
WHERE salary < ALL (
SELECT DISTINCT salary FROM employees WHERE job_id = IT_PROG
) AND job_id<>IT_PROG;
#或
SELECT last_name,employee_id,job_id,salary FROM employees
WHERE salary<(
SELECT MIN( salary) FROM employees WHERE job_id = IT_PROG
) AND job_id<>IT_PROG;


#3.行子查询(结果集一行多列或多行多列)
#案例:查询员工编号最小并且工资最高的员工信息
SELECT * FROM employees WHERE (employee_id,salary)=(
SELECT MIN(employee_id),MAX(salary) FROM employees
);
#①查询最小的员工编号
SELECT MIN(employee_id) FROM employees;
#②查询最高工资
SELECT MAX(salary) FROM employees;
#③查询员工信息
SELECT * FROM employees WHERE employee_id = (
SELECT MIN(employee_id) FROM employees
)AND salary=(
SELECT MAX(salary) FROM employees
);


#二.select后面
/*
 * 仅仅支持标量子查询
*/
#案例1:查询每个部门的员工个数
SELECT d.*,(SELECT COUNT(*) FROM employees e WHERE e.department_id = d.department_id) 个数 FROM departments d;


#案例2:查询员工号=102的部门名
SELECT department_name,e.department_id FROM departments d 
INNER JOIN employees e ON d.department_id=e.department_id
WHERE e.employee_id=102;


#三.from后面
/*
 * 将子查询结果充当一张表,要求必须起别名
 */
#案例:查询每个部门的平均工资的工资等级
#①查询每个部门的平均工资
SELECT AVG(salary),department_id FROM employees GROUP BY department_id;

SELECT * FROM jobs;

#②连接①的结果集和job_grades表,筛选条件平均工资 between lowest_sal and highest_sal
SELECT ag_dep.*,g.job_title
FROM (
SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id
) ag_dep
INNER JOIN jobs g ON ag_dep.ag BETWEEN min_salary AND max_salary;


#四.exists后面(相关子查询)
/*
 * 语法:
 * exists(完整的查询语句)
 * 结果:1或0
 */
SELECT EXISTS(SELECT employee_id FROM employees WHERE salary=300000);

#案例1:查询有员工的部门名
#in
SELECT department_name FROM departments d
WHERE d.department_id IN(SELECT department_id FROM employees);
#exists
SELECT department_name FROM departments d
WHERE EXISTS(
SELECT * FROM employees e WHERE d.department_id=e.department_id
);


#案例2:查询没有女朋友的男神信息
#in
SELECT bo.* FROM boys bo WHERE bo.id NOT IN(SELECT boyfriend_id FROM beauty);
#exists
SELECT bo.* FROM boys bo WHERE NOT EXISTS(SELECT boyfriend_id FROM beauty b WHERE bo.id=b.boyfriend_id);

#============================================================================
#1.查询和Zlotkey相同部门的员工姓名和工资
#①查询Zlotkey的部门
SELECT department_id FROM employees WHERE last_name = K_ing;
#②查询部门号=①的姓名和工资
SELECT last_name,salary FROM employees
WHERE department_id = (SELECT department_id FROM employees WHERE last_name = K_ing);


#2.查询工资比公司平均工资高的员工的员工号,姓名和工资
#①查询平均工资
SELECT AVG(salary) FROM employees;
#②查询工资>①的员工号,姓名和工资
SELECT last_name,employee_id,salary FROM employees WHERE salary > (
SELECT AVG(salary) FROM employees
);


#3.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资
#①查询各部门的平均工资
SELECT AVG(salary),department_id FROM employees GROUP BY department_id;
#②连接①结果集和employees表,进行筛选
SELECT employee_id,last_name,salary,e.department_id FROM employees e
INNER JOIN (SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id
) ag_dep ON e.department_id = ag_dep.department_id WHERE salary>ag_dep.ag;


#4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名
#①查询姓名中包含字母u的员工的部门
SELECT  DISTINCT department_id FROM employees WHERE last_name LIKE %u%;
#②查询部门号=①中的任意一个的员工号和姓名
SELECT last_name,employee_id FROM employees
WHERE department_id IN(
SELECT  DISTINCT department_id FROM employees WHERE last_name LIKE %u%
);


#5.查询在部门的location_id为1700的部门工作的员工的员工号
#①查询location_id为1700的部门
SELECT DISTINCT department_id FROM departments WHERE location_id  = 1700;
#②查询部门号=①中的任意一个的员工号
SELECT employee_id FROM employees
WHERE department_id =ANY(
SELECT DISTINCT department_id FROM departments WHERE location_id  = 1700
);


#6.查询管理者是King的员工姓名和工资
#①查询姓名为king的员工编号
SELECT employee_id FROM employees WHERE last_name  = K_ing;
#②查询哪个员工的manager_id =SELECT last_name,salary FROM employees
WHERE manager_id IN(
SELECT employee_id FROM employees WHERE last_name  = K_ing
);


#7.查询工资最高的员工的姓名,要求first_name和last_name显示为一列,列名为姓.名
#①查询最高工资
SELECT MAX(salary) FROM employees;
#②查询工资=①的姓.名
SELECT CONCAT(first_name,last_name) "姓.名" FROM employees
WHERE salary=(SELECT MAX(salary) FROM employees);
#======================================================================
#1.查询工资最低的员工信息:last_name, salary
#①查询最低的工资
SELECT MIN(salary) FROM employees;
#②查询last_name,salary,要求salary=SELECT last_name,salary FROM employees WHERE salary=(SELECT MIN(salary) FROM employees);


#2.查询平均工资最低的部门信息
#方式一:
#①各部门的平均工资
SELECT AVG(salary),department_id FROM employees GROUP BY department_id;
#②查询①结果上的最低平均工资
SELECT MIN(ag) FROM (
SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id
) ag_dep;
#③查询哪个部门的平均工资=SELECT AVG(salary),department_id FROM employees GROUP BY department_id
HAVING AVG(salary)=(
SELECT MIN(ag) FROM (SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id) ag_dep);
#④查询部门信息
SELECT d.* FROM departments d WHERE d.department_id=(
SELECT department_id FROM employees GROUP BY department_id HAVING AVG(salary) = (
SELECT MIN(ag) FROM (SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id) ag_dep)
);


#方式二:
#①各部门的平均工资
SELECT AVG(salary),department_id FROM employees GROUP BY department_id;
#②求出最低平均工资的部门编号
SELECT department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) LIMIT 1;
#③查询部门信息
SELECT * FROM departments WHERE department_id=(
SELECT department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) LIMIT 1
);


#3.查询平均工资最低的部门信息和该部门的平均工资
#①各部门的平均工资
SELECT AVG(salary),department_id FROM employees GROUP BY department_id;
#②求出最低平均工资的部门编号
SELECT AVG(salary),department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) LIMIT 1;
#③查询部门信息
SELECT d.*,ag FROM departments d
JOIN (SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) LIMIT 1
) ag_dep ON d.department_id=ag_dep.department_id;


#4.查询平均工资最高的job信息
#①查询最高的job的平均工资
SELECT AVG(salary),job_id FROM employees GROUP BY job_id ORDER BY AVG(salary) DESC LIMIT 1;
#②查询job信息
SELECT * FROM jobs WHERE job_id=(
SELECT job_id FROM employees GROUP BY job_id ORDER BY AVG(salary) DESC LIMIT 1);


#5.查询平均工资高于公司平均工资的部门有哪些?
#①查询平均工资
SELECT AVG(salary) FROM employees;
#②查询每个部门的平均工资
SELECT AVG(salary),department_id FROM employees GROUP BY department_id;
#③筛选②结果集,满足平均工资>SELECT AVG(salary),department_id FROM employees GROUP BY department_id
HAVING AVG(salary)>(SELECT AVG(salary) FROM employees);


#6.查询出公司中所有manager的详细信息.
#①查询所有manager的员工编号
SELECT DISTINCT manager_id FROM employees;
#②查询详细信息,满足employee_id=SELECT * FROM employees WHERE employee_id =ANY(SELECT DISTINCT manager_id FROM employees);


#7.各个部门中最高工资中最低的那个部门的、最低工资是多少?
#①查询各部门的最高工资中最低的部门编号
SELECT department_id FROM employees GROUP BY department_id ORDER BY MAX(salary) LIMIT 1;
#②查询①结果的那个部门的最低工资
SELECT MIN(salary) ,department_id FROM employees
WHERE department_id=(SELECT department_id FROM employees GROUP BY department_id ORDER BY MAX(salary) LIMIT 1);


#8.查询平均工资最高的部门的manager的详细信息:last_name,、department_id、email、salary
#①查询平均工资最高的部门编号
SELECT department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) DESC LIMIT 1;
#②将employees和departments连接查询,筛选条件是①
SELECT last_name, d.department_id, email, salary 
FROM employees e INNER JOIN departments d ON d.manager_id = e.employee_id 
WHERE d.department_id = (SELECT department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) DESC LIMIT 1);

测试数据

#beauty表
CREATE TABLE beauty (
  id int(100) NOT NULL AUTO_INCREMENT,
  name varchar(255) DEFAULT NULL,
  sex varchar(255) DEFAULT NULL,
  boyfriend_id varchar(255) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
#beauty数据
INSERT INTO beauty VALUES (1, 柳岩, , 8);
INSERT INTO beauty VALUES (2, 苍老师, , 9);
INSERT INTO beauty VALUES (3, Angelababy, , 3);
INSERT INTO beauty VALUES (4, 热巴, , 2);
INSERT INTO beauty VALUES (5, 周冬际, , 9);
INSERT INTO beauty VALUES (6, 周芷若, , 1);
INSERT INTO beauty VALUES (7, 岳灵珊, , 9);
INSERT INTO beauty VALUES (8, 小昭, , 1);
INSERT INTO beauty VALUES (9, 双儿, , 9);
INSERT INTO beauty VALUES (10, 王语嫣, , 4);
INSERT INTO beauty VALUES (11, 夏雪, , 9);
INSERT INTO beauty VALUES (12, 赵敏, , 1);

#boys表
CREATE TABLE boys (
  id int(100) NOT NULL AUTO_INCREMENT,
  boyName varchar(255) DEFAULT NULL,
  userCP varchar(255) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
#boys数据
INSERT INTO boys VALUES (1, 张无忌, 100);
INSERT INTO boys VALUES (2, 鹿晗, 800);
INSERT INTO boys VALUES (3, 黄晓明, 50);
INSERT INTO boys VALUES (4, 段誉, 300);
INSERT INTO boys VALUES (5, 展昭, 500);

#departments表
CREATE TABLE departments (
  department_id int(4) NOT NULL AUTO_INCREMENT,
  department_name varchar(3) DEFAULT NULL,
  manager_id int(6) DEFAULT NULL,
  location_id int(4) DEFAULT NULL,
  PRIMARY KEY (department_id),
  KEY loc_id_fk (location_id),
  CONSTRAINT loc_id_fk FOREIGN KEY (location_id) REFERENCES locations (location_id)
) ENGINE=InnoDB AUTO_INCREMENT=271 DEFAULT CHARSET=gb2312;
#departments数据
INSERT INTO departments VALUES (10, Adm, 200, 1700);
INSERT INTO departments VALUES (20, Mar, 201, 1800);
INSERT INTO departments VALUES (30, Pur, 114, 1700);
INSERT INTO departments VALUES (40, Hum, 203, 2400);
INSERT INTO departments VALUES (50, Shi, 121, 1500);
INSERT INTO departments VALUES (60, IT, 103, 1400);
INSERT INTO departments VALUES (70, Pub, 204, 2700);
INSERT INTO departments VALUES (80, Sal, 145, 2500);
INSERT INTO departments VALUES (90, Exe, 100, 1700);
INSERT INTO departments VALUES (100, Fin, 108, 1700);
INSERT INTO departments VALUES (110, Acc, 205, 1700);
INSERT INTO departments VALUES (120, Tre, null, 1700);
INSERT INTO departments VALUES (130, Cor, null, 1700);
INSERT INTO departments VALUES (140, Con, null, 1700);
INSERT INTO departments VALUES (150, Sha, null, 1700);
INSERT INTO departments VALUES (160, Ben, null, 1700);
INSERT INTO departments VALUES (170, Man, null, 1700);
INSERT INTO departments VALUES (180, Con, null, 1700);
INSERT INTO departments VALUES (190, Con, null, 1700);
INSERT INTO departments VALUES (200, Ope, null, 1700);
INSERT INTO departments VALUES (210, IT , null, 1700);
INSERT INTO departments VALUES (220, NOC, null, 1700);
INSERT INTO departments VALUES (230, IT , null, 1700);
INSERT INTO departments VALUES (240, Gov, null, 1700);
INSERT INTO departments VALUES (250, Ret, null, 1700);
INSERT INTO departments VALUES (260, Rec, null, 1700);
INSERT INTO departments VALUES (270, Pay, null, 1700);

#employees表
CREATE TABLE employees (
  employee_id int(6) NOT NULL AUTO_INCREMENT,
  first_name varchar(20) DEFAULT NULL,
  last_name varchar(25) DEFAULT NULL,
  email varchar(25) DEFAULT NULL,
  phone_number varchar(20) DEFAULT NULL,
  job_id varchar(10) DEFAULT NULL,
  salary double(10,2) DEFAULT NULL,
  commission_pct double(4,2) DEFAULT NULL,
  manager_id int(6) DEFAULT NULL,
  department_id int(4) DEFAULT NULL,
  hiredate datetime DEFAULT NULL,
  PRIMARY KEY (employee_id)
) ENGINE=InnoDB AUTO_INCREMENT=207 DEFAULT CHARSET=utf8;
#employees数据
INSERT INTO employees VALUES (100, Steven, K_ing, SKING, 515.123.4567, AD_PRES, 24000.00, null, null, 90, 1992-04-03 00:00:00);
INSERT INTO employees VALUES (101, Neena, Kochhar, NKOCHHAR, 515.123.4568, AD_VP, 17000.00, null, 100, 90, 1992-04-03 00:00:00);
INSERT INTO employees VALUES (102, Lex, De Haan, LDEHAAN, 515.123.4569, AD_VP, 17000.00, null, 100, 90, 1992-04-03 00:00:00);
INSERT INTO employees VALUES (103, Alexander, Hunold, AHUNOLD, 590.423.4567, IT_PROG, 9000.00, null, 102, 60, 1992-04-03 00:00:00);
INSERT INTO employees VALUES (104, Bruce, Ernst, BERNST, 590.423.4568, IT_PROG, 6000.00, null, 103, 60, 1992-04-03 00:00:00);
INSERT INTO employees VALUES (105, David, Austin, DAUSTIN, 590.423.4569, IT_PROG, 4800.00, null, 103, 60, 1998-03-03 00:00:00);
INSERT INTO employees VALUES (106, Valli, Pataballa, VPATABAL, 590.423.4560, IT_PROG, 4800.00, null, 103, 60, 1998-03-03 00:00:00);
INSERT INTO employees VALUES (107, Diana, Lorentz, DLORENTZ, 590.423.5567, IT_PROG, 4200.00, null, 103, 60, 1998-03-03 00:00:00);
INSERT INTO employees VALUES (108, Nancy, Greenberg, NGREENBE, 515.124.4569, FI_MGR, 12000.00, null, 101, 100, 1998-03-03 00:00:00);
INSERT INTO employees VALUES (109, Daniel, Faviet, DFAVIET, 515.124.4169, FI_ACCOUNT, 9000.00, null, 108, 100, 1998-03-03 00:00:00);
INSERT INTO employees VALUES (110, John, Chen, JCHEN, 515.124.4269, FI_ACCOUNT, 8200.00, null, 108, 100, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (111, Ismael, Sciarra, ISCIARRA, 515.124.4369, FI_ACCOUNT, 7700.00, null, 108, 100, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (112, Jose Manuel, Urman, JMURMAN, 515.124.4469, FI_ACCOUNT, 7800.00, null, 108, 100, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (113, Luis, Popp, LPOPP, 515.124.4567, FI_ACCOUNT, 6900.00, null, 108, 100, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (114, Den, Raphaely, DRAPHEAL, 515.127.4561, PU_MAN, 11000.00, null, 100, 30, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (115, Alexander, Khoo, AKHOO, 515.127.4562, PU_CLERK, 3100.00, null, 114, 30, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (116, Shelli, Baida, SBAIDA, 515.127.4563, PU_CLERK, 2900.00, null, 114, 30, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (117, Sigal, Tobias, STOBIAS, 515.127.4564, PU_CLERK, 2800.00, null, 114, 30, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (118, Guy, Himuro, GHIMURO, 515.127.4565, PU_CLERK, 2600.00, null, 114, 30, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (119, Karen, Colmenares, KCOLMENA, 515.127.4566, PU_CLERK, 2500.00, null, 114, 30, 2000-09-09 00:00:00);
INSERT INTO employees VALUES (120, Matthew, Weiss, MWEISS, 650.123.1234, ST_MAN, 8000.00, null, 100, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (121, Adam, Fripp, AFRIPP, 650.123.2234, ST_MAN, 8200.00, null, 100, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (122, Payam, Kaufling, PKAUFLIN, 650.123.3234, ST_MAN, 7900.00, null, 100, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (123, Shanta, Vollman, SVOLLMAN, 650.123.4234, ST_MAN, 6500.00, null, 100, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (124, Kevin, Mourgos, KMOURGOS, 650.123.5234, ST_MAN, 5800.00, null, 100, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (125, Julia, Nayer, JNAYER, 650.124.1214, ST_CLERK, 3200.00, null, 120, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (126, Irene, Mikkilineni, IMIKKILI, 650.124.1224, ST_CLERK, 2700.00, null, 120, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (127, James, Landry, JLANDRY, 650.124.1334, ST_CLERK, 2400.00, null, 120, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (128, Steven, Markle, SMARKLE, 650.124.1434, ST_CLERK, 2200.00, null, 120, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (129, Laura, Bissot, LBISSOT, 650.124.5234, ST_CLERK, 3300.00, null, 121, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (130, Mozhe, Atkinson, MATKINSO, 650.124.6234, ST_CLERK, 2800.00, null, 121, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (131, James, Marlow, JAMRLOW, 650.124.7234, ST_CLERK, 2500.00, null, 121, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (132, TJ, Olson, TJOLSON, 650.124.8234, ST_CLERK, 2100.00, null, 121, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (133, Jason, Mallin, JMALLIN, 650.127.1934, ST_CLERK, 3300.00, null, 122, 50, 2004-02-06 00:00:00);
INSERT INTO employees VALUES (134, Michael, Rogers, MROGERS, 650.127.1834, ST_CLERK, 2900.00, null, 122, 50, 2002-12-23 00:00:00);
INSERT INTO employees VALUES (135, Ki, Gee, KGEE, 650.127.1734, ST_CLERK, 2400.00, null, 122, 50, 2002-12-23 00:00:00);
INSERT INTO employees VALUES (136, Hazel, Philtanker, HPHILTAN, 650.127.1634, ST_CLERK, 2200.00, null, 122, 50, 2002-12-23 00:00:00);
INSERT INTO employees VALUES (137, Renske, Ladwig, RLADWIG, 650.121.1234, ST_CLERK, 3600.00, null, 123, 50, 2002-12-23 00:00:00);
INSERT INTO employees VALUES (138, Stephen, Stiles, SSTILES, 650.121.2034, ST_CLERK, 3200.00, null, 123, 50, 2002-12-23 00:00:00);
INSERT INTO employees VALUES (139, John, Seo, JSEO, 650.121.2019, ST_CLERK, 2700.00, null, 123, 50, 2002-12-23 00:00:00);
INSERT INTO employees VALUES (140, Joshua, Patel, JPATEL, 650.121.1834, ST_CLERK, 2500.00, null, 123, 50, 2002-12-23 00:00:00);
INSERT INTO employees VALUES (171, William, Smith, WSMITH, 011.44.1343.629268, SA_REP, 7400.00, 0.15, 148, 80, 2014-03-05 00:00:00);
INSERT INTO employees VALUES (172, Elizabeth, Bates, EBATES, 011.44.1343.529268, SA_REP, 7300.00, 0.15, 148, 80, 2014-03-05 00:00:00);
INSERT INTO employees VALUES (173, Sundita, Kumar, SKUMAR, 011.44.1343.329268, SA_REP, 6100.00, 0.10, 148, 80, 2014-03-05 00:00:00);
INSERT INTO employees VALUES (201, Michael, Hartstein, MHARTSTE, 515.123.5555, MK_MAN, 13000.00, null, 100, 20, 2016-03-03 00:00:00);
INSERT INTO employees VALUES (202, Pat, Fay, PFAY, 603.123.6666, MK_REP, 6000.00, null, 201, 20, 2016-03-03 00:00:00);
INSERT INTO employees VALUES (203, Susan, Mavris, SMAVRIS, 515.123.7777, HR_REP, 6500.00, null, 101, 40, 2016-03-03 00:00:00);
INSERT INTO employees VALUES (204, Hermann, Baer, HBAER, 515.123.8888, PR_REP, 10000.00, null, 101, 70, 2016-03-03 00:00:00);
INSERT INTO employees VALUES (205, Shelley, Higgins, SHIGGINS, 515.123.8080, AC_MGR, 12000.00, null, 101, 110, 2016-03-03 00:00:00);
INSERT INTO employees VALUES (206, William, Gietz, WGIETZ, 515.123.8181, AC_ACCOUNT, 8300.00, null, 205, 110, 2016-03-03 00:00:00);

#jobs表
CREATE TABLE jobs (
  job_id varchar(10) NOT NULL,
  job_title varchar(35) DEFAULT NULL,
  min_salary int(6) DEFAULT NULL,
  max_salary int(6) DEFAULT NULL,
  PRIMARY KEY (job_id)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
#jobs数据
INSERT INTO jobs VALUES (AC_ACCOUNT, Public Accountant, 4200, 9000);
INSERT INTO jobs VALUES (AC_MGR, Accounting Manager, 8200, 16000);
INSERT INTO jobs VALUES (AD_ASST, Administration Assistant, 3000, 6000);
INSERT INTO jobs VALUES (AD_PRES, President, 20000, 40000);
INSERT INTO jobs VALUES (AD_VP, Administration Vice President, 15000, 30000);
INSERT INTO jobs VALUES (FI_ACCOUNT, Accountant, 4200, 9000);
INSERT INTO jobs VALUES (FI_MGR, Finance Manager, 8200, 16000);
INSERT INTO jobs VALUES (HR_REP, Human Resources Representative, 4000, 9000);
INSERT INTO jobs VALUES (IT_PROG, Programmer, 4000, 10000);
INSERT INTO jobs VALUES (MK_MAN, Marketing Manager, 9000, 15000);
INSERT INTO jobs VALUES (MK_REP, Marketing Representative, 4000, 9000);
INSERT INTO jobs VALUES (PR_REP, Public Relations Representative, 4500, 10500);
INSERT INTO jobs VALUES (PU_CLERK, Purchasing Clerk, 2500, 5500);
INSERT INTO jobs VALUES (PU_MAN, Purchasing Manager, 8000, 15000);
INSERT INTO jobs VALUES (SA_MAN, Sales Manager, 10000, 20000);
INSERT INTO jobs VALUES (SA_REP, Sales Representative, 6000, 12000);
INSERT INTO jobs VALUES (SH_CLERK, Shipping Clerk, 2500, 5500);
INSERT INTO jobs VALUES (ST_CLERK, Stock Clerk, 2000, 5000);
INSERT INTO jobs VALUES (ST_MAN, Stock Manager, 5500, 8500);

#locations表
CREATE TABLE locations (
  location_id int(11) NOT NULL AUTO_INCREMENT,
  street_address varchar(40) DEFAULT NULL,
  postal_code varchar(12) DEFAULT NULL,
  city varchar(30) DEFAULT NULL,
  state_province varchar(25) DEFAULT NULL,
  country_id varchar(2) DEFAULT NULL,
  PRIMARY KEY (location_id)
) ENGINE=InnoDB AUTO_INCREMENT=3201 DEFAULT CHARSET=gb2312;
#locations数据
INSERT INTO locations VALUES (1000, 1297 Via Cola di Rie, 00989, Roma, null, IT);
INSERT INTO locations VALUES (1100, 93091 Calle della Testa, 10934, Venice, null, IT);
INSERT INTO locations VALUES (1200, 2017 Shinjuku-ku, 1689, Tokyo, Tokyo Prefecture, JP);
INSERT INTO locations VALUES (1300, 9450 Kamiya-cho, 6823, Hiroshima, null, JP);
INSERT INTO locations VALUES (1400, 2014 Jabberwocky Rd, 26192, Southlake, Texas, US);
INSERT INTO locations VALUES (1500, 2011 Interiors Blvd, 99236, South San Francisco, California, US);
INSERT INTO locations VALUES (1600, 2007 Zagora St, 50090, South Brunswick, New Jersey, US);
INSERT INTO locations VALUES (1700, 2004 Charade Rd, 98199, Seattle, Washington, US);
INSERT INTO locations VALUES (1800, 147 Spadina Ave, M5V 2L7, Toronto, Ontario, CA);
INSERT INTO locations VALUES (1900, 6092 Boxwood St, YSW 9T2, Whitehorse, Yukon, CA);
INSERT INTO locations VALUES (2000, 40-5-12 Laogianggen, 190518, Beijing, null, CN);
INSERT INTO locations VALUES (2100, 1298 Vileparle (E), 490231, Bombay, Maharashtra, IN);
INSERT INTO locations VALUES (2200, 12-98 Victoria Street, 2901, Sydney, New South Wales, AU);
INSERT INTO locations VALUES (2300, 198 Clementi North, 540198, Singapore, null, SG);
INSERT INTO locations VALUES (2400, 8204 Arthur St, null, London, null, UK);
INSERT INTO locations VALUES (2500, Magdalen Centre, The Oxford Science Park, OX9 9ZB, Oxford, Oxford, UK);
INSERT INTO locations VALUES (2600, 9702 Chester Road, 09629850293, Stretford, Manchester, UK);
INSERT INTO locations VALUES (2700, Schwanthalerstr. 7031, 80925, Munich, Bavaria, DE);
INSERT INTO locations VALUES (2800, Rua Frei Caneca 1360 , 01307-002, Sao Paulo, Sao Paulo, BR);
INSERT INTO locations VALUES (2900, 20 Rue des Corps-Saints, 1730, Geneva, Geneve, CH);
INSERT INTO locations VALUES (3000, Murtenstrasse 921, 3095, Bern, BE, CH);
INSERT INTO locations VALUES (3100, Pieter Breughelstraat 837, 3029SK, Utrecht, Utrecht, NL);
INSERT INTO locations VALUES (3200, Mariano Escobedo 9991, 11932, Mexico City, Distrito Federal,, MX);

MySQL之子查询(DQL)

原文:https://www.cnblogs.com/hfl1996/p/13360484.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!