连接查询(MySQL)
目录
- 前言
- 连接查询分类
- sql92连接
- 等值连接
- 非等值连接
- 自连接
- sql99连接
- 内连接
- 等值连接
- 非等值连接
- 自连接
- 外连接
- 左(右)外连接
- 全外连接
- 交叉连接
前言
介绍MySQL的连续查询操作我们选择使用可视化软件Navicat,对应的数据库使用了某公司员工数据库,该数据库包含员工信息表、部门信息表、公司地址信息表、工作职业信息表、员工等级表。
当遇到多表查询
(查询的字段来自多个表时)就需要用到连接查询
,根据前面介绍的知识,直接from对应的表的话,就会遇到笛卡尔乘积现象,这个时候为了解决问题,我们就要通过增加有效的连接手段来避免。
连接查询分类
∙ \bullet ∙ 按功能分类:
∙ \bullet ∙ 按年代分类:sql92标准、sql99标准。其中sql92只支持内连接,sql99支持内连接、左(右)外连接、交叉连接。
sql92连接
内连接显示的是多个表之间交集的部分,n表连接至少需要n-1个连接条件。
等值连接
语法
:
select 查询列表
from 表1 别名,表2 别名
where 表1.key=表2.key
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
示例一:查询员工名和对应的部门名
示例二:查询有奖金的员工名、部门名
示例三:查询员工名、部门名和所在城市(三表连接)
特点
:
∙ \bullet ∙ 为表起别名,方便书写,区分重名的字段,起别名后查询字段只能用别名
∙ \bullet ∙ 两个表的顺序可以调换
∙ \bullet ∙ 可以加筛选where,后面使用and接下一个筛选条件
∙ \bullet ∙ 可以加分组、进行排序,可以实现多表连接
非等值连接
where语句下的连接条件不再是等于号。
示例一:查询员工的工资和工资级别
自连接
在一个表中进行查询,一定要记得起别名来进行区分。
示例一:查询员工名和上级的名称
sql99连接
语法
:
select 查询列表
from 表1 别名
【连接类型】 join 表2 别名 on 连接条件 【where 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
注意
:多表连接时重复【连接类型】join 表2 别名 on 连接条件
内连接
连接类型为inner
,其余于sql92的内连接基本相同。
等值连接
示例一:查询部门个数大于3的城市名和部门个数
示例二:查询员工名、部门名、工种名,并按部门名降序
特点
:
∙ \bullet ∙ 添加排序、分组、筛选
∙ \bullet ∙ inner可以省略
∙ \bullet ∙ 筛选条件放在where之后,连接条件放在on之后,提高分离性,便于阅读
∙ \bullet ∙ inner join 连接于sql92连接效果相同,都是查询多表的交集部分
非等值连接
示例一:查询员工的工资和工资级别
自连接
示例一:查询员工的名字、上级的名字
外连接
用于查询一个表中有,另一个表中没有的信息。分主从表,显示信息为主表全部信息,当对应的项没有记录时用null填充。左外连接的连接类型为left 【outer】
,右外连接的连接类型为right 【outer】
,全外连接的连接类型为full 【outer】
。
左(右)外连接
左外、右外连接的唯一区别是表示的主从表不同。即左外连接left左边的表为主表,右边的表为从表;右外连接右边的表为主表,左边的表为从表。
示例一:查询哪个部门没有员工
全外连接
mysql不支持全外连接,所以这里简单的介绍一下全外连接的功能。
全外连接=内连接的结果+表1中有但表2没有的+表2中有表1中没有的
交叉连接
交叉连接的连接类型为cross
,不加on连接条件,最终实现的结果相当于笛卡尔集。
连接查询(MySQL)相关推荐
- MySQL连接查询——MySQL 基础查询你会了吗?
前言: 由于大一学习数据库不扎实,学到后面有点吃力,所以回过头来认真学习一边,写一些学习总结,提醒自己.也要告诫读者,把基础打扎实.读者觉得有用的话可以收藏点赞哦! 上一篇:MySQL函数查询--My ...
- JDBC简单连接查询MySQL数据库
代码: DButil.java(连接关闭数据库的类) import java.sql.DriverManager; import java.sql.SQLException; import java. ...
- mysql判断是否连通c_C/C++连接查询MYSQL
1. [代码][C/C++]代码 #include #include #include int main() { MYSQL mysql;//连接数据库的变量 MYSQL_RES *res;//存放查 ...
- jsp mysql demo_echart通过jsp连接查询mysql的demo - 贪吃蛇学院-专业IT技术平台
echart 连接MySQL 数据库的例子 js核心代码 idea项目截图 数据库截图 mysql数据库脚本 /* Navicat MySQL Data Transfer Source Server ...
- Mysql之七种连接查询
1.数据库构成 2.sql执行顺序 1.内连接查询 显示A表和B表的共有信息,相当于取交集. 2.左连接查询 显示左表(A表)的全部信息,右表(B表)只显示符合条件的信息,没有显示null 3.右连接 ...
- mysql 连接 分组_MySQL 基础 (四) 分组查询及连接查询
MySQL 基础 (四) 分组查询及连接查询 MySQL 基础(四) 进阶 5 分组查询 语法: SELECT 分组函数, 列(要求出现在 group by 的后面) FROM 表 [where 筛选 ...
- mysql连接查询和in的效率取舍
例如: A表 id 子id 父id 1 3 2 2 5 2 3 4 3 B表 id name 3 x ...
- MySQL之DQL(数据查询语言)- 表连接查询
目录 一.简介 1.1.男生表 1.2.女生表 二.左连接查询(左外连接) 三.右连接查询(右外连接) 四.内连接查询 五.全连接查询 五.自连接查询 六.子查询 七.伪表查询 学习计划: 一.简介 ...
- MySQL 数据库————连接查询
目录 一.多表连接查询 1.内连接--inner join 2.左连接--left join 3.右连接--right join 二.存储过程 1.简介 2.优点 3.语法 ②.参数分类 ③.带参数的 ...
- 数据库系统原理与应用教程(066)—— MySQL 练习题:操作题 71-81(十):连接查询
数据库系统原理与应用教程(066)-- MySQL 练习题:操作题 71-81(十):连接查询 71.连接查询(1) 数据表:Customers,包含顾客名称:cust_name.顾客 id:cust ...
最新文章
- SAP CRM WebClient UI Sales Area的cancel处理
- 4代hiv检测50元_别瞧不起国货!这4个姥姥辈的护肤品,真心好用,还不到50元
- raid0 raid1 raid5 raid10工作模式的工作原理及特点
- tensorflow中同时两个损失函数_深度度量学习中的损失函数
- android OpenGL ES实现渲染到透明的纹理 render to transparent texture
- 使用Crash工具查看一个TCP listen sock内存布局实例
- 2019年泰迪杯技能赛A题心得
- Java 常用数据类型(总结)
- 求2n个数中最大值和最小值的最少比较次数
- linu安装JDK1.8
- 《山海经》只能是政府组织编写的
- JavaScript高级第02天笔记
- HTML+CSS大作业HTML5期末大作业 旅游酒店网站设计——旅游酒店服务预订(1页) web网页设计—— 出游
- ADC0809 VHDL控制程序
- 使用腾讯手游助手作为开发测试模拟器的方案---以及部分问题的解决方案-1
- jQuery二级下拉菜单 下拉箭头翻转动画
- 可怕的思维定势!!!
- .net core入门38:linux上安装.net 5.0
- 2.1 2722 和数
- Android开发之“友录”