常用与不同表之间的查询。
分类: 按功能分类:内连接(等值链接 非等值链接 自链接)
外连接(左外链接 右外连接 全外连接)
交叉链接
sql92语法内连接
等值连接
案例:查询员工名和对应的部门名(不同表中有一一对应的值。)
SELECT `last_name`,`department_name`FROM employees,departmentsWHERE `employees`.`department_id`=`departments`.`department_id`;
运行结果:
当表名称复杂时,可以给表去起别名。如果表有了别名,查询的字段就不能再用别名
SELECT `last_name`,`employees`.`job_id`,`job_title`
FROM `employees`,`jobs`
WHERE `employees`.`job_id`=`jobs`.`job_id`;
SELECT `last_name`,e.`job_id`,`job_title`
FROM `employees` e,`jobs` j
WHERE e.`job_id`=j.`job_id`; #起了别名之后,上面就不能再用原来的表名。
运行结果:
非等值连接
CREATE TABLE job_grades
(grade_level VARCHAR(3),
lowest_sal INT,
highest_sal INT);
INSERT INTO job_grades
VALUES ('A', 1000, 2999);
INSERT INTO job_grades
VALUES ('B', 3000, 5999);
INSERT INTO job_grades
VALUES('C', 6000, 9999);
INSERT INTO job_grades
VALUES('D', 10000, 14999);
INSERT INTO job_grades
VALUES('E', 15000, 24999);
INSERT INTO job_grades
VALUES('F', 25000, 40000);
#1.查询员工的工资和工资级别
SELECT `salary`,`grade_level`
FROM `employees` e,`job_grades` l
WHERE `salary` BETWEEN l.`lowest_sal` AND l.`highest_sal` #自连接的体现
