ZZZZZZ目的
ZZZZZZ代码
ZZZZZZ重点
ZZZZZZ操作(非代码,需要自己手动)
- 得到积分高于3000的顾客
USE sql_store;
SELECT *
From customers
WHERE points > 3000
在MySQL中可以用>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、!=(不等于)、<>(不等于)来进行筛选 -
得到VA州的顾客数据
WHERE state = 'VA'
VA是一个字符串,本质上是文本数据,所以需要用引号,这里的VA用大写或者小写都行
得到不是VA州的顾客数据
WHERE state != 'VA'
或者
WHERE state <> 'VA' -
得到在1990年1月1日之后出生的顾客数据
WHERE birth_date > '1990-01-01'
日期也可以用运算符来进行筛选,但是需要注意,日期也需要用引号进行标注
【练习题】
输出2019年1月1日之后生成的订单
SELECT *
From orders
WHERE order_date >= '2019-01-01'
- 得到在1990年1月1日之后出生,且积分大于1000的顾客数据
WHERE birth_date >= '1990-01-01' AND points > 1000
MySQL有AND(且),OR(或)来对数据进行筛选 - 得到在1990年1月1日之后出生,或者积分大于1000且住在VA州的顾客数据
WHERE birth_date >= '1990-01-01' OR points > 1000 AND state = 'VA'
输出结果是1990年1月1日之后出生的顾客,和积分大于1000且住在VA州的顾客数据,并不是1990年1月1日或者积分大于1000,且住在VA的顾客数据
需要注意,MySQL会先运算AND,所以如果想要让MySQL识别运算顺序,可以用括号
WHERE birth_date >= '1990-01-01' OR ( points > 1000 AND state = 'VA' ) - 得到不是在1990年1月1日之后出生,且积分不是大于1000的顾客数据
WHERE NOT (birth_date >= '1990-01-01' OR ( points > 1000 ))
【练习题】
在order_items表格中,获取编号为6,且总价超过30的项目
SELECT *
FROM order_items
WHERE order_id = 6 AND quantity * unit_price > 30
注意,这三行代码是连续的,中间不能有分号,分号表示需要中止语句
因为需要换表格,所以当时是在左边的Schemas栏中点击order_items的表格,发现右边写代码的地方会自动出现代码SELECT * FROM sql_store.order_items;,所以当时是直接在这个基础上写的,但是发现一直报错,最后发现是分号的问题
(之前的代码)
SELECT * FROM sql_store.order_items;
WHERE order_id = 6 AND quantity * unit_price > 30
因为分号表示语句终止了,但是SELECT、WHERE、AND是需要连在一起使用的,所以会报错

被折叠的 条评论
为什么被折叠?



