一、子查詢補充:
Exists的用法:
select*from haha where exists(select*from bumen where bumen.code=haha.bumen,and bumen.name='銷售部')and age>35--相當於循環嵌套語句
一般用法:=
select*from haha where bumen=(select code from bumen where name='銷售部')and age>35--括號里面查詢出來的當作參數使用
二、連接查詢
子查詢不僅能放在where后當作條件使用
原句:句式一:Select name,sex,age,bumen from haha
替換句,將haha里的bumen替換成bumen里的code:句式二:Select name,sex,age,(select name from bumen where bumen.code=haha.bumen)as 部門,(select ceo from bumen where bumen.code=haha.bumen) from haha
以上就是連接查詢的格式。
簡化連接查詢語句格式:Select.haha.name,sex,age,bumen.name,ceo from haha,bumen where haha.bumen=bumen.code
還能放在select.和from 中間使用。相當於一個轉換函數,查詢出來的必須是一行一列。
表與表哪個表在前面就先執行哪個表的查詢,必須在表與表之間存在連接關系時才能使用。
1、橫向聯合
拼接查詢--join...on...(將兩個表拼在一起顯示,最多三個表)
Select haha.name,sex,age,bumen.name,ceo from haha
Join bumen on haha.bumen=bumen.code--將join之后的語句加入到上面的表中。
【注意事項】查詢到的結果必須是在select..from之間寫出來才能顯示。
Join前面可以加三種修飾符:
1)Full join...on
加full:全部列出數據,把兩個表中的數據全部顯示出來,即使其中一個表中的數據與另一表沒有任何關系。
2)Left join..on
加Left:(通過關系顯示)顯示左邊表中的全部數據,按照左邊表的順序排列,而右邊表的數據則通過關系排列,右邊沒有關系的不顯示。
3)Right join..on
加right:(通過關系顯示)顯示右邊表的全部數據,按照右表的順序排序,而左邊表的數據通過關系排列,左邊沒有關系的不顯示。
2、縱向聯合union:
一個表存放現有數據,另一個表存放已刪除的數據.
列必須要對應一致。
1)、將haha表中年齡>40歲或者年齡
Select * from haha where age>40
Union
Select * from haha where age<30
2)、將haha表中name,bumen和bumen表中的ceo,code查詢,同時出現在同一個表中
select name,bumen from haha
Union
Select ceo,code,from bumen
【注意事項】1.具備自動去重的功能。
2.數據類型必須對應一致
【案例1】--創建學生信息表:學號、姓名、班級、性別、語文教師編號、數學教師編號、英語教師編號

--創建教師表:教師編號、姓名、課程、性別、出生日期

--創建分數表:語文分數、數學分數、英語分數、學生學號

--分別插入虛擬數據,之后進行查詢操作:





約束 除了主鍵/外鍵約束,還有其他的約束
1、設置唯一性約束(作為候選索引)提前設置好,防止錄入出錯;
只要是設置了唯一性的列都可以作為外鍵使用。
方法二:需要設置唯一鍵的列名直接加unique.
例:cid varchar(50) unique
2、查看查詢代碼

3、check約束
表達式可以用and連接(可以加多個表達式),等同於where 條件


