1,查詢系統時間
select distinct getdate() from sysdatabases
//此處用了distinct關鍵字是為了只顯示一條記錄(因為系統中不可能只有一個資料庫),同樣也可以使用 top 1來進行限制
//對distinct來說,null值是相同的
//系統預設的是 select all sellist from yourtable //all,顯示所有資料
2,查詢指定百分比的資料
select top 40 percent from info //返回前40%的資料
3,在查詢清單中使用運算式
select p_id ,cost,quantity ,cost*quantity as 合計 from product
4,into 語句 將表中的指定資料存入另一個新表中(可以在不同的資料庫)
select * into DB1.dbo.newtable from DB2.dbo.oldtable [where]
//如果在select語句中指定了計算資料行(如cost*quantity),而在新表中對應的列不是計算資料行,而是一個實際的列,資料由執行select … into 時計算得出
//select … into語句不能與compute語句一起使用
//目標資料庫可以是新表,也可以是暫存資料表
select * into tempdb.dbo.NetTopic from Test.dbo.Topic
5, inner join… on 串連查詢條件
select 員工資料表.員工標號,職位表.職位 from 員工資料表 inner join 職位表 on (員工資料表.職位編號=職位表.職位編號)
6,限定子句 where
where子句指定資料檢索的條件,以限制返回資料行
where子句中的查詢條件
比較子:<,<=,>,>=,=,>,!=,!>,!<
範圍說明:
Between A and B,Not Between A and B
可選值列表: IN ,NOT IN
模式比對:LIKE,NOT LIKE
是否為空白:IS NULL ,IS NOT NUll
上述條件的邏輯組合:AND ,OR,NOT
//text,ntext,image資料類型不能與比較子組成查詢條件
7,like關鍵字中的萬用字元
% 包含零個或多個字元的任一字元串。
WHERE title LIKE '%computer%' 將尋找書籍標題中任意位置包含單詞“computer”的所有書籍標題。
_(底線) 任意單個字元(漢字需要兩個 __)
WHERE au_fname LIKE '_ean' 將尋找所有以 ean 結尾的四個字母的名字,例如 Dean 或 Sean。
[ ] 用於指定範圍,例如[a-f],表示a到f範圍內的任何單個字元
[^ ] 表示指定範圍,例如[^a-f],表示a到f範圍以外的任何單個字元
//對萬用字元的轉義
1,like ‘sql#_test’ escape ‘#' 表示 sql_test字串 ,此處的#號可以用任何的不常用的符號來做轉義符,不過後面記得要有escape ‘轉義符'
2,使用[]來進行說明 like ’sql[_]test’
8,彙總函數——NULL
彙總函數忽略Null
Count:Count函數將忽略對象中的空值,而Count(*)函數則將所有合格記錄都計算在內
Sum:忽略求和對象中的空值
Avg:忽略求和對象中的空值
Max/Min:忽略求和對象中的空值
9,子查詢——多值比較all
多值比較:多行一列
父查詢與多值子查詢之間的比較需要用all來串連
標量值S比子查詢返回集R中的每個都大時,S>ALL R 為True
All表示所有
>all,<all,<=all,>=all,<>all
<>all 等價於not in
例:找出年齡最小的學生
select * from students where age <=all(select age from students)
//另一種方法 select top 1 from students order by age
10,子查詢——多值比較Some/Any(早期用Any)
父查詢與多值子查詢之間的比較需要用Some來串連
標量值S比子查詢返回集R中的某一個大時
S>Some R 為True
>Some,<Some,=Some,<>Some,>=Some,<=Some
=Some等價於 in ,<>Some等價於 not in
例:找出不是最小年齡的學生
select * from students where age >some(select * from students)
11,子查詢——存在判斷Exists
Exists+子查詢用來判斷該子查詢是否返回元組
當子查詢的結果集非空時,Exists為True
當子查詢的結果集為空白時,Exists為False
不關心子查詢的具體內容,因此用Select *
例:列出選修了C01課程的學生的學號、姓名
select sno,sname From Students Where Exists
(
select * from SC
where SC.sno=Students.sno and cno=’C01’
)
//SC為選修課程表