mysql 学习笔记4

过滤分组

select class_id,count(*) orders from students 
group by class_id
having count(*) >= 2;

使用having 代替where,(where在分组前过滤,having在分组后过滤)

SELECT子句的顺序

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT

子查询过滤

select id,name
from students
where class_id in (select class_id
					from students
					where class_id in (1,2));

从内向外操作

内部联结
可使用别名 + INNER JOIN 的方式实现

select s.id,s.class_id,c.name as class_name,s.name
from students s
inner join classes c
on s.class_id = c.id;

高级联结

自联结

SELECT a.cust_id,a.cust_name,a.cust_contact
FROM Customers a,Customers b 
WHERE a.cust_name = b.cust_name
  AND b.cust_contact= "jack"

SELECT cust_id,cust_name,cust_contact
FROM Customers
WHERE cust_name=(SELECT cust_name
                 FROM Customers
                 WHERE cust_contact="jack")

以上两者等价,自联结大多数情况下比子查询速度快,可实际比较两者速度,再选用。

自然联结
所有我们建立的内部联结都是自然联结

外部联结
几种联结方式见mysql学习笔记3;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值