Sql server--數據查詢

一 數據查詢

1 其基本語法格式爲 

Select 字段列表 --⽤用於指定輸出字段 
[ INTO 新表 ] --將檢索結果存儲到⼀一個新的數據庫表中 
[FROM 數據源]--⽤用於指定檢索的數據來源 
[ WHERE 搜索條件 ] --⽤用於指定對記錄的過濾條件 
[ Group by 分組表達式 ] --對檢索到的記錄進⾏行分組 
[ Having 搜索表達式 ] --也⽤用於指定對記錄的過濾條 件,但要與Group By⼦子句⼀一塊兒使⽤用 
[ORDER By 排序表達式[ASC|DESC]] --對檢 索到的記錄進⾏行排序處理


使⽤用ALLDISTINCT TOP指定記錄⾏行數 

(1) ALL:默認關鍵字,將返回符合條件的所有記錄,並且容許在查詢結果中包含重複記錄。sql

Select ALL work_id From worker 數據庫

(2) TOP關鍵字: TOP關鍵字⽤用於限制查詢結果顯⽰示的⾏行數,其能夠返回表中前n⾏行或 前一個百分數的數據。 函數

SELECT TOP 3 (PERCENT) * from Worker order by worker_id desc spa

(3) DISTINCT:⽤用於去除查詢的結果集中重複的記錄
SELECT DISTINCT Ware_Name from Ware code

3 多表查詢

SQL提供了內鏈接、外鏈接、交叉鏈接、多表 鏈接等多種鏈接⽅方式 orm

1> 內部聯接查詢 排序

兩錶鏈接查詢:
--顯⽰示職⼯工信息及每一個職⼯工對應的貨物銷售狀況
Inner join 語句: 
select 字段列表 from 表1 inner join 表2 on 主表.主鍵 = 從表.外鍵
SELECT *(word_id,…) FROM Worker INNER JOIN SellON Worker.Work_id=Sell.Work_Id  (where word.id='500' 帶條件)

Where 語句
select 字段列表 from 表1,表2 where 主表.主鍵 = 從表.外鍵
select * from worker ,sell where worker.work_id=sell.work_id 


多表鏈接查詢:
SELECT 字段列表 FROM 表1 , 表2 ,表3
Where 表1.字段=表2.字段 and 表2.字段=表3.字段

2> 外部聯接查詢 it

SELECT 字段列表 FROM 表1 <FULL/LEFT/RIGHT> OUTER JOIN 表2 ON 條件表達式 io

向左鏈接 :返回左表全部行,及左表中每行在右表中的匹配行,若無,返回NULLform

向右鏈接:返回右表全部行,及左表中每行在右表中的匹配行,若無,返回NULL

全外鏈接:返回左右表全部行,及左表中每行在右表中的匹配行,若無,返回NULL

select *from sell right outer join ware on ware.ware_id = sell.ware_id

交叉鏈接:兩個表的記錄交叉組合,無論有無匹配,左表每一行和右表每一行均結合,其結果中的記錄⾏行數=左表⾏行數*右表⾏行數 

select *from worker cross join sell

4 ⼦查詢(嵌套查詢) 

若是⼀一個Select語句可以返回⼀一個單值或⼀一列值,並嵌套在⼀一 個Select、Insert、Update或Delete語句中,則稱之爲⼦子查詢或內層查詢 

格式⼀: 

Select * from 表名 where 字段名 關係運算符 (⼦子查詢) 

select *from sell where sell_price = (select max(sell_price) from sell)

格式二: 

Select * from 表名 where 字段名 [not] in (⼦子查詢) 

select * from sell where word_id in (select work_id form worker where position = ‘副經理

格式三: 

Select * from 表名 where [not] exists (⼦子查詢) 


二 select的其餘用法

1 設置別名

原字段名 [ AS ] ‘字段別名’ 
Use CPMSgoSELECT Work_id as '職⼯工編號',Work_name '職⼯工姓名',Sex '性別' from Worker

2 排序

SELECT * from Sell ORDER BY Sell_Price DESC(降序)/ASC升序

3,使⽤用集合函數返回彙總值 

Sum() 返回字段和                  Avg() 返回字段平均值 

Max() 返回字段最大值             Min() 返回字段最小值        Count() 返回字段數量

select sum(sell_price) from sell

4 GROUP BY —分組統計

例子:
1,統計男女職業的總人數
select sex as '性別',count (*) as '人數' from worker group by sex

2,統計每種貨物的貨物編號、名稱及銷售總計
ps: 貨物名稱和銷售總計不在⼀一個表中,因此該題須要使⽤用多表查詢、集合函數及分組彙總。
select a.ware_id,ware_name,sum(sell_price) from ware a inner join sell b on a.ware_id=b.ware_id group by a.ware_id,ware_name

5 compute統計

做用:用來計算總計或進⾏行分組⼩小計,總計值或⼩小計值將做爲附加新⾏行出如今檢索結果中,⼀通常⽤用在WHERE⼦子句以後。

         select *from worker compute count(work_id)

compute by 

以前統計男女的至關於創個新表,表示sex和count,若要分別展現男,女職員的全部的信息,而且統計他們的數量

select * from worker order by sex computer count(word_id) by sex
注意:使用computer by前必須有order by字句,並且先後的的字段必須相同

order by sex 將男女分開兩個表顯示數據,而且在表下還有他們的cnt 數量
相關文章
相關標籤/搜索