單列查詢
prod_id爲列名,milk_tea爲表名, “9折” 爲新列的值,discount1爲新列的列名,sale_price * 0.9是對sale_price列乘0.9,new_sale1爲查詢列的列名
-- 查詢表已有的列
SELECT prod_id FROM milk_tea;
-- 查詢表沒有的列
SELECT "9折" AS discount1 FROM milk_tea;
-- 對錶已有的列進行四則運算並查詢
SELECT sale_price * 0.9 AS new_sale1 FROM milk_tea;
多列查詢
prod_id, prod_name等爲列名,milk_tea爲表名
-- 查詢表已有的列
SELECT prod_id, prod_name FROM milk_tea;
-- 查詢表已有的列和進行四則運算之後的列
SELECT prod_name, in_price, sale_price, sale_price * 0.9 AS new_sale1 FROM milk_tea;
SELECT prod_name, in_price, sale_price, (sale_price * 0.9 - in_price) AS new_profit1 FROM milk_tea;
整表查詢
* 表示所有列(也可以列所有列名), milk_tea爲表名
SELECT * FROM milk_tea;
排序
-- 按 cost 列升序排列
SELECT * FROM prod_info ORDER BY cost;
-- 按 sale_price 列降序排列
SELECT * FROM prod_info ORDER BY sale_price DESC;
去重
-- 對 prodname 列去重
SELECT DISTINCT prodname FROM order_list;
過濾
-- 過濾 sale_price > 10 的行
SELECT * FROM milk_tea WHERE sale_price > 10;
過濾和排序
-- 要求利潤(sale_price – in_price)大於5。如果sale_price爲空的話,默認設置爲20,並對結果進行降序排列
SELECT prod_name FROM milk_tea WHERE (IFNULL(sale_price, 20) - in_price) > 5 ORDER BY sale_price DESC;
模糊查詢
下劃線:WHERE <列名> LIKE ‘…_…’,表示一個字符,知道字符的位置;
百分號:WHERE <列名> LIKE ‘…%…’,表示0或多個字符,知道字符的位置。
-- prod_name是‘薯’開頭或者‘糖’結尾的。
SELECT * FROM milk_tea WHERE prod_name LIKE '薯%' OR prod_name LIKE '%糖';
-- prod_name是‘薯’開頭或者‘糖’結尾的,且只有2個字。
SELECT * FROM milk_tea WHERE prod_name LIKE '薯_' OR prod_name LIKE '_糖';
-- prod_name是‘奶’開頭並且‘茶’結尾的。
SELECT * FROM milk_tea WHERE prod_name LIKE '奶%' AND prod_name LIKE '%茶';
聚合函數和分組
-- 查詢樣本有多少行
SELECT COUNT(*) FROM prod_info;
SELECT COUNT(1) FROM prod_info;
SELECT COUNT(prod_id) FROM prod_info;
-- 查詢每個 class 有多少行
SELECT class, COUNT(*) FROM prod_info GROUP BY class;
-- 查詢多少顧客購買了商品
SELECT COUNT(DISTINCT cust_name) FROM order_list;
分組之後的過濾
-- 各類別中,產品數量在5件以上
SELECT class, COUNT(class) FROM prod_info GROUP BY class HAVING COUNT(class) > 5;
信息拼接
‘的地址爲’, addr, ‘、’,聯繫電話爲’、’。‘爲拼接字符串,supplier_name、addr、tel爲表的列,supplier_info爲表名;’ | '爲列與列之間聯繫的字符
-- 不同字符拼接
SELECT *, CONCAT(supplier_name, '的地址爲', addr, ',聯繫電話爲', tel, '。') AS 供應商信息 FROM supplier_info;
-- 相同字符拼接
SELECT *, CONCAT_WS(' | ', supplier_name, addr, tel) AS 供應商信息 FROM supplier_info;