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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章