SQL学习day1

 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. 同时满足:条件1 AND 条件2
  2. 只满足其中一个条件:条件1 OR 条件2
  3. 否定条件:NOT (条件)【与其余运算符一起使用 NOT IN/NOT AND/NOT OR】
  4. 满足同一列的多个条件之一:列名 IN (条件1,条件2,条件3),【等价于 列名=条件1 OR 列名=条件2 OR列名=条件3】
  5. 同一列介于两个值之间:列名 BETWEEN 条件1 AND 条件2,【等价于 列名=条件1 AND 列名=条件2】
  6. 遵循特定字符串模式:列名 LIKE ’xxxx'【可以规定字符串的长度 下划线_代表一个单字符,百分号%表示任意字符数,可放在任意字母的前后
  7. 包含某字符串:列名 REGEXP ‘xxx'【^代表字符串的头,$代表字符串的位】【^xxx表示以xxx开头,xxx$表示以xxx结尾】【xxx|aaa 表示查找xxx或者aaa】【方括号[]可以放入单字符串,可以一个一个列,若是一个范围可以用-来连接】【[abc]xxx或者是xxx[abc],查找的是axxx或bxxx或cxxx或者是xxxa或xxxb或者是xxxc】
  8. 搜寻包含缺失值的记录:列名 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值