一、多表查询

【1】什么是多表查询?

即,从多个表中获取数据。

注意: 在多表查询是,如果列明在两个表中都有,那么列名前需要加上表名

sql优化:列名前最好加上表名,尤其在多表查询时

SELECT employees.`first_name`,employees.`department_id`

departments.`department_id`,departments.`department_name`

FROM employees,departments  -- 错误,缺少连接条件

-- 发生了笛卡尔集错误

-- 愿因: 缺少多表之间的连接条件,或者连接条件错误

SELECT e.first_name,e.department_id,-- 可以使用表的别名

d.department_id,d.department_name

FROM employees e, departments d -- 错误,缺少连接条件

【2】关于笛卡尔集 :

笛卡尔集会在下面条件下产生:

省略连接条件

连接条件无效

所有表中的所有行互相连接

为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。

【3】使用笛卡尔集与不使用的对比

①查出所有数据

SELECT  * FROM employees

SELECT * FROM departments

②不使用笛卡尔集的普通子查询(MySQL连接)

在 WHERE 子句中写入连接条件。

在表中有相同列时,在列名之前加上表名前缀

-- 需求: 查询每个员工所在部门的名称

SELECT employees.`first_name`,employees.`department_id`,

departments.`department_id`,departments.`department_name`

FROM employees,departments

WHERE employees.`department_id`= departments.`department_id`

③使用JOIN ON 实现多表查询,解决笛卡尔集的问题

-- sq199规定了多表查询的规则

-- 使用 join on

-- 注意: 如果有n个表需要连表查询,那么至少得有n-12个连接条件

SELECT e.first_name,d.department_id,l.city

FROM employees e JOIN departments d

ON e.department_id = d.department_id

JOIN locations l

ON d.location_id = l.location_id

MySQL 连接

【1】自连接,非自链接

-- 自连接需求: 查找员工和员工的领导

SELECT e.first_name,m.first_name

FROM employees e JOIN employees m

ON e.`manager_id` = m.`employee_id`

-- 非自连接:两张不同的表进行连接查询

-- 等值连接,非等值连接

-- 等值连接案例

SELECT e.first_name,d.department_name

FROM employees e JOIN departments d

ON e.department_id = d.department_id

-- 非等值连接需求: 查看所有员工薪水的等级

SELECT e.first_name,e.`salary`,j.grade

FROM employees e JOIN job_grades j

ON e.`salary`>= j.lowest_sal AND e.`salary` <=j.highest_sal

【2】 内连接,外连接

-- 内连接:

合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行

-- 外连接: 左外连接 VS 右外连接

-- 左外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左表中不满足条件的行

-- 这种连接成为左外连接

SELECT  e.`first_name`,e.`department_id`,d.department_name

FROM employees e LEFT OUTER JOIN departments d

ON e.`department_id` = d.department_id

-- 右外连接:两个表在连接过程中除了返回满足连接条件的行意外还返回右表中不满足条件的行

-- 这种连接成为右外连接

SELECT e.`first_name`,e.`department_id`,d.department_id,d.department_name

FROM employees e RIGHT OUTER JOIN departments d

ON e.`department_id` = d.department_id

-- 满外连接 full join (mysql不支持)

