關於SQL Server資料查詢基本方法的總結
首先建立一個簡單的資料庫作為示例資料庫,資料庫名稱為school_db,裡面有三張表 Department_TBL(DNO,DName),Class_TBL(CNO,CName,DNO),Student_TBL(SNO,SName,SSex,CNO)
一 基本查詢
基本語法:select (查詢列表|*) from (表列表)
說明:“查詢列表”可以是表的欄位,表示式,函式。“表列表”可以包含多張表
示例:查詢所有學生的基本資訊
Select * from Student_TBL
二 where條件查詢
基本語法:select (查詢列表|*) from (表列表) where (限制條件)
說明:where關鍵字後面的限制條件不能包含聚合函式
示例:查詢所在班級編號是“003”的學生的基本資訊
Select * from Student_TBL where CNO=’003’
三 關鍵字in的使用
基本語法:select (查詢列表|*) from (表列表) where (欄位名) in (值集合)
說明:in關鍵字的作用是查詢某一欄位是否在一個集合中,一般在where語句中使用
示例:查詢學號為23,34,35,40 學生的資訊
Select * from Student_TBL where SNO in (23,34,35,40)
四 between和 Not between的使用
基本語法:select (查詢列表|*) from (表列表) where (欄位名) between||not between 值1 AND 值2
說明:判斷某個欄位的值是否在一個範圍之內
示例:查詢所有學號大於5小於30的學生的資訊
Select * from Student_TBL where SNO between 5 and 30
五 消除結果集中的重複行
基本語法:select distinct column1,… from (表列表)
說明:去除結果集中跟在distinct關鍵字後面所有欄位的值相等的記錄
示例:查詢所有學生的資訊,刪除名字相同的多餘行
Select distinct column1,… from Student_TBL
六 返回指定的行數(百分率)
基本語法:select top n [percent](column1,…) from (表列表)
說明:n為要返回的行數,若含有percent關鍵字則按百分比返回,則此時n必須在0~100之間,若查詢語句中含有order by 則先對查詢結果進行排序,再執行篩選
示例:返回前十名學生的基本資訊
Select top 10 * from Student_TBL
返回前百分之十的學生的基本資訊
Select top 10 percent * from Student_TBL
七 改變查詢標題
基本語法:select ‘自定義標題’=column1,…. From (表列表),select column1 ‘自定義標題’,…. From (表列表),select column1 as ‘自定義標題’,… from (表列表)
說明:改變的只是查詢結果的標題,並沒有改變表的標題
示例:查詢學生的基本資訊,SNO,SName,CNO分別用“學號”,“姓名”,”所屬班級”顯示
、這裡只使用第三種方法演示了
Select ‘學號’ as SNO,’姓名’ as SName,’所屬班級’ as ‘CNO’ from Student_TBL
八 在查詢結果中顯示字串
基本語法:在select 語句中,將增加的字串用單引號括起來然後和列的名字寫在一起,中間用逗號分開
示例:查詢所有學生資訊,顯示的結果的形式是“學號+“我的姓名是+”性命+班級編號”
Select SNO,’我的姓名是’,SName,CNO from Student_TBL
九 order by的使用
基本語法:select * from table_Name [where..] order by column1 [asc]desc]…
說明:order by 後面可以指定多個列,預設是按升序方式排列的,order by 放在where 語句之後
示例:查詢所有學好大於23號的學生資訊,並按學號的降序排列
Select * from Student_TBL where SNO>23 order by SNO desc
十 使用Like實現模糊查詢
基本語法:select * from table_Name where column like (匹配條件)
說明:“%”匹配任意長度的(長度可以為0)字串,“_”匹配任意單個字元,“[]”:匹配所給定範圍或集合中的任意單個字元,“[^]”匹配所給定的不在所給定的集合或範圍中的任意單個字元,萬用字元或字串必須用單引號括起來
示例:查詢所有姓李的同學地資訊
Select * from Student_TBL where SName like ‘李%’
查詢所有學生名字中第二個字為“冰”的同學的資訊
Select * from Student_TBL where SName like ‘_冰%’
查詢所有編號中含有’e,t,y’字元的班級資訊
Select * from Class_TBL where CNO like ‘[e,t,y]’
查詢所有編號中不含有’e,t,y’字元的班級資訊
Select * from Class_TBL where CNO like ‘[^e,t,y]’
十一 使用is null
基本語法:select * from table_Name where column is null
說明:查詢指定列為輸入資料的資料行,通常用在where語句中
示例:查詢還沒有分配班級的學生的資訊
Select * from Student_TBL where CNO is null
十二 使用compute進行計算
基本語法:select * from table_name where 查詢條件 compute 聚合函式
說明:用來計算總計或進行分組小計,總計或小計值作為附加行出現在查詢結果中
示例:計算在編號為‘001’班級的學生的資訊並統計該班有多少個學生
Select * from Student_TBL where CNO=’001’ compute count(*)
十三 使用compute by分組查詢結果
基本語法:select * from table_Name [where..] order by column compute 聚合函式 by column
說明:在使用compute by之前必須先使用order by 對要進行分組的列進行排序,注意,在oerder by 中進行排序的列的數量和順序必須和compute by 後的項一樣
示例:根據不同班級分組統計各個班級學生的資訊
Select * from Student_TBL order by CNO compute count(SNO) by CNO
十四 使用group by
基本語法:select * from table_name [where…] group by column
說明:在select 子句中使用聚合函式時,group by計算每組的彙總值,使用group by子句時,在select 子句中出現的列名或者出現在聚合函式中,或者出現在group by 子句後面,否則會抱錯,另外group by後面還可以恩 with cube||rollup,
示例:統計每個班級有多少學生,不顯示學生的資訊,只顯示統計資訊
Select CNO,count(SNO) from Student_TBL group by CNO
十五使用having語句
基本語法:select * from table_name [where …] group by column having …
說明:having子句用於限定對組或者聚合函式的查詢條件,該子句常用於group by 子句後面,在查詢結果分組後對組判斷是否滿足查詢條件,在分組之前可以用where語句判斷查詢條件,使用where比使用having更有效,因為它先將不滿足條件的行過濾掉,從而減少了要進行分組的行數
示例:分組統計除編號為‘001’外所有班級學生的人數
Select CNO,count(SNO) from Student_TBL group by CNO having CNO<>’001’
十六 子查詢
基本語法:
說明:子查詢是在查詢中包含另一個查詢的查詢,可以使用子查詢代替表示式,自查詢只能返回一列數,有時只返回但個值
示例:查詢班級人數大於平均班級人數的班級
Select * from Class_TBL where (select count(*) from student where CNO=Class_TBL.CNO)>((select count(*) from Student_TBL)/(select count(*) from Class_TBL))
十七 使用union運算子合並多個查詢結果
基本語法:select column1 from table1_name union select column2 from table2_name
說明:所有查詢中的列數和列的順序必須相同,所有查詢中按順序對應列的資料型別必須相同或相容,如果希望重新排序多個查詢結果的合併結果,則在最後的select 語句中使用order by子句
十八 查詢多個表或檢視的資訊
基本語法:select column1,column2,… from talbe1,table2,…
說明:在涉及多表查詢時必須使用where語句給出多表之間的連線條件,對來自N各表或檢視查詢要寫出N-1 個連線條件
示例:查詢每個學生所在的系部的名稱,班級的名稱和姓名
Select DName,CName,SName from Student_TBL S,Class_TBL C,Department_TBL Dwhere S.CNO=C.CNO and C.DNO=D.DNO
十九 相等連線與自然連線:相等連線是將要連線的列作相等比較的連線,在相等連線列中只保留一個連線列的連線稱為自然連線
二十 比較連線:表與表之間的連線不使用“=”連線,而是使用比較運算子的連線
二十一 自連線就是表與它自己進行連線
二十二 左連線,右連線和全連線
二十三 使用exists:在where子句中可以使用exists子句,它用於測試跟隨的子查詢中的行是否存在
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-675011/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server資料庫查詢優化的方法總結SQLServer資料庫優化
- SQL總結(一)基本查詢SQL
- 關於MySQL 查詢表資料大小的總結MySql
- SQL Server:基於WEB的資料庫查詢SQLServerWeb資料庫
- 優化SQL Server資料庫查詢方法優化SQLServer資料庫
- SQL Server中基於WEB的資料庫查詢SQLServerWeb資料庫
- 關於字串匹配查詢的總結字串匹配
- Oracle:優化方法總結(關於連表查詢)Oracle優化
- SQL Server 跨資料庫查詢SQLServer資料庫
- SQL查詢總結SQL
- SQL Server對組合查詢結果排序方法SQLServer排序
- 50種方法最佳化SQL Server資料庫查詢SQLServer資料庫
- SQL Server實戰四:查詢資料庫的資料SQLServer資料庫
- SQL SERVER 2012查詢資料庫和所有表的大小方法彙總SQLServer資料庫
- Sql Server關於indexed view索引檢視的總結SQLServerIndexView索引
- django對資料庫查詢基本方法Django資料庫
- sql-server不相關子查詢SQLServer
- sql-server相關子查詢SQLServer
- MySQL關於根據日期查詢資料的sql語句MySql
- MS SQL Server查詢優化方法SQLServer優化
- MS SQL Server查詢優化方法SQLServer優化
- 關於查詢轉換的一些總結
- sql server關於跟蹤日誌查詢使用說明SQLServer
- SQL Server資料庫查詢速度慢原因及優化方法SQLServer資料庫優化
- SQL總結(三)其他查詢SQL
- 基於Sql server資料庫的四種分頁方式總結SQLServer資料庫
- Microsoft SQL Server查詢最佳化方法ROSSQLServer
- SQL Server 語句日期格式查詢方法SQLServer
- SQL Server中Table字典資料的查詢SQL示例程式碼SQLServer
- 關於查詢最佳化的一些總結
- 關於dataguard需要查詢的資料字典
- QL Server 百萬級資料提高查詢速度的方法Server
- SQL Server 查詢資料庫中所有表資料條數SQLServer資料庫
- (1)SQL 基本查詢SQL
- 提高查詢速度方法總結
- SQL總結(二)連表查詢SQL
- SQL總結(七)查詢實戰SQL
- SQL Server 查詢分解SQLServer