SQL:二 查詢基礎
阿新 • • 發佈:2020-10-04
SELECT語句基礎
列的查詢
- 通過 SELECT 語句查詢並選取出必要資料 的過程稱為匹配查詢或查詢(query)。
- 查詢結果中列的順序和 SELECT 子句中的順序相同
SELECT <列名 1>,<列名 2>…… FROM <表名>;
查詢出表中所有的列
- 想要查詢出全部列時,可以使用代表所有列的星號(*)
- 如果使用星號的話,就無法設定列的顯示順序了 。這時就會按 照CREATE TABLE 語句的定義對列進行排序。
SELECT * FROM <表名>;
隨意使用換行符
SQL 語句使用換行符或者半形空格來分隔單詞,在任何位置進行分隔都可以, 即使像下面這樣通篇都是換行符也不會影響SELECT語句的執行。但是這樣可能會 由於看不清楚而出錯。原則上希望大家能夠以子句為單位進行換行 (子句過長時, 為方便起見可以換行)。
為列設定別名
- SQL 語句可以使用 AS關鍵字為列設定別名
- 別名可以使用中文,使用中文時需要用雙引號(")括起來
- 查詢出來的結果,列名以別名顯示
SELECT product_id AS id, product_name AS name, purchase_price AS "進貨單價" FROM Product;
常數的查詢
-
SELECT 子句中不僅可以書寫列名,還可以書寫常數
-
SELECT '商品' AS string FROM Product;
- 查詢結果:列名為string,下面所有行中顯示常數,即“商品”
從結果中刪除重複行
- 在SELECT 子句中使用 DISTINCT 來實現刪除重複行
- 在使用DISTINCT 時,NULL 也被視為一類資料。NULL 存在於多 行中時,也會被合併為一條 NULL 資料
- DISTINCT 關鍵字只能用在第一個列名之前
SELECT DISTINCT product_type FROM Product;
根據WHERE語句來選擇記錄
- SELECT 語句通過WHERE 子句來指定查詢資料的條件
- 在 WHERE 子句中可以指定“某一列的值和這個字串相等”或者“某一列的值大於 這個數字”等條件
- 首先通過 WHERE 子句查詢出符合指定條件的記錄,然後再選取出SELECT 語句指定的列
- SQL中子句的書寫順序是固定的,不能隨意更改。WHERE 子句必須 緊跟在FROM 子句之後,書寫順序發生改變的話會造成執行錯誤
SELECT <列名>, …… FROM <表名> WHERE <條件表示式>;
註釋的書寫方法
-
1行註釋
- 書寫在“--”之後,只能寫在同一行
-
多行註釋
- 書寫在 “ /*” 和 “ */ ” 之間,可以跨多行
算術運算子和比較運算子
算術運算子
- 四則運算所使用的運算子(+、-、*、/)稱為算術運算子。
- 運算子就是使用其兩邊的值進行四則運算或者字串拼接、數值大小比較等運算,並返回結果的符號
- 括號中 運算表示式的優先順序會得到提升,優先進行運算
- 運算是以行為單位執行的
SELECT product_name, sale_price, sale_price * 2 AS "sale_price_x2" FROM Product;
需要注意NULL
- 所有包含 NULL 的計算,結果肯定是 NULL
比較運算子
- 符號 = 這樣用來比較其兩邊的列或者值的符號稱為比較運算子
- 一定要讓不等 號在左,等號在右
SELECT product_name, product_type FROM Product WHERE sale_price = 500;
對字串使用不等號時的注意事項
- 字串型別的資料原則上按照字典順序進行排序,不能與數字的大小順序混淆。
不能對NULL使用比較運算子
- SQL 提供了專門用來判斷是否為 NULL 的IS NULL 運算子
- 希望選取不是NULL 的記錄時,需要使用 IS NOT NULL 運 算符
邏輯運算子
NOT運算子
- NOT運算子用來否定某一條件
SELECT product_name, product_type, sale_price FROM Product WHERE NOT sale_price >= 1000;
AND運算子和OR運算子
- 在 WHERE 子句中使用 AND 運算子或者OR 運算子,可以對多個查 詢條件進行組合。
- AND 運算子在其兩側的查詢條件都成立時整個查詢條件才成立,其 意思相當於“並且”。
- OR 運算子在其兩側的查詢條件有一個成立時整個查詢條件都成立, 其意思相當於“或者” 。
SELECT product_name, purchase_price FROM Product WHERE product_type = '廚房用具' AND sale_price >= 3000; SELECT product_name, purchase_price FROM Product WHERE product_type = '廚房用具' OR sale_price >= 3000;
通過括號強化處理
- AND 運算子優先於 OR 運算子
SELECT product_name, product_type, regist_date FROM Product WHERE product_type = '辦公用品' AND ( regist_date = '2009-09-11' OR regist_date = '2009-09-20');
邏輯運算子和真值
- NOT、AND 和 OR 稱為邏輯運算子
- 邏輯就是對真值進行操作的意思。真值就是值為真(TRUE)或假 (FALSE)其中之一的值
含有NULL時的真值
- 真值是除真假之外的第三種值——不確定(UNKNOWN)
- SQL 之外的語言也基本上只使用真 和假這兩種真值。與通常的邏輯運算被稱為二值邏輯相對,只有 SQL 中 的邏輯運算被稱為三值邏輯。