MySQL之多表查询(DQL)

笛卡尔集

介绍:

  表A有m行,表B有n行,查询结果是m*n行。

beauty表:

  

boys表:

  

如果想查询女神名称和对应男神名称,肿么办?

  语法:SELECT NAME,boyName FROM beauty,boys;

笛卡尔集的错误情况:

  SELECT COUNT(*) FROM beauty;假设输出12行

  SELECT COUNT(*) FROM boys;假设输出4行

  最终结果:12*4=48行

产生条件:

  1.省略连接条件。

  2.连接条件无效。

  3.所有表中的所有行互相连接。

解决办法:

  在WHERE加入有效的连接条件。

表的别名

介绍:

  1.使用别名可以简化查询。

  2.使用表名前缀可以提高执行效率。

示例:

SELECT bt.id,NAME,boyname FROM beauty bt,boys b WHERE bt.boyfriend_id=b.id ;

区分重复的列名

  1.使用表名前缀在多个表中区分相同的列。

  2.在不同表中具有相同列名的列可以用表的别名加以区分。

  3.如果使用了表别名,则在select语句中需要使用表别名代替表名。

  4.表别名最多支持32个字符长度,但建议越少越好。

MySQL连接

介绍:

  又称多表查询,当查询的字段来自于多个表时,就会用到连接查询。

分类:

  年代分类:

    sql92标准:仅仅支持内连接。

    sql99标准【推荐】:支持内连接+外连接(左外和右外)+交叉连接。

  功能分类:

    内连接:[inner] join on

      等值连接

      非等值连接

      自连接

    外连接:

      左外连接:left [outer] join on

      右外连接:right [outer] join on

      全外连接

    交叉连接

SQL99语法

介绍:

  1999年推出的sql语法。

语法:

  SELECT 字段,...

  FROM 表1

  【INNER|LEFT OUTER|RIGHT OUTER|CROSS】JOIN 表2 ON 连接条件

  【INNER|LEFT OUTER|RIGHT OUTER|CROSS】JOIN 表3 ON 连接条件

  【WHERE 筛选条件】

  【GROUP BY 分组字段】

  【HAVING 分组后的筛选条件】

  【ORDER BY 排序的字段或表达式】

分类:

  内连接:inner

  外连接

    左外:left【outer】

    右外:right【outer】

    全外:full【outer】

  交叉连接:cross 

好处:

  语句上,连接条件和筛选条件实现了分离,简洁明了!

内连接(inner)

语法:

  SELECT 查询列表 FROM 表1 别名 INNER JOIN 表2 别名 ON 连接条件;

分类:

  等值

  非等值

  自连接

特点:

  1.添加排序、分组、筛选。

  2.inner可以省略。

  3.筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读。

  4.inner join连接和sql92语法中的等值连接效果是一样的,都是查询多表的交集。

示例:

#一.等值连接
#案例1:查询员工名、部门名
SELECT last_name,department_name FROM departments d JOIN  employees e ON e.department_id = d.department_id;


#案例2:查询名字中包含e的员工名和工种名(添加筛选)
SELECT last_name,job_title FROM employees e INNER JOIN jobs j ON e.job_id=j.job_id WHERE e.last_name LIKE '%e%';


#案例3:查询部门个数>3的城市名和部门个数(添加分组+筛选)
#①查询每个城市的部门个数
#②在①结果上筛选满足条件的
SELECT city,COUNT(*) 部门个数
FROM departments d
INNER JOIN locations l
ON d.location_id=l.location_id
GROUP BY city
HAVING COUNT(*)>3;


#案例4:查询哪个部门的员工个数>3的部门名和员工个数,并按个数降序(添加排序)
#①查询每个部门的员工个数
SELECT COUNT(*),department_name
FROM employees e
INNER JOIN departments d
ON e.department_id=d.department_id
GROUP BY department_name;

#②在①结果上筛选员工个数>3的记录并排序
SELECT COUNT(*) 个数,department_name
FROM employees e
INNER JOIN departments d
ON e.department_id=d.department_id
GROUP BY department_name
HAVING COUNT(*)>3
ORDER BY COUNT(*) DESC;


#案例5:查询员工名、部门名、工种名,并按部门名降序(添加三表连接)
SELECT last_name,department_name,job_title
FROM employees e
INNER JOIN departments d ON e.department_id=d.department_id
INNER JOIN jobs j ON e.job_id = j.job_id
ORDER BY department_name DESC;



#二.非等值连接
#案例1:查询员工的工资级别
SELECT salary,job_title
FROM employees e JOIN jobs g ON e.salary BETWEEN g.min_salary AND g.max_salary;
 
 
#案例2:查询工资级别的个数>20的个数,并且按工资级别降序
SELECT COUNT(*),job_title
FROM employees e
JOIN jobs g
ON e.salary BETWEEN g.min_salary AND g.max_salary
GROUP BY job_title
HAVING COUNT(*)>20
ORDER BY job_title DESC;



#三.自连接
#案例1:查询员工的名字、上级的名字
SELECT e.last_name,m.last_name
FROM employees e
JOIN employees m
ON e.manager_id= m.employee_id;


#案例2:查询姓名中包含字符k的员工的名字、上级的名字
SELECT e.last_name,m.last_name
FROM employees e
JOIN employees m
ON e.manager_id= m.employee_id
WHERE e.last_name LIKE '%k%';

