mysql语句学习

表结构与内容:
1.
在这里插入图片描述
用一条sql查出来每门功课都大于80分的同学
sql1.思路:反其道而行之,子查询找到有那些同学任意一门功课小于80分,然后去除剩下每门功课都大于80分的同学

SELECT 
	DISTINCT name 
from 
	student 
WHERE   
	name not in (SELECT DISTINCT name from student where fenshu <= 80) ;

sql2.思路:按同学名字分组,留下最小分数大于80分的同学

SELECT name from student GROUP BY name having MIN(fenshu) > 80; 

在这里插入图片描述
用一条sql删除除了id不同,其余都相同的学生信息
思路:使用group by 去重,取重复信息的一条id作为保留(这里取最小id),删除id不在其中的信息(留下不重复的两条),起到去重作用
group by使用的频率相对较高,但正如其功能一样,它的目的是用来进行聚合统计的,虽然也可能实现去重的功能,但这并不是它的长项。

DELETE from student_2 WHERE id not in (SELECT MIN(id) from student_2 GROUP BY number,`name`,class_number,fenshu);

思路:多表之间用逗号默认是join(inner join),全外连接查询,产生笛卡尔集,过滤掉自己对阵自己的情况
在这里插入图片描述
abcd 对应四个球,现在四个球进行比赛,显示所有可能比赛组合

SELECT a.`name`,b.`name` FROM team a , team b WHERE a.`name` < b.`name` ;

MySql一些操作:
– 复制表(只复制表结构 <>不等于操作符 )

CREATE TABLE b as SELECT * FROM student WHERE 1<>1;

– 拷贝表结构和内容

CREATE TABLE b as SELECT * FROM student ;

– 拷贝表数据(a=d,b=e,c=f 一一对应)

INSERT into b(a,b,c) SELECT d,e,f FROM a;

注:
left join 和 left outer join 没有区别(左连接和左外连接没有区别)
– 两张关联表,删除主表中已经在副表中没有的信息

DELETE from info where not exists (select * from infobz where infobz.infoid= info.id)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值