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