外连接

介绍:

  主要用于查询一个表中有,另一个表没有的记录。

分类:

  左外:left【outer】

  右外:right【outer】

  全外:full【outer】

特点:

  1.外连接的查询结果为主表中的所有记录。

   如果从表中有和它匹配的,则显示匹配的值。

   如果从表中没有和它匹配的,则显示null。

   外连接查询结果=内连接结果+主表中有而从表没有的记录。

  2.左外连接,left join左边的是主表。

   右外连接,right join右边的是主表。

  3.左外和右外交换两个表的顺序,可以实现同样的效果。

  4.全外连接=内连接的结果+表1中有但表2没有的+表2中有但表1没有的。

示例:

#左外连接
SELECT b.*,bo.*
FROM boys bo
LEFT OUTER JOIN beauty b
ON b.boyfriend_id = bo.id
WHERE b.id IS NULL; 


#案例1:查询哪个部门没有员工
#左外
SELECT d.*,e.employee_id
FROM departments d
LEFT OUTER JOIN employees e
ON d.department_id = e.department_id
WHERE e.employee_id IS NULL;
 
 
#右外
SELECT d.*,e.employee_id
FROM employees e
RIGHT OUTER JOIN departments d
ON d.department_id = e.department_id
WHERE e.employee_id IS NULL;
 
 
#全外mysql不支持
SELECT b.*,bo.*
FROM beauty b
FULL OUTER JOIN boys bo ON b.boyfriend_id = bo.id;

交叉连接

介绍:

  一般用来返回连接表的笛卡尔积。

语法:

  SELECT 查询列表 FROM 表1 别名 CROSS JOIN 表2 别名 WHERE子句;

  或

  SELECT 查询列表 FROM 表1,表2 WHERE子句;

示例:

#交叉连接
SELECT b.*,bo.* FROM beauty b CROSS JOIN boys bo;

图解JOIN

SELECT <select_list> FROM A LEFT JOIN B ON A.key=B.key;

 

SELECT <select_list> FROM A INNER JOIN B ON A.key=B.key;

SELECT <select_list> FROM A RIGHT JOIN B ON A.key=B.key;

 

SELECT <select_list> FROM A LEFT JOIN B ON A.key=B.key WHERE B.key is null;

SELECT <select_list> FROM A RIGHT JOIN B ON A.key=B.key WHERE A.key is null;

SELECT <select_list> FROM A FULL JOIN B ON A.key=B.key;

SELECT <select_list> FROM A FULL JOIN B ON A.key=B.key WHERE A.key is null OR B.key is null;

案例讲解

#1.显示所有员工的姓名,部门号和部门名称
SELECT last_name,d.department_id,department_name
FROM employees e,departments d
WHERE e.department_id = d.department_id;


#2.查询90号部门员工的job_id和90号部门的location_id
SELECT job_id,location_id
FROM employees e,departments d
WHERE e.department_id=d.department_id
AND e.department_id=90;


#3.选择所有有奖金的员工的last_name、department_name、location_id、city
SELECT last_name, department_name, l.location_id, city
FROM employees e,departments d,locations l
WHERE e.department_id = d.department_id
AND d.location_id=l.location_id
AND e.commission_pct IS NOT NULL;


#4.选择city在Toronto工作的员工的last_name、job_id、department_id、department_name 
SELECT last_name, job_id, d.department_id, department_name 
FROM employees e,departments d ,locations l
WHERE e.department_id = d.department_id
AND d.location_id=l.location_id
AND city = 'Toronto';


#5.查询每个工种、每个部门的部门名、工种名和最低工资
SELECT department_name,job_title,MIN(salary) 最低工资
FROM employees e,departments d,jobs j
WHERE e.department_id=d.department_id
AND e.job_id=j.job_id
GROUP BY department_name,job_title;


#6.查询每个国家下的部门个数大于2的国家编号
SELECT country_id,COUNT(*) 部门个数
FROM departments d,locations l
WHERE d.location_id=l.location_id
GROUP BY country_id
HAVING 部门个数>2;


#7.选择指定员工的姓名,员工号,以及他的管理者的姓名和员工号
/*
 * 结果类似于下面的格式:
 * employees    Emp#    manager    Mgr#
 * kochhar        101      king      100
 */
SELECT e.last_name employees,e.employee_id "Emp#",m.last_name manager,m.employee_id "Mgr#"
FROM employees e,employees m
WHERE e.manager_id = m.employee_id
AND e.last_name='kochhar';


#8.查询编号>3的女神的男朋友信息,如果有则列出详细,如果没有,用null填充
SELECT b.id,b.name,bo.*
FROM beauty b
LEFT OUTER JOIN boys bo
ON b.boyfriend_id = bo.id
WHERE b.id>3;


#9.查询哪个城市没有部门
SELECT city
FROM departments d
RIGHT OUTER JOIN locations l 
ON d.location_id=l.location_id
WHERE  d.department_id IS NULL;


#10.查询部门名为SAL或IT的员工信息
SELECT e.*,d.department_name,d.department_id
FROM departments  d
LEFT JOIN employees e
ON d.department_id = e.department_id
WHERE d.department_name IN('SAL','IT');

SELECT * FROM departments
WHERE department_name IN('SAL','IT');

测试数据

#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=5 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');

#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');