MYSQL数据库实验三多表查询_数据库之 MySQL --- 数据处理 之多表查询 (三)相关推荐

  1. mysql实验三单表和多表查询_数据库实验三(单表查询)

    实验三: select sno,sname from student;//(1)查询全体学生的学号和姓名 select * from student;//(2)查询全体学生的详细记录 select s ...

  2. MYSQL数据库实验三多表查询_MYSQL数据库语句之多表操作(三)

    多表操作 join查询(join按照功能分可以分为3类): cross join(交叉连接):获取多个表中的交叉关系. inner join(内连接):获取2个表中字段匹配关系的记录. 外连接 lef ...

  3. mysql水果表查询_最全MySQL数据库表的查询操作

    序言 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对于INNER JOIN(内连接).LEFT JOIN(左连接).RIGHT JOIN(右连接)等一些复杂查询. 通过本节的学习,可 ...

  4. mysql select符合查询_数据库select group by 和having语句 多表连接查询 复合查询

    1.SELECT --group by 子句 group by子句按照指定的列column_name对表数据进行分组 group by 后面跟的列也叫分组特性列 使用group by后,能选择的列   ...

  5. mysql实验四图书视图_[数据库实验四.doc

    [数据库实验四 计算机与信息学院实验报告 系: 专业: 年级: 姓名: 学号: 22 实验室号 计算机号 22 实验时间: 2013年10月29日 指导教师签字: 成绩: 报告退发 (订正 . 重做) ...

  6. mysql读写分离和组复制_数据库主从复制,读写分离,负载均衡,分库分表分别表达的什么概念?...

    谢邀,这是个好问题,而且这个问题好在即使概念非常容易理解,但是这几个不同的概念细节太多太多,而且理解了概念,自己要用,又需要做很多的调研评估和开发工作.作为在这个领域爬坑多年的人,我这里就先介绍下概念 ...

  7. mysql分库分表风险_数据库分库分表存在的问题及解决方案

    读写分离分散了数据库读写操作的压力,但是没有分散存储压力,当数据库的数据量达到千万甚至上亿条的时候,单台数据库服务器的存储能力就会达到瓶颈,主要体现在以下几个方面: 数据量太大,读写性能会下降,即使有 ...

  8. mysql 横纵表转化_数据库MySQL横纵表相互转化操作实现方法

    本文实例讲述了MySQL横纵表相互转化操作实现方法.分享给大家供大家参考,具体如下: 先创建一个成绩表(纵表) create table user_score ( name varchar(20), ...

  9. mysql from多表顺序_数据库 from 表的顺序

    MY SQL语句常用集合 1个数据库通常包含一个或多个表.每个表由一个名字标识 1.SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数 ...

最新文章

  1. SPI通信协议:单片机spi通信接口什么意思,spi接口干什么用的?
  2. classpath详解
  3. Cpp / 通用引用、引用折叠与完美转发问题
  4. 并查集【CF731C】Socks
  5. C语言中生成可执行程序的过程
  6. Linux下系统与硬件时钟管理
  7. 3分钟搞懂MySQL事务隔离级别及SET TRANSACTION影响事务
  8. 人脸识别使用base64的方式添加人脸
  9. ​知者见于未萌:百度CTO王海峰与中国 AI 三十年
  10. M2M技术、标准与智慧城市顶层设计方法
  11. http://download.chinaitlab.com/testdoc/files/8628.
  12. 区块链是什么,如何简单易懂地介绍区块链?
  13. CSS3实现5个常用的网页动画效果
  14. 康诺特酒吧摘得2021全球50家最佳酒吧桂冠;华住与京能集团达成战略合作 | 全球旅报...
  15. python列表元素偶数之和函数_python函数定义,用于查找列表中的所有值是偶数还是都不是奇数...
  16. HTML5期末大作业:旅游网站设计——中国风的旅游网站(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码...
  17. 淘宝官方商品详情接口
  18. DellR720服务器上安装EXSI6.5.0全教程
  19. 文献类型参考文献的文献标识码
  20. FST构图可视化详解

热门文章

  1. js客户端存储之Web存储
  2. 《算法导论》学习笔记——快速排序
  3. Java面向对象设计原则
  4. Ural 1627 Join(生成树计数)
  5. Microsoft SQL Server Desktop Engine安装过程中遇到的问题(2)
  6. python安装caffe_Linux下caffe的安装
  7. 软件培训技术选哪个?
  8. Intellij IDEA展示类中的方法树形结构
  9. 大脑应对危机的模式_危机的完整形式是什么?
  10. js 验证护照_护照本地策略第2部分| Node.js