单列查询
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;