1.注意点
(1)用分号隔开多个sql语句
(2)语句前面加 - -表示注释
(3)字符串用引号引起来’VA'
2. 子句学习
(1)SELECT子句
如何在单一表格中获取数据:SELECT+列名(用逗号隔开,是有序的)
FROM+单一表格名称
SELECT+列名(用逗号隔开,是有序的)(甚至可以有算术表达式eg:points+10)(用AS可以给算术表达式or其他表达式命名 eg: points+10 AS discd_fac 或者是 points+10 AS ‘discd fac’ )
SELECT +* =全选
删除重复项:SELCE DISTINCT +列名
练习题:
(2)WHERE 子句
目的:筛选符合条件的item
常用不等式符号:>;>=;<;<=;!=等价于<>
练习:查询今年下的订单
结合多个条件筛选数据【涉及运算符】
- 同时满足:条件1 AND 条件2
- 只满足其中一个条件:条件1 OR 条件2
- 否定条件:NOT (条件)【与其余运算符一起使用 NOT IN/NOT AND/NOT OR】
- 满足同一列的多个条件之一:列名 IN (条件1,条件2,条件3),【等价于 列名=条件1 OR 列名=条件2 OR列名=条件3】
- 同一列介于两个值之间:列名 BETWEEN 条件1 AND 条件2,【等价于 列名=条件1 AND 列名=条件2】
- 遵循特定字符串模式:列名 LIKE ’xxxx'【可以规定字符串的长度 下划线_代表一个单字符,百分号%表示任意字符数,可放在任意字母的前后】
- 包含某字符串:列名 REGEXP ‘xxx'【^代表字符串的头,$代表字符串的位】【^xxx表示以xxx开头,xxx$表示以xxx结尾】【xxx|aaa 表示查找xxx或者aaa】【方括号[]可以放入单字符串,可以一个一个列,若是一个范围可以用-来连接】【[abc]xxx或者是xxx[abc],查找的是axxx或bxxx或cxxx或者是xxxa或xxxb或者是xxxc】
- 搜寻包含缺失值的记录:列名 IS NULL
【注意:AND和OR可以同时使用,但是AND优先评估再用OR评估】
【用括号表示条件更清晰】
练习1:找到编号为6的订单且其总价格超过30
【运行的时候注意 新的变量不能直接用到WHERE子句中】
练习2:找到库存数量为49,38,72的产品
SELECT *
FROM products
WHERE quantity_in_stock IN (49,38,72)
练习3:找到出生日期介于1990-01-01到2000-01-01之间的客户
SELECT *
FROM customers
WHERE birth_date BETWEEN '1990-01-01' AND '2000-01-01'
练习4:找到地址包括trail或者avenue的顾客;手机号以9结尾的顾客
SELECT *
FROM customers
WHERE address LIKE '%Trail%' OR address LIKE '%Avenue%';
SELECT *
FROM customers
WHERE phone LIKE '%9'
练习5:获取first names是ELKA或者AMBUR的顾客;获取last names是EY或者ON的顾客;获取last names是以MY开头或包括SE的顾客;获取last names 含B且紧随R或U的顾客
SELECT *
FROM customers
WHERE first_name REGEXP 'ELKA|AMBUR';
SELECT *
FROM customers
WHERE last_name REGEXP 'EY$|ON$';
SELECT *
FROM customers
WHERE last_name REGEXP '^MY|SE';
SELECT *
FROM customers
WHERE last_name REGEXP 'B[RU]';
练习6:查找所有还没有发货的订单
SELECT *
FROM orders
WHERE shipped_date IS NULL OR shipper_id IS NULL;
(3)ORDER BY 子句
目的:为数据排序
用法:ORDER BY+列名(可有多列,用逗号隔开)+DESC
可以规定每一列的排序:DESC【降序】;
练习:将orderid为2的订单根据总价格的降序排序
SELECT *,quantity*unit_price AS total_price
FROM order_items
WHERE order_id=2
ORDER BY (quantity*unit_price) DESC
SELECT *,quantity*unit_price AS total_price
FROM order_items
WHERE order_id=2
ORDER BY total_price DESC
(4)LIMIT 子句【放在最后】
目的:限制查询返回的记录
用法: LIMIT +数字/【偏移量,数字】
练习:获取排名前三的忠实顾客
SELECT *
FROM customers
ORDER BY points DESC
LIMIT 3