Union-SQL Server学习笔记
1、簡(jiǎn)單筆記
數(shù)據(jù)庫(kù)查詢語(yǔ)句中,通過(guò)UNION組合查詢語(yǔ)句,可以將兩個(gè)或更多查詢的結(jié)果組合為單個(gè)結(jié)果集,該結(jié)果集包含組合查詢中的所有查詢的全部行。
利用UNION語(yǔ)句可以實(shí)現(xiàn)將不同數(shù)據(jù)表中符合條件,不同列種的數(shù)據(jù)信息,顯示在另一個(gè)表中.
語(yǔ)法格式:
select 語(yǔ)句 union select 語(yǔ)句 where 條件表達(dá)式 ;在使用Union運(yùn)算符時(shí)遵循以下準(zhǔn)則:
(1)所有選擇列表的表達(dá)式的數(shù)目必須相同(列名,算術(shù)表達(dá)式,聚合函數(shù)等)
select stu_id as 學(xué)號(hào),stu_math as 數(shù)學(xué)成績(jī) from Score where stu_english>60 union select stu_id as 學(xué)號(hào),stu_age as 年齡 from Students where stu_sex=0;(2)在查詢結(jié)果集中的相應(yīng)列或個(gè)別查詢中使用的任意列的子集必須具有相同的數(shù)據(jù)類型,并且兩種數(shù)據(jù)類型之間必須存在可能的隱性數(shù)據(jù)轉(zhuǎn)換,或者提供顯示數(shù)據(jù)轉(zhuǎn)換
select 學(xué)生姓名 from Students union select convert(varchar(20),總分) from Grade where 總分>600 union select 課程名稱 from Course;(3)用Union運(yùn)算符組合個(gè)各語(yǔ)句中對(duì)應(yīng)的結(jié)果集列出現(xiàn)的順序必須相同,因?yàn)閁nion運(yùn)算符是按照各個(gè)查詢給定的順序逐個(gè)比較各列
(4)在Union操作中組合不同的數(shù)據(jù)類型時(shí),這些數(shù)據(jù)類型將使用數(shù)據(jù)類型優(yōu)先級(jí)的規(guī)則進(jìn)行轉(zhuǎn)換。例如int值轉(zhuǎn)換成float,因?yàn)閒loat類型的優(yōu)先權(quán)比Int類型高
(5)通過(guò)Union生成的表中的列名來(lái)自Union語(yǔ)句中的第一個(gè)單獨(dú)的查詢,若要用新列名引用結(jié)果集中的某列,必須按照第一個(gè)select語(yǔ)句中的方式引用該列
2、對(duì)組合查詢后的結(jié)果進(jìn)行排序
select 年齡 as 信息 from Students union select 學(xué)分 from Grade union select 課程編號(hào) from Scourse order by 信息 ASC3、獲取組合查詢中兩個(gè)結(jié)果集的交集
select 學(xué)生編號(hào),學(xué)生姓名 from Students intersect select 學(xué)生編號(hào),學(xué)生姓名 from Score;4、獲取組合查詢中兩個(gè)結(jié)果集的差集
select 學(xué)生編號(hào),學(xué)生姓名 from Students except select 學(xué)生編號(hào),學(xué)生姓名 from Score;等值連接與自然連接的區(qū)別:
1. 等值連接中不要求相等屬性值的屬性名相同,而自然連接要求相等屬性值的屬性名必須相同,即兩關(guān)系只有在同名屬性才能進(jìn)行自然連接。 2. 等值連接不將重復(fù)屬性去掉,而自然連接去掉重復(fù)屬性,也可以說(shuō),自然連接是去掉重復(fù)列的等值連接 5、簡(jiǎn)單內(nèi)連接查詢 select Students.stu_id,stu_name,stu_age,stu_sex,stu_birthday,Score.stu_math from Studentsinner join Score on Students.stu_id=Score.stu_id;什么是內(nèi)連接查詢?
內(nèi)連接是用比較運(yùn)算符將要連接數(shù)據(jù)列的值連接,內(nèi)連接INNER JOIN只返回同時(shí)和兩個(gè)表或結(jié)果集匹配的數(shù)據(jù)行
什么是等值連接?
等值連接是指在連接條件中使用等號(hào)(=)運(yùn)算符比較連接數(shù)據(jù)列的值,在查詢結(jié)果中列出本連接表中的所有數(shù)據(jù)列,包括其中的重復(fù)數(shù)據(jù)列,等值連接用于返回所有連接表中具有匹配值的行,而排除其他的行。
不等連接<>
通常不等連接只有與自然連接同時(shí)使用才有意義
select stu1.* from Students as stu1 inner join stu2 as stu2 on stu1.所在學(xué)院<>stu2.所在學(xué)院 and stu2。Name='張三';二、外連接
外連接OUTER JOIN包括左外連接LEFT OUTER JOIN 和 右外連接RIGHT OUTER JOIN。
外連接OUTER JOIN要求數(shù)據(jù)庫(kù)系統(tǒng)返回的不僅是和所指定的判斷標(biāo)準(zhǔn)匹配的行信息,同時(shí)也需要把連接體中的不匹配的信息返回,利用左外連接可以實(shí)現(xiàn)統(tǒng)計(jì)數(shù)據(jù)的功能。
?左外連接:Left outer join查詢--將左外連接左邊的數(shù)據(jù)表的所有數(shù)據(jù)記錄都包含在查詢結(jié)果集中,而只將右邊數(shù)據(jù)表中有匹配的數(shù)據(jù)記錄添加到結(jié)果集
select st.姓名,st.性別,st.年齡,gr.總分 from tb_Student as stleft outer join tb_Grade as gron st.學(xué)生編號(hào)=gr.學(xué)生編號(hào);右外連接:Right outer join查詢--將右外連接右邊的數(shù)據(jù)表的所有數(shù)據(jù)記錄都包含在查詢結(jié)果集中,而只將左邊數(shù)據(jù)表中有匹配的數(shù)據(jù)記錄添加到結(jié)果集
select st.姓名,st.性別,st.年齡,gr.總分 from tb_Student as stRight outer jointb_Grade as gr on st.學(xué)生編號(hào)=gr.學(xué)生編號(hào);?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/chenyongblog/p/3297177.html
總結(jié)
以上是生活随笔為你收集整理的Union-SQL Server学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Proe Top-Down设计演示
- 下一篇: SQL Server 2008 R2如何