SQL 表达式
SQL表达式是什么
SQL表达式是一个由一个或多个值、运算符和SQL函数组合而成的表达式,这些表达式都会被求值为一个值。这些SQL表达式就像公式一样,它们是用查询语言编写的。您也可以使用它们来查询数据库的特定数据集。
表达式被用于SQL查询的WHERE子句中。正如你可能已经知道的,WHERE子句指定了一个条件,该条件需要满足以便从数据库表中过滤记录。这个条件由单个或多个表达式组成。这些表达式可以进一步分为三种类型−
- 布尔表达式
- 数值表达式
- 日期和时间表达式
让我们在本章中详细讨论每种表达式。
语法
考虑包含一些表达式的SELECT语句的基本语法如下−
SELECT column1, column2, columnN
FROM table_name
WHERE [CONDITION|EXPRESSION];
SQL布尔表达式
SQL布尔表达式是一种仅返回布尔数据类型结果的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
日期表达式
日期表达式用于将与当前系统日期和时间值相关的日期值进行比较。例如,在制造公司中,可以使用日期表达式在WHERE子句中对每年生产的物品进行分拣。从一年的第一天到最后一天进行计数,将检索到每个物品的数量;一旦收集到所需信息,公司可以根据自己的目的使用这些信息。
语法
以下是语法 –
SELECT column_name(s)
FROM table_name
WHERE DATE EXPRESSION ;
示例
在这个示例中,我们尝试使用CURRENT_TIMESTAMP简单地获取系统的当前时间戳。
SELECT CURRENT_TIMESTAMP;
输出
输出表格如下所示:
Current_Timestamp
---
2009-11-12 06:40:23
示例
考虑在一个订单表中的以下客户订单记录:
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 |