- 🚀上一章练习答案
题目:查询
sql_store
数据库中customers
表,要求points
列的值大于500并且小于2500,并且last_name
列数据里存在h字符的数据,或者city
为Arlington、Visalia的所有数据。
SELECT
*
FROM
sql_store.customers AS c
WHERE
c.points NOT BETWEEN 500 AND 2500
AND c.last_name LIKE '%h%'
OR c.city IN ('Arlington', 'Visalia');
REGEXP 正则
REGEXP
正则是一个独立的知识点,并非只在SQL
中存在,正则语法过于强大且抽象,此处仅介绍几个常用且简单的使用方法。
$
:结尾符,定义以什么内容结尾。
^
:首字符,定义以什么内容开始。
|
:与OR
关键字效果一样,表示或。
[]
:表示与其中的每一个结合后进行匹配。
- 查询
customers
表中,以a结尾的城市。
SELECT *
FROM sql_store.customers AS c
WHERE c.city REGEXP 'a$';
- 查询
customers
表中,以v开头的城市。
SELECT *
FROM sql_store.customers AS c
WHERE c.city REGEXP '^v';
- 查询
customers
表中,first_name
列为Romola或Levy的数据。
SELECT *
FROM sql_store.customers AS c
WHERE c.first_name REGEXP 'Romola|Levy';
-- 如果使用OR,则是:
SELECT *
FROM sql_store.customers AS c
WHERE c.first_name = "Romola" OR c.first_name = "Levy";
- 查询
customers
表中,state
列中值是ca或co的数据。
-- 我愿称为提取公因素查找法😄
SELECT *
FROM sql_store.customers AS c
WHERE c.state REGEXP 'c[ao]';