SQL表达式
SQL表达式是由一个或多个值、运算符和SQL函数组合而成的,最终得到一个值。这些SQL表达式类似于公式,它们在查询语言中编写。您还可以使用它们来查询特定的数据集。
SQL表达式
-
- 布尔型
-
- 数字型
- 日期型
让我们试着通过示例程序详细了解表达式的类型。
SQL 布尔表达式:
SQL布尔表达式根据SQL查询中所提到的条件来获取数据。当执行查询时,它应该只获取一个单值。其语法如下:
SELECT column
FROM table_name
WHERE SINGLE_VALUE_MATCHING_EXPRESSION;
让我们尝试使用带有一些数据的示例表格来理解布尔表达式。
EmpId | EmpName | EmpAge | EmpSalary |
---|---|---|---|
1 | John | 32 | 2000 |
2 | Smith | 25 | 2500 |
3 | Henry | 29 | 3000 |
我们将以上述提到的员工表为例。示例查询:
SELECT EmpName FROM Employee WHERE EmpId = 1;
以上查询将导致单个值,即我们的查询结果为“John”。SQL布尔表达式应与主键一起使用,以确保始终只获取一个结果。这在嵌套的SQL选择查询中是必需的。
select posts.title, posts.author_id from posts, authors
where posts.author_id = authors.id and
posts.author_id = (select id from authors where name = 'Pankaj');
以上的查询将返回所有帖子名称和ID,其中作者名称为Pankaj。在此嵌套的SQL查询中,应始终只返回一行,否则将出现错误消息,即子查询返回多于1行。
SQL 数值表达式
在SQL查询中,使用SQL数字表达式来执行数学运算。其语法如下所示:
SELECT NUMERICAL_EXPRESSION as OPERATION_NAME
FROM table_name
NUMERICAL_EXPRESSION是SQL查询中将要使用的函数的数学公式。让我们通过一个例子来试着理解数值表达式。
SELECT count(*) FROM Employee; -- 3
上述查询结果将会是3,因为COUNT(*)函数将根据WHERE子句中的条件提供行的总计数。例如,从employee表中选择count(*) where empsalary > 2400; 将返回2。还有其他一些函数,比如sum()、avg()、min()、max()等,这些函数用于数学运算。让我们看一些SQL数值表达式的更多示例代码片段。
SELECT sum(EmpSalary) as "Salary" FROM Employee; -- 7500
select min(EmpSalary) from Employee; -- 2000
select max(EmpSalary) from Employee; -- 3000
select sum(EmpSalary) from Employee; -- 7500
select avg(EmpSalary) from Employee; -- 2500.0000
SQL日期表达式
SQL日期表达式的结果是日期时间值。让我们通过一些SQL语句来理解日期表达式。
SELECT CURRENT_TIMESTAMP; -- 2018-01-20 10:32:37
-- For MYQSL
SELECT now(); -- 2018-01-20 10:32:57
-- For SQL Server
SELECT GetDate();
-- For Oracle DB
select sysdate from Dual; -- 20-JAN-18
上述查询将导致系统的当前时间。请注意,每个关系数据库供应商都有特定的方法来获取当前日期和时间戳值,因此存在一个数据库中的一个函数在另一个数据库中不起作用的可能性。关于SQL表达式的全部内容,我们将在后面的SQL教程和程序中经常使用它们。进一步阅读:SQL数据类型。参考资料:Oracle文档。