没有合适的资源?快使用搜索试试~ 我知道了~
此系列资源适用于MySQL数据库的学习,以及高级SQL语句
资源推荐
资源详情
资源评论
第06章_多表查询
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。
前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个
关联字段可能建立了外键,也可能没有建立外键。比如:员工表和部门表,这两个表依靠“部门编号”进
行关联。
1.
一个案例引发的多表连接
1.1
案例说明
从多个表中获取数据:
+-----------+----------------------+
| last_name | department_name |
+-----------+----------------------+
#案例:查询员工的姓名及其部门名称
SELECT last_name, department_name
FROM employees, departments;
查询结果:
|
King
|
Administration
|
|
King
|
Marketing
|
|
King
|
Purchasing
|
|
King
|
Human Resources
|
|
King
|
Shipping
|
|
King
|
IT
|
|
King
|
Public Relations
|
|
King
|
Sales
|
|
King
|
Executive
|
|
King
|
Finance
|
|
King
|
Accounting
|
|
King
|
Treasury
|
...
| Gietz
|
IT Support
|
| Gietz
|
NOC
|
| Gietz
|
IT Helpdesk
|
| Gietz
|
Government Sales
|
| Gietz
|
Retail Sales
|
SELECT COUNT(employee_id) FROM employees;
#输出107行
SELECT COUNT(department_id)FROM departments;
#输出27行
SELECT 107*27 FROM dual;
#查询员工姓名和所在部门名称
SELECT last_name,department_name FROM employees,departments;
SELECT last_name,department_name FROM employees CROSS JOIN departments;
SELECT last_name,department_name FROM employees INNER JOIN departments;
SELECT last_name,department_name FROM employees JOIN departments;
分析错误情况:
我们把上述多表查询中出现的问题称为:笛卡尔积的错误。
1.2
笛卡尔积(或交叉连接)的理解
笛卡尔乘积是一个数学运算。假设我有两个集合 X 和 Y,那么 X 和 Y 的笛卡尔积就是 X 和 Y 的所有可能
组合,也就是第一个对象来自于 X,第二个对象来自于 Y 的所有可能。组合的个数即为两个集合中元素
个数的乘积数。
SQL92中,笛卡尔积也称为 交叉连接 ,英文是 CROSS JOIN 。在 SQL99 中也是使用 CROSS JOIN表示交
叉连接。它的作用就是可以把任意表进行连接,即使这两张表不相关。在MySQL中如下情况会出现笛卡
尔积:
+-----------+----------------------+
2889 rows in set (0.01 sec)
|
|
| Recruiting
| Payroll
| Gietz
| Gietz
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2; #连接条件
#案例:查询员工的姓名及其部门名称
SELECT last_name, department_name
FROM employees, departments
WHERE employees.department_id = departments.department_id;
1.3
案例分析与问题解决
笛卡尔积的错误会在下面条件下产生:
省略多个表的连接条件(或关联条件)
连接条件(或关联条件)无效
所有表中的所有行互相连接
为了避免笛卡尔积, 可以在 WHERE 加入有效的连接条件。
加入连接条件后,查询语法:
在 WHERE子句中写入连接条件。
正确写法:
在表中有相同列时,在列名之前加上表名前缀。
2.
多表查询分类讲解
分类1:等值连接 vs 非等值连接
等值连接
剩余16页未读,继续阅读
资源评论
冰蓝星
- 粉丝: 240
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功