SQL語(yǔ)言中最主要、最核心的部分是它的查詢功能。查詢語(yǔ)句用來(lái)對(duì)已經(jīng)存在于數(shù)據(jù)庫(kù)的數(shù)據(jù)按照特定的組合、條件表達(dá)式或次序進(jìn)行檢索,使用SELECT語(yǔ)句來(lái)完成。
使用SELECT查詢數(shù)據(jù)
1. SELECT語(yǔ)法結(jié)構(gòu)
創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為洛扎企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),洛扎網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
T-SQL中查詢基本格式是有SELECT子句、FROM子句、WHERE子句組成的查詢塊:
select 列名 from 表名 where 查詢限定條件
其中
* select 指定了想要查看哪些列的數(shù)據(jù)
* from 指定這些數(shù)據(jù)來(lái)自于哪些表
* where 指定了想要查看哪些行
SELECT語(yǔ)句的語(yǔ)法如下:
select 列名 //SELECT子句:指定查詢列表字段,列名格式為“表.字段1,表.字段2”,如果查單個(gè)表,可簡(jiǎn)寫為“字段1,字段2” [into 新表名] //INTO子句:可選,將查詢結(jié)果存放在一個(gè)新表中 from 表名 //FROM子句:指定查詢數(shù)據(jù)的表名稱 [where 查詢限定條件] //WHERE子句:可選,查詢條件,由字段組成的條件表達(dá)式或邏輯表達(dá)式 [group by 分組條件] //GROUP BY子句:可選,指定查詢結(jié)果的分組條件,通常是一個(gè)列名,但不能是列的別名 [having 分組查詢限定條件] //HAVING子句:指定分組搜索條件,通常與GROUP BY子句一起使用 [order by 排序規(guī)則esc|desc] //ORDER BY子句:指定查詢結(jié)果的排序方式,默認(rèn)為升序ESC;DESC表示
2. 表達(dá)式
表達(dá)式是符號(hào)和運(yùn)算符的一種組合,并且可以對(duì)它求值得到單個(gè)數(shù)據(jù)值
(1)條件表達(dá)式
常量:?jiǎn)蝹€(gè)指定數(shù)據(jù)值的符號(hào)(字母、數(shù)字、符號(hào))
列名:表中列的名稱
一元運(yùn)算符:僅有一個(gè)操作數(shù)的運(yùn)算符(+正數(shù)、-負(fù)數(shù))
二元運(yùn)算符:將兩個(gè)操作數(shù)組合執(zhí)行操作的運(yùn)算符,可以是算數(shù)運(yùn)算符、賦值運(yùn)算符、位運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、字符串串聯(lián)運(yùn)算符、一元運(yùn)算符
在查詢LIKE運(yùn)算符的SQL語(yǔ)句需要使用以下的通配符運(yùn)算符:
例如:要求查找“員工信息表”中電話號(hào)碼前兩位數(shù)為“13”,可以編寫如下約束表達(dá)式
(2)邏輯表達(dá)式
3. 查詢舉例
(1)查詢student表中成績(jī)?yōu)?0-100的學(xué)生所有信息
select * from student where 成績(jī) between 90 and 100
(2)查詢student表中成績(jī)低于90或高于95分學(xué)生信息
select * from student where 成績(jī)<90 or 成績(jī)>95
(3)查詢student表中成績(jī)?yōu)?9、90、91分的學(xué)生信息
select * from student where 成績(jī) in (89,90,91)
(4)查詢student表中所有姓劉的學(xué)生信息
select * from student where 姓名 like ‘劉%'
(5)查詢student表中前5行的數(shù)據(jù)
select top 5 * from student
(6)查詢student表中所有學(xué)生信息,按照成績(jī)從高到低顯示查詢結(jié)果
select * from student order by 成績(jī) desc
4. 分組查詢
分組查詢就是將表中的數(shù)據(jù)按照一定的條件分類組合,在根據(jù)需要得到統(tǒng)計(jì)信息,通過(guò)group by子句可以實(shí)現(xiàn)
在group by子句查詢中,select指定的列名要么是group by子句中指定的列,要么是聚合函數(shù)。聚合函數(shù)用于對(duì)一組值進(jìn)行計(jì)算,并返回單個(gè)值,如求總和、最大值、最小值、平均值等。T-SQL中常見的聚合函數(shù)有SUM()、AVG()、MAX()、MIN()、COUNT()等
(1)查詢student表中所有學(xué)生的總成績(jī),列表名顯示為“總成績(jī)”
select SUM(成績(jī))as 總成績(jī) from student
(2))查詢student表中所有學(xué)生的平均成績(jī)
select AVG(成績(jī))as 平均成績(jī) from student
(3)查詢student表中所有學(xué)生的最高分和最低分
select MAX(成績(jī))as 最高分 MIN(成績(jī))as 最低分 from student
(4)查詢student表中所有行數(shù)
select COUNT(*)as 總行數(shù) from student
(5)查詢student表中每個(gè)班級(jí)的總成績(jī)
select SUM(成績(jī))as 總成績(jī) from student group by 班級(jí)
(6)查詢student表中總成績(jī)大于200的班級(jí)
select SUM(成績(jī))as 總成績(jī) from student group by 班級(jí) having SUM(成績(jī))>200
(7)將student表中2班的學(xué)生信息保存到表student_new中
select * into student_new from student where 班級(jí)=2
5. 子查詢
子查詢就是查詢中又嵌套的查詢
案例1:查詢student表中的最高分或最低分是哪個(gè)學(xué)生
select 姓名,成績(jī)
from student
where 成績(jī)=(select MAX(成績(jī)) from student) or 成績(jī)=(select MIN(成績(jī)) from student)
案例2:查詢每個(gè)季度的生產(chǎn)數(shù)量,百分比
select 季度,sum(生產(chǎn)數(shù)量) AS 每個(gè)季度的生產(chǎn)數(shù)量,
str((sum(生產(chǎn)數(shù)量)/(select sum(生產(chǎn)數(shù)量) from 生產(chǎn)表))*100)+'%' AS 百分比
from 生產(chǎn)表
group by 季度
order by 季度
使用T-SQL實(shí)現(xiàn)多表查詢
前面的查詢都是單表的查詢。如果一個(gè)查詢需要對(duì)多個(gè)表進(jìn)行操作,就稱為連接查詢,就是通過(guò)各個(gè)表之間共同列的關(guān)聯(lián)性來(lái)查詢數(shù)據(jù)。
1. 內(nèi)連接(INNER JOIN)
內(nèi)連接(INNER JOIN)是最常用的一種連接方式,只顯示兩個(gè)表中數(shù)據(jù)的集合部分
案例:在表A和表B中使用內(nèi)連接查詢學(xué)生姓名、學(xué)校、職業(yè)
* 實(shí)現(xiàn)方式一:在where子句中指定連接條件,寫法如下
select A.name 姓名A,A.school 學(xué)校A,B.name 姓名B,B.job 職業(yè)B
from A,B
where A.name=B.name
* 實(shí)現(xiàn)方式二:在from子句中使用inner join …on子句來(lái)實(shí)現(xiàn),寫法如下
select A.name 姓名A,A.school 學(xué)校A,B.name 姓名B,B.job 職業(yè)B
from A inner join B on A.name=B.name
2. 外連接
外連接是對(duì)內(nèi)連接的擴(kuò)充,除了將兩個(gè)表中數(shù)據(jù)重復(fù)部分連接起來(lái),還可以要求顯示左側(cè)或右側(cè)全部的數(shù)據(jù)
(1)左外連接(LEFT JOIN)
左外連接的結(jié)果集包括左表的所有行
案例:在表A和表B中使用左外連接查詢學(xué)生姓名、學(xué)校、職業(yè)
select A.name 姓名A,A.school 學(xué)校A,B.name 姓名B,B.job 職業(yè)B
from A left join B on A.name=B.name
(2)右外連接(RIGHT JOIN)
右外連接是左外連接的反向連接,其結(jié)果集包括右側(cè)所有行
案例:在表A和表B中使用右外連接查詢學(xué)生姓名、學(xué)校、職業(yè)
select A.name 姓名A,A.school 學(xué)校A,B.name 姓名B,B.job 職業(yè)B
from A right join B on A.name=B.name
(3)全連接(FULL JOIN)
全連接右成完整外連接,包括左表和右表中的所有行
案例:在表A和表B中使用完整外連接查詢學(xué)生姓名、學(xué)校、職業(yè)
select A.name 姓名A,A.school 學(xué)校A,B.name 姓名B,B.job 職業(yè)B
from A full join B on A.name=B.name
3. 合并兩個(gè)結(jié)果集
案例:將兩個(gè)表的結(jié)果合并到一個(gè)結(jié)果顯示
SELECT 姓名,學(xué)號(hào),班級(jí),國(guó)籍
FROM 二班
UNION
select 姓+' '+名,學(xué)號(hào),班級(jí),國(guó)籍
from 一班
order by 班級(jí) desc,學(xué)號(hào) asc
4. 自連接
案例:查找每個(gè)員工的上司姓名
SELECT Y.員工姓名,S.員工姓名 AS 上司姓名
from 員工信息表 as Y inner join 員工信息表 as S
on Y.上司ID=S.員工ID
5. 交叉連接
交叉連接就是表之間沒(méi)有任何連接,左表與右表每一行一一組合,相當(dāng)于兩個(gè)表相乘
SELECT T.教師姓名,C.課程名
from 教員基本信息表 AS T cross join 課程表 AS C
標(biāo)題名稱:T-SQL查詢語(yǔ)句
路徑分享:http://vcdvsql.cn/article40/jheeeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、軟件開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)站改版、動(dòng)態(tài)網(wǎng)站、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)