PostgreSQL SELECT語句


查詢列

SELECT語句,用於從表中選取數據。
格式:

SELECT <列名>,... FROM <表名>; 

從Product表中,查詢三列。

SELECT product_id, product_name, purchase_price FROM Product; 

在這里插入圖片描述

查詢所有列,格式:

SELECT * FROM <表名>; 

星號代表全部列。

SELECT * FROM Product; 

在這里插入圖片描述

可以用AS關鍵字給列設定別名。

SELECT product_id     AS "商品編號",
       product_name   AS "商品名稱",
       purchase_price AS "進貨單價"
FROM Product;

在這里插入圖片描述

去除重復數據DISTINCT

SELECT DISTINCT product_type
FROM Product; 

在這里插入圖片描述

這里的去除並不是真的就把重復的數據給刪了,只是展示出來的數據是不重復的。

在這里插入圖片描述

也可以在多列之前使用DISTINCT。

SELECT DISTINCT product_type, regist_date FROM Product; 

在這里插入圖片描述

WHERE子句

SELECT語句使用WHERE子句,查詢出符合指定條件的數據。

格式:

SELECT <列名>,... FROM <表名> WHERE <條件表達式>; 

例子:選取product_type = '衣服’的商品。

SELECT product_name, product_type FROM Product WHERE product_type = '衣服'; 

在這里插入圖片描述

也可以按下面這個方式

SELECT product_name
FROM Product
WHERE product_type = '衣服'; 

在這里插入圖片描述

注釋

一行注釋:

-- 本SELECT語句會從結果中刪除重復行。 SELECT DISTINCT product_id, purchase_price FROM Product; 

多行注釋:

/* 本SELECT語句, 會從結果中刪除重復行。*/ SELECT DISTINCT product_id, purchase_price FROM Product; 

算術運算符

算術運算符:+、-、*、/。

運算表達式中也可以用括號。

SELECT product_name, sale_price, sale_price * 2 AS “sale_price_x2" FROM Product; 

在這里插入圖片描述

含有NULL的運算,結果都是NULL。

比較運算符

=表示等於、<>表示不等於、>=、<=、>、<。

SELECT product_name, product_type FROM Product WHERE sale_price = 500; 

在這里插入圖片描述

SELECT product_name, product_type FROM Product WHERE sale_price <> 500; 

在這里插入圖片描述

比較運算符,可以對幾乎所有數據類型進行比較。

對字符串比較的時候,按照字典順序比較。比如‘10’比‘2’小。

SELECT product_name, product_type, regist_date FROM Product WHERE regist_date < '2222-06-01'; 

在這里插入圖片描述

WHERE子句的條件表達式中,可用計算表達式。

SELECT product_name, sale_price, purchase_price FROM Product WHERE sale_price - purchase_price >= 500; 

在這里插入圖片描述

不能對NULL使用比較運算符。

如果選取NULL的記錄,使用IS NULL運算符。

SELECT product_name, purchase_price FROM Product WHERE purchase_price IS NULL; 

在這里插入圖片描述

選取不是NULL的記錄,使用IS NOT NULL運算符。

SELECT product_name, purchase_price FROM Product WHERE purchase_price IS NOT NULL; 

在這里插入圖片描述

邏輯運算符

NOT運算符:用於否定某一條件。

下面等價於WHERE sale_price < 1000;

SELECT product_name, product_type, sale_price FROM Product WHERE NOT sale_price >= 1000; 

在這里插入圖片描述

AND運算符:

SELECT product_name, purchase_price FROM Product WHERE product_type = '廚房用具' AND sale_price >= 3000; 

OR運算符:

SELECT product_name, purchase_price FROM Product WHERE product_type = '廚房用具' OR sale_price >= 3000; 

在這里插入圖片描述

AND運算符的優先級高於OR運算符,如果想要選出product_type = ‘辦公用品’,而且登記日期為2222-02-22或2222-06-22,按照下面這個方式是不行的。

SELECT product_name, product_type, regist_date FROM Product WHERE regist_date = '2222-02-22' OR regist_date = '2222-06-22' AND product_type = '辦公用品'; 

在這里插入圖片描述

要優先執行OR運算符可以使用括號,如下所示。

SELECT product_name, product_type, regist_date FROM Product WHERE product_type = '辦公用品' AND ( regist_date = '2222-02-22' OR regist_date = '2222-06-22'); 

在這里插入圖片描述

比較運算符會把運算結果以真值形式返回,結果成立為真,不成立為假。

可以通過創建真值表,理解一些復雜的條件。

SELECT product_name, purchase_price FROM Product WHERE purchase_price = 2800; 
SELECT product_name, purchase_price FROM Product WHERE NOT purchase_price = 2800; 
SELECT product_name, purchase_price FROM Product 

經觀察發現,SQL中真值還有一種,叫UNKNOWN,既不真也不假,稱之為不確定。

這是因為數據含有NULL。

因此,SQL中邏輯運算被稱為三值邏輯。

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM