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