MySQL--多表查询

1、概念

多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。

前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。 比如:员工表和部门表,这两个表依靠“部门编号”进行关联。

2、分类
  1. 等值连接 和 非等值连接
  2. 自连接 和 非自连接
  3. 内连接 和 外连接
3、 等值连接和非等值连接
3.1 等值连接

两个或以上表中存在同一个属性,通过属性相等进行连接。

#  SQL92标准 
#1. 普通多表查询
SELECT last_name , department_name
FROM employees,departments
WHERE employees.department_id = departments.department_id;

# 2. 采用对表名别名
SELECT last_name,department_name
FROM employees emp,departments dept
WHERE emp.department_id = dept.department_id;

# 3.查询三个表
SELECT last_name,department_name,street_address
FROM employees emp,departments dept,locations lo
WHERE emp.department_id = dept.department_id
AND dept.location_id=lo.location_id;

#SQL99标准
SELECT last_name , department_name
FROM employees JOIN departments
ON employees.department_id = departments.department_id;

注意点:

  1. 多个连接条件与用AND 操作符
  2. 区分重复的列名: 多个表中有相同列时,必须在列名之前加上表名前缀。
  3. 在不同表中具有相同列名的列可以用 表名 加以区分。
  4. 使用别名可以简化查询。但是需要注意的是,如果我们使用了表的别名,在查询字段中、过滤条件中就只能使用别名进行代替,不能使用原有的表名,否则就会报错。
  5. 连接 n个表,至少需要n-1个连接条件。
3.2 非等值连接

两个或者多个表连接条件不是通过等号进行连接的

SELECT employee_id,salary
FROM employees emp,job_grades j
WHERE emp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值