MySQL------SQL99语法⼀、SQL99语法
语法:
select 查询列表
from 表1 别名【连接类型】
join 表2 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选条件】
【oder by 排序列表】
分类:
内连接:inner
外连接:左外 left【outer】、右外 right【outer】、全外 full【outer】
交叉连接:cross
⼆、内连接
语法:
select 查询列表
from 表1 别名
inner join 表2 别名
on 连接条件
分类:等值连接、⾮等值连接、⾃连接
#案例:查询员⼯名、部门名<;等值连接>
SELECT last_name,department_name
FROM employees e
INNER JOIN departments d
ON e.`department_id` = d.`department_id`
#案例:查询员⼯名、部门名、⼯种名‘、并按部门名降序
SELECT last_name,department_name,job_title
FROM employees e
INNER JOIN departments d ON e.`department_id`= d.`department_id`
INNER JOIN jobs j ON e.`job_id` = j.`job_id`
ORDER BY department_name DESC;
特点:1、添加排序、分组、筛选
2、inner 可以省略
3、筛选条件放在where后⾯,连接条件放在on后⾯,提⾼分离性,便于阅读
4、inner join 连接和 sq192语法中的等值连接效果是⼀样的,都是查询多表的交集
三、⾮等值连接
#查询员⼯的⼯资级别
SELECT salary,grade_level
FROM employees e
JOIN job_grades g
ON e.`salary` BETWEEN g.`lowest_sal`AND g.`highest_sal`;
四、⾃连接
#案例:查询员⼯的名字、上级的名字
SELECT e.last_name 员⼯,m.last_name 领导
FROM employees e
JOIN employees m
ON m.`employee_id` = e.`manager_id` ; #含义:领导下的员⼯ = 员⼯上的领导
五、外连接
应⽤场景:⽤于查询⼀个表中有,另⼀个表没有的记录
特点:
1、外连接的查询结果为主表中的所有记录
如果从表中有和它匹配的,则显⽰匹配的值
如果从表中没有和它匹配的,则显⽰null
外连接查询结果=内连接结果+主表中有⽽从表没有的记录
mysql交集查询
2、左外连接,left join左边的是主表
右外连接,right join右边的是主表
3、左外和右外交换两个表的顺序,可以实现同样的效果
4、全外连接 = 内连接的结果+表1中有但表2没有的,表2中有但表1没有的
#案例:查询没有男朋友的⼥⽣名(左外)
SELECT be.name,bo.id,bo.`boyName`
FROM beauty be
LEFT OUTER JOIN boys bo
ON be.`boyfriend_id` = bo.`id`
WHERE bo.id IS NULL;
#案例:查询没有男朋友的⼥⽣名(右外)
SELECT be.*,bo.*,
FROM boys bo
RIGHT OUTER JOIN beauty be
ON be.`boyfriend_id` = bo.`id`
WHERE be.id IS NULL;
五、交叉连接
#案例
SELECT b.*,bo.*
FROM beauty b
CROSS JOIN boys bo;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论