Mysql排序与多表查询

course
在这里插入图片描述

score表

在这里插入图片描述

ORDER BY 排序

升序:asc
降序:desc

SELECT * from orders ORDER BY  CUSTKEY asc //后面的字段就是你要排序那个字段的字段

二级排序

SELECT * from orders ORDER BY 
 ORDERKEY ASC,TOTALPRICE DESC//在同样情况下显示TOTALPRICE 最高的

多表查询

出现笛卡儿积的错误
错误原因:缺少了多表链接的条件
错误的实现方式,因为与另一张表的数据全部都匹配过一次

select CUSTKEY,`NAME`
from orders,CUSTOMER;

多表查询的正确方式

SELECT 查询的字段名,查询的字段名 FROM 表,表WHERE 表.字段=表.字段
多表查询必须指明字段所在的表

SELECT course.Cno,Degree FROM course,score
WHERE course.Cno=score.Cno

还可以给字段取一个别名

SELECT a.Cno,a.Cname,Degree FROM course as a ,score as b
WHERE a.Cno=b.Cno

非等值链接

SELECT a.Cno,b.Cname
FROM score as a,course as b
WHERE b.Cname = "高等数学"

自链接

SELECT a.Cno,b.Sno
FROM score as a,score as b
WHERE a.Cno = b.Cno

内链接

SELECT a.Cno,b.Cname
FROM score as a,course as b
WHERE a.Cno = b.Cno#不包含一个表与另一个表不匹配的行
#结果集中不包含一个表与另一个表不匹配的行

外链接

在这里插入图片描述

合并具有同一列的两个以上的行,结果除了匹配成功的行外 还查询到了左表 或者 右表中不匹配的行

用SQL99语法JOIN ON来进行查询

//内链接
SELECT a.Cno,b.Cname
FROM score a JOIN course b
on a.Cno =b.Cno

SELECT e.CUSTKEY,`NAME` FROM orders e JOIN CUSTOMER t on e.CUSTKEY =t.CUSTKEY
左外链接
//外链接
SELECT a.Cno,b.Cname
FROM score a left OUTER JOIN course b
on a.Cno =b.Cno
右外链接
//外链接
SELECT a.Cno,b.Cname
FROM score a RIGHT OUTER JOIN course b
on a.Cno =b.Cno
左中图
//外链接
SELECT a.Cno,b.Cname
FROM score a left OUTER JOIN course b
on a.Cno =b.Cno where a.Cno is null//求空的值
满外链接

UNION的使用

他返回两个查询结果的并集,去除重复记录

UNION ALL

返回两个查询结果的结果集并集
对两个结果的重复部分不去重

左上图 UNION ALL 右中图 = 满外链接

//外链接
SELECT a.Cno,b.Cname
FROM score a left OUTER JOIN course b
on a.Cno =b.Cno

UNION ALL
//外链接
SELECT a.Cno,b.Cname
FROM score a left OUTER JOIN course b
on a.Cno =b.Cno where a.Cno is null//求空的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值