一、SELECT 語句基礎
1.查詢指定列:SELECT 關鍵字
<code>--語法:
--SELECT , ... -- 希望查詢列的名稱
--FROM -- 指定選取數據的表/<code>
<code>-- 從 Shohin 中取 3 列
SELECT shohin_id, shohin_mei, hanbai_tanka -- 列的順序可以任意指定,逗號(“,”)分隔,查詢結果的順序和 SELECT 子句中的順序相同
FROM Shohin;/<code>
2.查詢表的所有列:星號(*)
<code>--語法
--SELECT * -- 星號(*)代表所有列
--FROM ;/<code>
【備註】使用星號(*)的話就無法設定列的顯示順序
3.為列設定別名:AS 關鍵字
<code>SELECT shohin_id AS Id, shohin_mei AS Name, shiire_tanka Price
FROM Shohin; -- 不用 AS 關鍵字也可以/<code>
<code>SELECT shohin_id AS "編號", shohin_mei AS '名稱', shiire_tanka '價格'
FROM Shohin; -- 設定漢語別名:加上雙引號(")或單引號(')/<code>
4.常數的查詢
<code>SELECT '產品' AS Product, -- '產品':字符串常數
38 AS Price, -- 38:數字常數
'2016-09-30' AS '生產日期' -- '2009-02-24':日期常數/<code>
【備註】字符串和日期使用單引號(')。
5.從結果中刪除重複行:DISTINCT
原圖
(1)
<code>SELECT DISTINCT shohin_bunrui FROM dbo.Shohin; -/<code>
使用 DISTINCT 移除 shohin_bunrui 列中的重複數據
(2)DISTINCT 對 NULL 類型的處理:存在多條 NULL 值的行時,會結合為一條 NULL 數據。
<code>SELECT DISTINCT shiire_tanka FROM dbo.Shohin;/<code>
(3)多列之前使用 DISTINCT
<code>SELECT DISTINCT shohin_bunrui, torokubi
FROM dbo.Shohin/<code>
DISTINCT 會將多個列的數據進行組合,將重複的數據結合為一條。
【注意】DISTINCT 關鍵字只能用在第一個列名之前。
6.篩選記錄:WHERE
WHERE 子句中可以指定“某一列的值和這個字符串相等”或者“某一列的值大於這個數字”等條件,找出只符合該條件的記錄。
<code>--語法:
--SELECT , ...
--FROM
--WHERE ;/<code>
<code>SELECT shohin_id, shohin_mei, shohin_bunrui
FROM dbo.Shohin
WHERE shohin_bunrui = '衣服'; -- shohin_bunrui = '衣服':為條件表達式/<code>
選取行之後,再輸出列
【備註】WHERE 子句:首先通過該子句查詢出符合指定條件的記錄,再選取出 SELECT 語句指定的列。
【注意】SQL 子句的書寫格式是固定的,不能隨意更改。如 WHERE 子句必須緊跟在 FROM 子句後。
7.註釋的寫法
註釋對於 SQL 的執行沒有任何影響。
<code>-- 單行註釋
/*
多行註釋
*//<code>
二、算術運算符和比較運算符
1.算術運算符
<code>SELECT shohin_mei, hanbai_tanka, hanbai_tanka * 2 AS 'hanbai_tanka_x2'
FROM dbo.Shohin;/<code>
圖 商品單價的兩倍
四則算術運算符含義運算符加法+減法-乘法*除法/
括號(“(”“)”)可以提高表達式的優先級。
2.需要注意 NULL
<code>SELECT 5 + NULL, 10 - NULL, 1 * NULL, 4 / NULL, NULL / 9;/<code>
【備註】所有包含 NULL 的計算,結果肯定為 NULL。
3.比較運算符
比較運算符運算符含義=相等<>不等>=大於等於>大於<=小於等於
<code>--示例1:
SELECT shohin_mei, shohin_bunrui
FROM dbo.Shohin
WHERE hanbai_tanka = 500;/<code>
選取 hanbai_tanka 列為 500 的記錄
<code>--示例2
SELECT shohin_mei, shohin_bunrui
FROM dbo.Shohin
WHERE hanbai_tanka <> 500;/<code>
<code>--示例3
SELECT shohin_mei, shohin_bunrui
FROM dbo.Shohin
WHERE hanbai_tanka != 500;/<code>
選取 hanbai_tanka 列的值不是 500 的記錄
<code>--示例4
SELECT *
FROM dbo.Shohin
WHERE hanbai_tanka - shiire_tanka >= 500;/<code>
3.對字符串使用不等號時的注意事項
創建表
原圖
<code>--示例:選取出大於'2'的數據的 SELECT 語句
SELECT *
FROM dbo.Chars
WHERE chr > '2';/<code>
【注意】chr 為字符串類型,對字符串類型的數據進行大小比較時,跟數字不一樣。
4.不能對 NULL 使用比較運算符
<code>--示例1:
SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shiire_tanka = NULL; --錯誤的 SELECT 語句
--示例2
SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shiire_tanka IS NULL; --選取 NULL 的記錄
--示例3
SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shiire_tanka IS NOT NULL; --選取不為 NULL 的記錄/<code>
【注意】希望選取 NULL 記錄時,使用 IS NULL;希望選取不是 NULL 的記錄時,使用 IS NOT NULL。
三、邏輯運算符
1.NOT 運算符:取反
<code>--示例:
SELECT *
FROM dbo.Shohin
WHERE NOT hanbai_tanka >= 1000; --等價於 hanbai_tanka < 1000/<code>
取 hanbai_tanka 列不大於 1000 的記錄(hanbai_tanka < 1000)
2.AND 運算符和 OR 運算符
AND 運算符:並且,在兩側的查詢條件都成立時整個查詢條件才成立。
OR 運算符:在兩側的查詢條件就算只有一個成立時整個查詢條件都成立。
<code>--示例
SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shohin_bunrui = '廚房用具'
AND hanbai_tanka >= 3000;/<code>
<code>SELECT shohin_mei, shiire_tanka
FROM dbo.Shohin
WHERE shohin_bunrui = '廚房用具'
OR hanbai_tanka >= 3000;/<code>
【備註】多個查詢條件進行組合時,需要使用 AND 運算符或者 OR 運算符。
2.通過括號進行強化
<code>--示例1
SELECT shohin_mei,
shohin_bunrui,
torokubi
FROM dbo.Shohin
WHERE shohin_bunrui = '辦公用品'
AND torokubi = '2009-09-11'
OR torokubi = '2009-09-20';/<code>
<code>--示例2
SELECT shohin_mei,
shohin_bunrui,
torokubi
FROM dbo.Shohin
WHERE shohin_bunrui = '辦公用品'
AND (torokubi = '2009-09-11'
OR torokubi = '2009-09-20');/<code>
【備註】AND 運算優先於 OR 運算,想要優先執行 OR 運算時可以使用括號。
閱讀更多 帥氣十足的陳杰 的文章