SQL - 表达式
- 什么是 SQL 表达式?
- SQL 布尔表达式
- SQL 数值表达式
- SQL 日期表达式
什么是 SQL 表达式?
SQL 表达式是由一个或多个值、运算符和 SQL 函数组合而成,它们最终被求值为一个值。这些 SQL 表达式类似于公式,用查询语言编写。您还可以用它们查询数据库以获取特定数据集。
表达式用于 SQL 查询的 WHERE 子句中。如您可能已知,WHERE 子句指定了一个条件,用于从数据库表中过滤记录。该条件由单个或多个表达式组成。这些表达式进一步分为三种类型 —
- 布尔表达式
- 数值表达式
- 日期和时间表达式
在本章中,我们将详细讨论这些表达式。
语法
考虑以下包含一些表达式的基本 SELECT 语句语法 —
SELECT column1, column2, columnN FROM table_name WHERE [CONDITION|EXPRESSION];
SQL 布尔表达式
SQL 布尔表达式是返回 Boolean 数据类型的 SQL 表达式。这些表达式可以分为两种类型 —
- 使用 SQL 比较运算符检查两个值相等的布尔表达式。在此,这些值的相等性是一个条件。
- 布尔表达式还可以包含一个值与 SQL 逻辑运算符配对。在这种情况下,指定的逻辑充当条件。
它们返回 TRUE、FALSE 或 UNKNOWN 作为结果。如果条件满足,这些表达式返回 TRUE;否则返回 FALSE。当表达式中的任一操作数为 NULL 值时,返回 UNKNOWN。
语法
以下是布尔表达式的语法 —
SELECT column1, column2, columnN FROM table_name WHERE BOOLEAN EXPRESSION;
示例
考虑以下记录的 CUSTOMERS 表 —
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | Hyderabad | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
以下查询是一个简单的示例,展示了 SQL 布尔表达式的使用 —
SELECT * FROM CUSTOMERS WHERE SALARY = 10000;
输出
输出将显示为 —
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 7 | Muffy | 24 | Indore | 10000.00 |
SQL 数值表达式
SQL 数值表达式由两个操作数和一个 SQL 算术运算符组成。这些表达式用于在任何查询中执行数学运算。因此,操作数必须始终是数字,返回值也将始终是数字。
语法
以下是语法 —
SELECT numerical_expression as OPERATION_NAME FROM table_name WHERE NUMERICAL EXPRESSION ;
这里,numerical_expression 用于数学表达式或任何公式。
示例
以下是一个简单的示例,展示了 SQL 数值表达式的使用 —
SELECT 15 + 6;
输出
输出表检索为 —
21
示例
有几个内置函数如 avg()、sum()、count() 等,用于对表或特定表列执行所谓的聚合数据计算。
SELECT COUNT(*) FROM CUSTOMERS;
输出
输出显示如下 —
7
SQL 日期表达式
SQL Date Expressions 用于将日期相关值与当前系统日期和时间值进行比较。例如,在一家制造公司中,可以使用 WHERE 子句中的日期表达式来按年份分隔每年制造的物品。从一年的第一天到最后一天计数,将检索每个物品的计数;一旦收集到所需信息,公司就可以将这些信息用于自己的目的。
语法
以下是语法 −
SELECT column_name(s) FROM table_name WHERE DATE EXPRESSION ;
示例
在本示例中,我们尝试使用 CURRENT_TIMESTAMP 简单检索系统的当前时间戳。
SELECT CURRENT_TIMESTAMP;
输出
输出表格显示为 −
| Current_Timestamp |
|---|
| 2009-11-12 06:40:23 |
示例
考虑 ORDERS 表中的以下 Customer Order 记录:
| ORDER_ID | CUSTOMER_ID | DATE | ORDER_AMOUNT | ITEM_COUNT |
|---|---|---|---|---|
| 102 | 3 | 2009-10-08 00:00:00 | 3000 | 4 |
| 100 | 3 | 2009-10-08 00:00:00 | 1500 | 2 |
| 101 | 2 | 2009-11-20 00:00:00 | 1560 | 7 |
| 103 | 4 | 2008-05-20 00:00:00 | 2060 | 3 |
现在让我们检索 2008 年 6 月 1 日之前记录:
SELECT * FROM ORDERS WHERE DATE < '2008/06/01';
输出
输出表格显示为 −
| ORDER_ID | CUSTOMER_ID | DATE | ORDER_AMOUNT | ITEM_COUNT |
|---|---|---|---|---|
| 103 | 4 | 2008-05-20 00:00:00 | 2060 | 3 |