天天看點

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

Sqlserver 學習筆記

by:授客 QQ:1033553122

-----------------------接Part 2-------------------

13. 使用compute對查詢結果集中的所有記錄進行彙總統計,并顯示所有參加彙總的記錄的詳細資訊。

格式:

COMPUTE 聚合函數[列名]  --聚合函數,例如SUM (),AVG (),COUNT ()等

結合GROUP BY使用

示例:

SELECT * FROM std_table

GROUP BY 專業方向

COMPUTE SUM(聯考分數)

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

SELECT 專業方向, COUNT(*) 系部總人數

FROM std_table

GROUP BY 專業方向

COMPUTE COUNT(專業方向)

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

COMPUTE SUM(COUNT(*))

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

SELECT 專業方向, AVG(聯考分數) 聯考平均分

COMPUTE AVG(AVG(聯考分數))

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

EXEC

SP_RENAME '專業.系部名稱',

'系部代碼'

14.

UNION操作

UNION

操作符用于合并兩個或多個

SELECT

語句的結果集。

請注意,UNION

内部的

語句必須擁有相同數量的列。列也必須擁有相似的資料類型。同時,每條

語句中的列的順序必須相同。【原因:sql

union隻是将兩個結果聯結起來一起顯示,并不是聯結兩個表】

注釋:預設地,UNION

操作符選取不重複的記錄。如果允許重複的值,請使用

UNION ALL。

另外,UNION

結果集中的列名總是等于

中第一個

語句中的列名。

--UNION

和NNION

ALL

--UNION操作符用于合并兩個或多個SELECT語句的結果集

學号

FROM 學生

UNION

專業代碼

FROM 專業

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

UNION ALL

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

--對比:NNION

ALL保留了重複值

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

15

複合連接配接條件查詢(多表查詢)

學生.學号,

學生.姓名,

班級.班級名稱

FROM

學生

JOIN

班級

ON 學生.班級代碼

= 班級.班級代碼

班級.班級名稱,

專業.專業名稱,

系部.系部名稱

專業

ON 學生.專業代碼

= 班級.專業代碼

系部

ON 系部.系部代碼

= 班級.系部代碼

--先建立如下表

CREATE

TABLE person

(

id INT PRIMARY KEY,

lastNAME VARCHAR(10)

NOT NULL,

firstName VARCHAR(10)

addr VARCHAR(20)

city VARCHAR(10)

)

TABLE orders

orderNo CHAR(6)

idP INT FOREIGN KEY

REFERENCES person(id)

INSERT

INTO person

VALUES(1,

'Lai', 'fy',

'none', 'none')

VALUES(2,

'Lai', 'll',

VALUES(3,

'Lai', 'zy',

VALUES(4,

'Lai', 'fj',

INTO orders

'111', 1)

'zzz', 2)

'zzz', NULL)

--給上述兩個表中插入資料後,做如下查詢語句

--left join

可以寫成left

outer join,,,其它的以此類推

--

列出所有人的訂購(INNER

JOIN --->内連接配接)

person.lastName, person.firstName,

orders.orderNo

person

INNER

JOIN orders

ON

person.id = orders.idp

ORDER

BY person.lastName

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

--注:INNER

和JOIN效果一樣,隻要表中有一個比對,則傳回記錄行

--列出所有的人,以及他們的訂購,如果有的話(LEFT

OUTER JOIN-->左外連接配接)

LEFT

OUTER JOIN orders

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

--注:LEFT

OUTER JOIN會傳回左表所有的行,即使在右表中沒有比對值的行

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

--列出所有的訂單,以及訂購他們的人,如果有的話(RIGHT

OUTER JOIN-->右外連接配接)

RIGHT

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

--注:RIGHT

OUTER JOIN會傳回右表所有的行,即使在左表中沒有比對值的行

--列出所有的人,以及他們的定單;同時列出所有的定單,以及定購它們的人(FULL

JOIN--->完全連接配接)

FULL

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3

16嵌套查詢

* FROM

WHERE

班級代碼

IN

FROM 班級

WHERE 專業代碼

IN

WHERE 系部代碼

系部代碼

FROM 系部

IN(1, 2,

5)

作者:授客

微信/QQ:1033553122

全國軟體測試QQ交流群:7156436

Git位址:https://gitee.com/ishouke

友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!

作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!

           微信打賞                       

支付寶打賞                  全國軟體測試交流QQ群  

SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3
SQLServer 學習筆記之超詳細基礎SQL語句 Part 3