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
估計執行計畫
及實際執行計畫
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(文字) */
留言
張貼留言