11-04 SQLserver基礎--連接查詢、聯合查詢、索引


一、子查詢補充:

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 條件

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM