MySQL链接查询格式_注意事项:select格式,groupby 连接 子查询(MySQL)

#########select语句

##1.基础格式

select 子句from 子句

where 表达式

group by 子句

having 表达式

order by 子句

limit 子句

union 操作符;

##2.关于group by

-- 特别注意:只有聚合函数和group by分组的字段才能出现在select语句中

-- 出现聚合函数sum,avg,count之类的时候

select sex,count(sex)

from studentgroup by sex; -- select包含sex group by sex

select x.id,x.name,sum(c.score),avg(c.score) ,count(*)

from student x,score c where s.id=c.id

group by x.id,x.name -- select 语句中id,name并不是聚合函数的,所以一定要同时加上having avg(c.score) >=80;-- having字段后面跟的是聚合函数的条件

##3.关于连接

-- 1.全连接

select distinct kc.id,xskc.id

from kc,xskc -- kc,xskc之间就形成了全连接 (笛卡尔积)

where kc.id=xskc.id ;-- 设置where子句变成等值连接

-- 2.内连接 inner join 和全连接有时候是可以通用的

select a.*,b.* from student a,b

where a.sex=b.sex;

select a.*,b.* from student a inner join b on a.sex=b.sex;

-- on之后的条件是连接表的条件 其他不属于连接条件的可以用where子句指定

select a.*,b.* from student a inner join b on a.sex=b.sex

where a.id='206';

-- 2.自联结:在同一张表中查找具有相同列值的行

select a.学号,a.课程号,b.课程号,a.成绩

from xs_kc as a

join xs_kc as b on a.成绩=b.成绩 and a.学号=b.学号 and a.课程号!=b.课程号;

select a.sex

from sc as a

left join sc as b on a.sex=b.sex

where a.course='01' and b.course='02';

-- 注意这个时候都是限定cousre=1/2-- 如果仅用一张表是行不通的,所以有了自联结

##4.子查询 -- in/not in-- >/=....操作符 :只返回一个结果-- >any,>all,>=any,....操作符 :当返回多个结果

-- exist的子查询返回逻辑值:在where子句中测试组查询返回的行是否存在

select n-ame from student

where not exist (select * from sc where studen.id=sc.id and sc.course=01);

-- 查询没有选修01课程的姓名

##5.where子句

注意不能再where子句中使用列别名

##6.

-- limit 初始位置 ,查询记录数量 limit 6,10;表示从第七行开始10条记录

-- limit 查询记录数量 limit 5;

##7.count

count(*)返回检索行的总数目(不论是不是有缺失值)

count(列名)返回的数据中不包含缺失值

##8.distinct

SELECT DISTINCT year, month

FROM tutorial.aapl_historical_stock_price

-- 代表year和month组合的唯一(注意只用了一个distinct)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值