【SQL】MySQL快速入门系列2
介绍MySQL的基础操作
基础概念
- 书写顺序
SELECT [DISTINCT]
FROM
JOIN [LEFT JOIN/RIGHT JOIN]
ON
WHERE
GROUP BY
HAVING
UNION
ORDER BY
LIMIT
- 执行顺序
FROM
ON
JOIN
WHERE
GROUP BY
HAVING
SELECT [DISTINCT]
UNION
ORDER BY
LIMIT
- ERD(实体关系模型)
表格Product
PK(主键): product_id
product_id | product_name | product_type | sale_price | purchase_price | regist_date |
---|---|---|---|---|---|
0001 | T恤衫 | 衣服 | 1000 | 500 | 2009-09-20 |
0002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 |
0003 | 运动T恤 | 衣服 | 4000 | 2800 | 2009-09-20 |
0004 | 菜刀 | 厨房用具 | 3000 | 2800 | 2009-01-15 |
0005 | 高压锅 | 厨房用具 | 6800 | 5000 | 2009-09-20 |
0006 | 叉子 | 厨房用具 | 500 | 450 | 2008-04-28 |
0007 | 擦菜板 | 厨房用具 | 880 | 790 | 2008-05-18 |
0008 | 圆珠笔 | 办公用品 | 100 | 75 | 2009-11-11 |
SELECT基础语句
[]
表示可以添加或省略的内容
- 语法规则
-- 部分列(AS为别名)
SELECT product_id [AS id], product_name [AS name]
FROM Product;
-- 部分列(常数)
SELECT product_id [AS id], product_name [AS name], '2020-02-02' AS date
FROM Product;
-- 所有列
SELECT *
FROM Product;
-- 非重复行
SELECT DISTINCT product_id, product_type
FROM Product;
-- 限制结果
SELECT product_id, product_name
FROM Product
LIMIT 3;
-- 排序结果
SELECT product_id, product_name
FROM Product
ORDER BY product_id [, product_name [DESC/ASC]];
-- 过滤数据(比较和算数运算符)
SELECT product_id, sale_price
FROM Product
WHERE sale_price [[+-*/] 2] >[>=, <, <=, =, <>,] 520;
-- 过滤数据(逻辑运算符)
SELECT product_id, sale_price, product_type
FROM Product
WHERE [NOT] sale_price > 520
[AND, OR] product_type = '办公用品';
- 举例
-- 从Product表中取出“编号(product_id)和商品名称(product_name)”的商品
SELECT product_id AS id, product_name AS name
FROM Product;
-- 从Product表中取出“编号(product_id)、商品名称(product_name)和设置常数日期”的商品
SELECT product_id AS id, product_name AS name, '2020-02-02' AS date
FROM Product;
-- 从Product表中取出商品的所有信息
SELECT *
FROM product;
-- 从Product表中取出“编号(product_id)和商品名称(product_name)”的商品,不包含重复的数据
SELECT DISTINCT product_id AS id, product_name AS name
FROM Product;
-- 从Product表中取出“编号(product_id)和商品名称(product_name)”的商品,保留三行数据
SELECT product_id AS id, product_name AS name
FROM Product
LIMIT 3;
-- 从Product表中取出“编号(product_id)和商品名称(product_name)”的商品,按编号(product_id)降序排列
SELECT product_id AS id, product_name AS name
FROM Product
ORDER BY product_id DESC;
-- 从Product表中取出“2倍销售价格(sale_price)大于520”的商品
SELECT product_id, sale_price
FROM Product
WHERE sale_price * 2 > 520;
-- 从Product表中取出“2倍销售价格(sale_price)大于520且商品种类(product_type)为办公室用品”的商品
SELECT product_id, sale_price
FROM Product
WHERE sale_price * 2 > 520
AND product_type = '办公用品';
参考
- Forta, B., & 刘晓霞钟鸣. MySQL 必知必会. 人民邮电出版社, 2009.
- Mick. SQL基础教程2. 人民邮电出版社, 2017.
- Mick. SQL进阶教程. 人民邮电出版社, 2017.