SQL Server 超基本SELECT語法


USE 中文北風
GO

SELECT * FROM 員工
ORDER BY 薪資 DESC
--DESC是遞減,ASC是遞增,預設可以不用打

SELECT * FROM 員工
ORDER BY 稱呼 ASC,薪資 DESC

SELECT * FROM 員工
ORDER BY 4,8 DESC

這邊上課時有講到SQL Server的
估計執行計畫
及實際執行計畫



PS.2個差別就在一個真的有做,另一個沒做,正常的話2個跑出來的成本秒數
應該是一致的,若不一致可能是資料庫統計資料有些問題
需要將其最佳化,統計資料有點像目錄
當資料量龐大可以讓查找時較為快速
接下來就各種查找語法


1.要有年齡欄位

SELECT 姓名, 出生日期 ,
    YEAR(GETDATE())-YEAR(出生日期) AS 年齡
    --虛擬一個算出來的欄位賦予 年齡 的欄位名稱
FROM 員工

2.要找所有有訂貨的公司,不可重復

SELECT * FROM 訂貨主檔

SELECT ALL 客戶編號 FROM 訂貨主檔
--ALL可加可不加,預設全選

SELECT DISTINCT 客戶編號 FROM 訂貨主檔
--DISTINCT是排除重複值

3.找出本公司薪資前10%的員工

SELECT * FROM 員工

SELECT TOP(10) PERCENT --取前10%
 姓名,薪資,薪資*12 AS 年資,
 出生日期,YEAR(GETDATE())-YEAR(出生日期) AS 年齡
FROM 員工
ORDER BY 薪資 DESC  --依薪資由高至低

4.找出薪資在35000以下,6萬以上(BETWEEN是微軟特有)

SELECT 姓名,職稱,稱呼,薪資
FROM 員工
--WHERE 薪資>=50000 AND 薪資<=60000
--WHERE 薪資 BETWEEN 50000 AND 60000
WHERE 薪資<=35000 OR 薪資>=60000
ORDER BY 薪資 DESC

--數學補充--------------------------------
SELECT ABS(-5) --絕對值
SELECT CEILING(5.154) --無條件進位 = 9
SELECT ROUND(5.854,2) --4捨5入,小數2位 =5.
SELECT FLOOR(8.9) --無條件捨去 = 8
SELECT SQRT(9) --開根號
SELECT POWER(2,3) --倍方,幾次
-----------------------------------------

5.找出姓'陳'的

這邊補充說明一下:
% 可代替任何字元(含空字元)且不限字數
_   可代替任何字元(不含空字元)一次一字

SELECT * FROM 員工
WHERE 姓名 LIKE '陳%'

6.找出地址中有'街'的

SELECT * FROM 員工
WHERE 地址 LIKE '%街%'

7.其他字串查找,就不一一列出了

SELECT * FROM 員工
--WHERE 職稱 = '助理' OR 職稱 = '工程師' OR 職稱 = '助手'
--以上的WHERE 等同於 下句
WHERE 職稱 IN('助理','工程師','助手')

SELECT * FROM 員工
--WHERE 姓名 LIKE '陳%' OR 姓名 LIKE '王%' OR 姓名 LIKE '林%'
--以上的WHERE 等同於 下句
WHERE 姓名 LIKE '[陳王林]%' 
--中括號表示第1個字元,有姓 陳王林 的都會抓出來

SELECT * FROM 客戶
--WHERE 客戶編號 LIKE '[ADF]%'
WHERE 客戶編號 LIKE '[A-D][H-O]%'


SELECT 姓名,職稱,稱呼,地址
FROM 員工
WHERE SUBSTRING(地址,1,2) = '台中'
/*
SUBSTRING(文字,起始位置,取字數)
LEN(文字)
*/

留言

熱門文章