一、 簡單查詢
簡單的transact-sql查詢只包括選擇列表、from子句和where子句。它們分別說明所查詢列、查詢的表或檢視、以及搜尋條件等。
例如,下面的語句查詢testtable表中姓名為「張三」的nickname欄位和email欄位。
select nickname,email
from testtable
where name='張三'
(一) 選擇列表
選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表示式、變數(包括區域性變數和全域性變數)等構成。
1、選擇所有列
例如,下面語句顯示testtable表中所有列的資料:
select *
from testtable
2、選擇部分列並指定它們的顯示次序
查詢結果集合中資料的排列順序與選擇列表中所指定的列名排列順序相同。例如:
select nickname,email
from testtable
3、更改列標題
在選擇列表中,可重新指定列標題。定義格式為:
列標題=列名
列名 列標題
select 暱稱=nickname,電子郵件=email
from testtable
4、刪除重複行
select語句中使用all或distinct選項來顯示表中符合條件的所有行或刪除其中重複的資料行,預設為all。使用distinct選項時,對於所有重複的資料行在select返回的結果集合中只保留一行。
5、限制返回的行數
使用top n [percent]選項限制返回的資料行數,top n說明返回n行,而top n percent時,說明n是表示一百分數,指定返回的行數等於總行數的百分之幾。例如:
select top 2 *from testtable select top 20 percent * from testtable
(二) from子句
from子句指定select語句查詢及與查詢相關的表或檢視。在from子句中最多可指定256個表或檢視,它們之間用逗號分隔。
在from子句同時指定多個表或檢視時,如果選擇列表中存在同名列,這時應使用物件名限定這些列所屬的表或檢視。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定:
select username,citytable.cityid
from usertable,citytable
where usertable.cityid=citytable.cityid
在from子句中可用以下兩種格式為表或檢視指定別名:
表名 as 別名
表名 別名
例如上面語句可用表的別名格式表示為:
select username,b.cityid
from usertable a,citytable b
where a.cityid=b.cityid
select不僅能從表或檢視中檢索資料,它還能夠從其它查詢語句所返回的結果集合中查詢資料。例如:
select a.au_fname+a.au_lname
from authors a,titleauthor ta
(select title_id,title
from titles
where ytd_sales>10000
) as t
where a.au_id=ta.au_id
and ta.title_id=t.title_id
此例中,將select返回的結果集合給予一別名t,然後再從中檢索資料。
(三) 使用where子句設定查詢條件
where子句設定查詢條件,過濾掉不需要的資料行。例如下面語句查詢年齡大於20的資料:
select *
from usertable
where age>20
where子句可包括各種條件運算子:
比較運算子(大小比較):>、>=、=、<、<=、<>、!>、!<
範圍運算子(表示式值是否在指定的範圍):between…and…
not between…and…
列表運算子(判斷表示式是否為列表中的指定項):in (項1,項2……)
not in (項1,項2……)
模式匹配符(判斷值是否與指定的字元通配格式相符):like、not like
空值判斷符(判斷表示式是否為空):is null、not is null
邏輯運算子(用於多條件的邏輯連線):not、and、or
1、範圍運算子例:age between 10 and 30相當於age>=10 and age<=30
2、列表運算子例:country in ('germany','china')
3、模式匹配符例:常用於模糊查詢,它判斷列值是否與指定的字串格式相匹配。可用於char、varchar、text、ntext、datetime和**alldatetime等型別查詢。
可使用以下通配字元:
百分號%:可匹配任意型別和長度的字元,如果是中文,請使用兩個百分號即%%。
下劃線_:匹配單個任意字元,它常用來限制表示式的字元長度。
方括號:指定乙個字元、字串或範圍,要求所匹配物件為它們中的任乙個。[^]:其取值也 相同,但它要求所匹配物件為指定字元以外的任乙個字元。
例如:限制以publishing結尾,使用like '%publishing'
限制以a開頭:like '[a]%'
限制以a開頭外:like '[^a]%'
4、空值判斷符例where age is null
5、邏輯運算子:優先順序為not、and、or
(四)查詢結果排序
使用order by子句對查詢返回的結果按一列或多列排序。order by子句的語法格式為:
order by [,…n]
其中asc表示公升序,為預設值,desc為降序。order by不能按ntext、text和image資料型別進行排序。例如:
select *
from usertable
order by age desc,userid asc
另外,可以根據表示式進行排序。
通用SQL資料庫查詢語句精華使用簡介
一 簡單查詢 簡單的transact sql查詢只包括選擇列表 from子句和where子句。它們分別說明所查詢列 查詢的表或檢視 以及搜尋條件等。例如,下面的語句查詢testtable表中姓名為 張三 的nickname欄位和email欄位。union運算子可以將兩個或兩個以上上select語句的...
通用SQL資料庫查詢語句精華使用簡介
一 簡單查詢 簡單的transact sql查詢只包括選擇列表 from子句和where子句。它們分別說明所查詢列 查詢的表或檢視 以及搜尋條件等。例如,下面的語句查詢testtable表中姓名為 張三 的nickname欄位和email欄位。select nickname,email from t...
資料庫SQL語句查詢
新手小白菜一枚,求知 查詢所有同學的學號 姓名 選課數 總成績 select t1.stuid,t1.stuname,count t2.courseid sum score from tblstudent t1,tblscore t2 where t1.stuid t2.stuid group by...