一、关系运算符AND,NOT,OR
- 需注意的是优先级:括号>NOT>AND>OR
USE sql_store;
SELECT *
FROM order_items
WHERE quantity * unit_price >30 AND order_id = 6
二、IN 运算符
当有多个表达式或多个条件,通过OR运算符合并时,可以用IN运算符替换。
SELECT *
FROM sql_store.products
WHERE quantity_in_stock = 49 OR quantity_in_stock = 38 OR quantity_in_stock = 72
替换结果如下:
SELECT *
FROM sql_store.products
WHERE quantity_in_stock IN (49, 38, 72)
括号内的顺序不影响结果。
三、BETWEEN 运算符
- 当比较范围限制条件是“>= 和 <=”时,可以用BETWEEN代替
SELECT *
FROM sql_store.customers
WHERE birth_date >= '1990-01-01' AND birth_date <= '2000-01-01'
SELECT *
FROM sql_store.customers
WHERE birth_date BETWEEN '1990-01-01' AND '2000-01-01'
四、LIKE 运算符
- 使用LIKE进行字符串匹配
- **%**表示任意长个字符
- **-**表示单个字符
SELECT *
FROM sql_store.customers
WHERE address LIKE '%TRAIL%' OR address LIKE '%AVENUE%';
五、REGEXP运算符
正则表达式中有以下规则:
- ^ 表示字符串开头
SELECT *
FROM sql_store.customers
WHERE last_name REGEXP '^MY|SE'
注意不要写成’^MY|%SE%',与LIKE运算符混淆
- $ 表示字符串结尾
SELECT *
FROM sql_store.customers
WHERE last_name REGEXP 'EY$|ON$'
- | 表示或,即多个搜寻条件
SELECT *
FROM sql_store.customers
WHERE first_name REGEXP 'ELKA|AMBUR'
- [] 表示多个字符选择范围,可选择拼接在要求的字符串前或后;[] 中的内容可以表示为一个范围,例如字母a-h,[a-g]表示abcdefg
SELECT *
FROM sql_store.customers
WHERE last_name REGEXP 'B[RU]'
六、IS NULL 运算符
- 搜索缺失了属性的记录
SELECT *
FROM sql_store.orders
WHERE shipped_date IS NULL