SQL Server 2012 數據查詢一 單表查詢(基礎查詢、條件查詢、模糊查詢、統計查詢、分組查詢)

SQL語法格式

SELECT [all | DISTINCT] <目標列表達式> [別名] [,<目標列表達式> [別名]]...
FROM <表名或視圖名> [別名] [,<表名或視圖名> [別名]]... | (<SELECT語句>) [AS] <別名>
[WHERE <條件表達式>]
[GROUP BY <列名1> [HAVING <條件表達式>]]
[ORDER BY <列名2> [AES|DESC]]

單表查詢

1.基礎查詢

1. 查詢表中的所有數據,返回所有信息
語法格式:

	SELECT * FROM <表名或視圖名>

使用示例:返回student表的所有信息

	select * from student

2. 查詢表中的所有數據,返回部分信息
語法格式:

	SELECT <需要返回的屬性列1> [,<需要返回的屬性列2>]... FROM <表名或視圖名>

使用示例:返回student表的學號、姓名、性別信息

	select StuNo,StuName,Sex from student

3. 查詢表中的所有數據,返回部分信息,改變標題顯示
語法格式:

	SELECT <需要返回的屬性列1>  別名1 [,<需要返回的屬性列2> 別名2]... FROM <表名或視圖名>

使用示例:返回student表的學號、姓名、性別信息,並以學號、姓名、性別作爲標題

	select StuNo 學號,StuName 姓名,Sex 性別
    from student

4. 查詢表中前N條數據
語法格式:

	SELECT TOP N  <目標列表達式> FROM <表名或視圖名>

使用示例:返回student表前5條數據

	select TOP 5 *
    from student

5. 查詢表中前N%調數據
語法格式:

	SELECT TOP N  PERCENT  <目標列表達式> FROM <表名或視圖名>

使用示例:返回student表前10%的數據

	select TOP 10 percent
    from student

6. 查詢表中數據,消除重複行
語法格式:

	SELECT DISTINCT <需要消除重複行的目標列表達式> FROM <表名或視圖名>
	 --使用distinct來消除重複數據

使用示例:返回student表中的班級編號,並消除相同的班級編號

	select distinct ClassID
    from student

7. 查詢表中數據,並進行排序
語法格式:

	SELECT  <目標列表達式> 
	FROM <表名或視圖名>
	ORDER BY [ASC|DESC]
	--ASC 爲升序排序,如果不直接寫明,則默認情況下認爲是升序排序
	--DESC爲降序排序

使用示例:返回student表的所有信息,並按照學號進行降序排序

	select *
    from student
    order by StuNo desc



2.條件查詢

1. 比較條件查詢
語法格式:

	SELECT  <目標列表達式> 
	FROM <表名或視圖名>
	WHERE <比較條件表達式>
	
	比較條件有:
	= 等於
	> 大於
	< 小於
	>= 大於等於
	<= 小於等於
	!=或<> 不等於
	!> 不大於
	!< 不小於

使用示例:查詢學生年齡小於20歲的學生

	select *
    from student
    where Age < 20

2. 範圍條件查詢
語法格式:

	SELECT  <目標列表達式> 
	FROM <表名或視圖名>
	WHERE <範圍條件表達式>
	
	範圍條件有:
	BETWEEN AND 在指定範圍內,包括指定範圍的上限和下限
	NOT BETWEEN AND 不在指定範圍內,不包括指定範圍的上限和下限

使用示例:查詢學生年齡在18-24歲的學生(包括18歲和24歲)

	select *
    from student
    where Age between 18 and 24

3. 集合條件查詢
語法格式:

	SELECT  <目標列表達式> 
	FROM <表名或視圖名>
	WHERE <集合條件表達式>
	
	集合條件有:
	IN 在指定集合內
	NOT IN 不在指定集合內

使用示例:查詢所在班級ID爲1903和1905的學生

	select *
    from student
    where ClassID IN(1903,1905)

4. 空值條件查詢
語法格式:

	SELECT  <目標列表達式> 
	FROM <表名或視圖名>
	WHERE <空值·條件表達式>
	
	空值條件有:
	IS NULL 是空值
	IS NOT NULL 不是空值

使用示例:查詢沒有年齡的學生信息

	select *
    from student
    where Age is null

5. 邏輯條件查詢
語法格式:

	SELECT  <目標列表達式> 
	FROM <表名或視圖名>
	WHERE <邏輯條件表達式>
	
	邏輯條件有:
	AND 與邏輯,兩個或多個條件同時滿足時返回查詢結果
	OR 或邏輯,任何一個條件滿足時返回查詢結果
	NOT 非邏輯,不滿足條件時返回查詢結果

使用示例:查詢年齡爲20歲且所在班級編號爲1903的學生信息

	select *
    from student
    where Age=20 and ClassID=1903



3.模糊查詢
通配符 含義 示例
% 表示0個或0個以上的任意字符 ‘A%’:匹配以A開頭的任意字符串;
‘%A’:匹配以A結尾的任意字符串;
‘A%B’:匹配以A開頭,以B結尾的任意字符串;
‘%AB%’:匹配包含AB的任意字符串
_(下劃線) 表示任意一個字符 ‘_A’:匹配以A結尾的並且長度爲2個字符的字符串
[ ] 表示方括號內列出的任意單個字符 ‘[A-K]%’:匹配以A到K中的任意一個字符開頭的字符串
[ ^ ] 表示不在方括號內列出的任意單個字符 ‘[^A-K]%’:匹配不是以A到K中的任意一個字符開頭的字符串

語法格式:

	SELECT  <目標列表達式> 
	FROM <表名或視圖名>
	WHERE <模糊條件表達式>
	
	--模糊條件使用LIKE或NOT LIKE進行查找

使用示例:查詢姓張的學生信息

	select *
    from student
    where StuName like '張%'

4.統計查詢

常見聚合函數

函數名 功能
COUNT 統計列值或者記錄的個數,COUNT(列名)統計列值個數;COUNT(*)統計記錄條數
SUM 計算列值的總和,該列值的數據類型必須爲數值型
AVG 計算列值的平均值,該列值的數據類型必須爲數值型
MAX 計算列值中的最大值
MIN 計算列值中的最小值

語法格式:

	SELECT  <含有統計函數的目標列表達式> 
	FROM <表名或視圖名>
	WHERE <查詢條件表達式>

使用示例:查詢student表的總記錄數

	select count(*)
    from student

使用示例:查詢student表中學生的平均年齡

	select avg(Age) 平均年齡
    from student

5.分組查詢

語法格式:

	SELECT  <目標列表達式> 
	FROM <表名或視圖名>
	[WHERE <查詢條件表達式>]
	GROUP BY <進行分組的列名>
	[HAVING <條件表達式>]

	--WHERE子句是在分組前過濾數據
	--HAVING子句是在分組後過濾數據,通常與GROUP BY子句一起用來篩選結果集內的組

使用示例:查詢student表中每個班的人數

	select count(*)
    from student
    group by ClassID

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章