📅  最后修改于: 2023-12-03 15:05:20.793000             🧑  作者: Mango
在 SQL 中,有许多种运算符可用于执行各种操作。以下是一些常用的运算符:
SQL 中的算术运算符用于对数字数据执行算术运算。
| 运算符 | 描述 | | --- | --- | | + | 加法 | | - | 减法 | | * | 乘法 | | / | 除法 | | % | 取模(返回除法的余数) |
示例代码:
SELECT (5 + 2) * 10 / 2; -- 等于 35
SELECT 10 / 3; -- 等于 3
SELECT 10 % 3; -- 等于 1
SQL 中的比较运算符用于比较两个值之间的差异。
| 运算符 | 描述 | | --- | --- | | = | 等于 | | != | 不等于 | | <> | 不等于(与 != 相同) | | > | 大于 | | < | 小于 | | >= | 大于等于 | | <= | 小于等于 | | IS NULL | 是否为 NULL | | IS NOT NULL | 是否不为 NULL |
示例代码:
SELECT * FROM customers
WHERE age > 18;
-- 返回所有年龄大于 18 的客户
SELECT * FROM orders
WHERE order_date >= '2020-01-01';
-- 返回 2020 年及以后的所有订单
SELECT * FROM products
WHERE price IS NULL;
-- 返回价格为 NULL 的所有产品
SQL 中的逻辑运算符用于结合多个条件进行复杂的查询。
| 运算符 | 描述 | | --- | --- | | AND | 布尔 AND | | OR | 布尔 OR | | NOT | 布尔 NOT |
示例代码:
SELECT * FROM customers
WHERE age > 18 AND city = 'Beijing';
-- 返回年龄大于 18 且居住在北京的所有客户
SELECT * FROM orders
WHERE order_date >= '2020-01-01'
OR total_amount > 1000;
-- 返回 2020 年及以后的所有订单,以及订单总额超过 1000 的所有订单
SELECT * FROM products
WHERE NOT price IS NULL;
-- 返回价格不为 NULL 的所有产品
SQL 中的模糊查询运算符用于查找满足指定模式的数据。
| 运算符 | 描述 | | --- | --- | | LIKE | 模糊匹配 | | NOT LIKE | 模糊不匹配 |
示例代码:
SELECT * FROM products
WHERE product_name LIKE '%手机%';
-- 返回产品名中包含“手机”字样的所有产品
SELECT * FROM customers
WHERE email NOT LIKE '%@qq.com';
-- 返回邮箱不以“@qq.com”结尾的所有客户
SQL 中的 IN 和 NOT IN 运算符用于指定多个值,从而实现 WHERE 子句中的多个 OR 条件。
| 运算符 | 描述 | | --- | --- | | IN | 指定多个值 | | NOT IN | 排除多个值 |
示例代码:
SELECT * FROM products
WHERE category_id IN (1, 3, 5);
-- 返回商品分类为 1、3 或 5 的所有商品
SELECT * FROM customers
WHERE city NOT IN ('Beijing', 'Shanghai');
-- 返回居住地不在北京或上海的所有客户
SQL 中的 BETWEEN 和 NOT BETWEEN 运算符用于指定一个范围,从而实现 WHERE 子句中的多个 AND 条件。
| 运算符 | 描述 | | --- | --- | | BETWEEN | 指定范围 | | NOT BETWEEN | 排除范围 |
示例代码:
SELECT * FROM products
WHERE price BETWEEN 100 AND 200;
-- 返回价格在 100 到 200 元之间的所有商品
SELECT * FROM orders
WHERE order_date NOT BETWEEN '2020-01-01' AND '2020-12-31';
-- 返回订单日期不在 2020 年之内的所有订单
SQL 中的 EXISTS 和 NOT EXISTS 运算符用于检查子查询是否返回任何行。
| 运算符 | 描述 | | --- | --- | | EXISTS | 子查询至少返回一行 | | NOT EXISTS | 子查询不返回任何行 |
示例代码:
SELECT * FROM customers
WHERE EXISTS (
SELECT * FROM orders
WHERE orders.customer_id = customers.customer_id
);
-- 返回至少有一份订单的所有客户
SELECT * FROM customers
WHERE NOT EXISTS (
SELECT * FROM orders
WHERE orders.customer_id = customers.customer_id
);
-- 返回没有订单的所有客户
这些是 SQL 中一些常用的运算符。使用这些运算符,您可以编写强大而灵活的查询来满足您的需求。