zoukankan      html  css  js  c++  java
  • MySQL之子查询(DQL)

    子查询

    介绍:

      一条查询语句中又嵌套了另一条完整的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');
  • 相关阅读:
    Echrarts的基本API
    Echarts中Option属性设置
    大数据ETL处理时遇到的坑
    模块设计模式
    PAT (Advanced Level) Practice 代码
    递归中的 DFS 与 DP 比较
    CF 1557 D. Ezzat and Grid
    CF 1557 C. Moamen and XOR
    CF 1555 E. Boring Segments
    CF 1555 D. Say No to Palindromes
  • 原文地址:https://www.cnblogs.com/hfl1996/p/13360484.html
Copyright © 2011-2022 走看看