《Oracle 入门教程》第 04 篇 简单查询语句
作者: 不剪发的Tony老师
毕业于北京航空航天大学,十多年数据库管理与开发经验,目前在一家全球性的金融公司从事数据库架构设计。CSDN学院签约讲师以及GitChat专栏作者。csdn上的博客收藏于以下地址:https://tonydong.blog.csdn.net
文章目录
4.1 查询指定字段
4.2 查询全部字段
4.3 使用表达式
4.4 设置一个新标题
4.5 查询中的注释
本篇介绍如何使用SELECT语句查询单个表中的数据。
4.1 查询指定字段
在 Oracle 中,使用SELECT语句查询表中的数据,基本语法如下:
SELECT column1, column2, ...
FROM table_name;
其中,SELECT表示查询,后面是需要返回的字段,多个字段使用逗号分隔;FROM表示要从哪个表中进行查询;分号表示 SQL 语句的结束。
📝SELECT和FROM称为 SQL 关键字。关键字不区分大小写,建议大写,便于阅读;表名和字段名等标识符一般小写。关于 SQL 编程风格,可以参考这篇文章。
例如,以下查询返回了员工表中的姓名和性别字段:
SELECT emp_name, sex
FROM employee;
EMP_NAME|SEX |
--------|----|
刘备 |男 |
关羽 |男 |
张飞 |男 |
...
Oracle 中存储的表名和字段名都使用大写字母表示,返回的结果也使用大写形式。
4.2 查询全部字段
如果想要查看员工的所有字段信息,可以使用以下查询语句:
SELECT emp_id, emp_name, sex, dept_id, manager,
hire_date, job_id, salary, bonus, email
FROM employee;
EMP_ID|EMP_NAME|SEX |DEPT_ID|MANAGER|HIRE_DATE |JOB_ID|SALARY|BONUS|EMAIL |
------|--------|----|-------|-------|-------------------|------|------|-----|-------------------|
1|刘备 |男 | 1| |2000-01-01 00:00:00| 1| 30000|10000|liubei@shuguo.com |
2|关羽 |男 | 1| 1|2000-01-01 00:00:00| 2| 26000|10000|guanyu@shuguo.com |
3|张飞 |男 | 1| 1|2000-01-01 00:00:00| 2| 24000|10000|zhangfei@shuguo.com|
...
以上查询在 SELECT 关键字之后列出了员工表中的全部字段。
另一种快速返回全部字段的方法就是使用星号(*)表示:
SELECT *
FROM employee;
EMP_ID|EMP_NAME|SEX |DEPT_ID|MANAGER|HIRE_DATE |JOB_ID|SALARY|BONUS|EMAIL |
------|--------|----|-------|-------|-------------------|------|------|-----|-------------------|
1|刘备 |男 | 1| |2000-01-01 00:00:00| 1| 30000|10000|liubei@shuguo.com |
2|关羽 |男 | 1| 1|2000-01-01 00:00:00| 2| 26000|10000|guanyu@shuguo.com |
3|张飞 |男 | 1| 1|2000-01-01 00:00:00| 2| 24000|10000|zhangfei@shuguo.com|
...
Oracle 服务器在接收到星号时会自动替换为上面的全部字段。
⚠️星号可以便于快速编写一些临时查询,但是在实际项目中不要使用这种写法。因为应用程序可能并不需要所有的字段,避免返回过多的无用数据;另外,当表结构发生变化时,星号返回的信息也会发生改变。
4.3 使用表达式
除了查询表中的字段之外,SELECT 查询列表还支持基于字段的算术运算、函数和表达式等。例如:
SELECT emp_name, salary * 12 + bonus
FROM employee;
EMP_NAME|SALARY*12+BONUS|
--------|---------------|
刘备 | 370000|
关羽 | 322000|
张飞 | 298000|
...
其中,salary * 12 + bonus 是一个表达式,计算了员工一年的总收入。
以下示例是 Oracle 中常见的一种查询方式:
SELECT current_date, 1 + 1
FROM dual;
CURRENT_DATE |1+1|
-------------------|---|
2020-11-02 20:47:08| 2|
其中,dual 是 Oracle 为了快速查找信息和进行计算提供的一个虚拟表,它只有一个字段且只包含一行数据;current_date 是一个系统函数,返回了当前的日期和时间。
4.4 设置一个新标题
Oracle 默认返回的字段标题有时候不方便理解,尤其是使用了表达式或者函数之后。为了提高查询结果的可读性,可以使用别名(alias)为字段指定一个临时的名称。我们为上一节中的示例指定一些更好理解的标题:
SELECT emp_name AS "员工姓名", salary * 12 + bonus "全年收入"
FROM employee;
员工姓名|全年收入|
------|-------|
刘备 |370000 |
关羽 |322000 |
张飞 |298000 |
...
Oracle 中使用关键字AS指定字段的别名,可以省略;别名一般通过双引号进行引用。在 SQL 语句中使用别名不会修改数据库中存储的表名或者列名,别名只在当前语句中有效。
⚠️除了字段别名之外,Oracle 还支持为查询语句中的表指定一个别名,我们将会在多表连接查询中进行介绍。
4.5 查询中的注释
在 SQL 语句中可以像其他编程语言一样使用注释;注释可以方便我们理解代码的作用,但是不会被 Oracle 服务器执行。
Oracle 中的注释分为单行注释和多行注释。单行注释以两个连字符(--)开始,直到这一行结束。例如:
-- Oracle 列别名的使用案例
SELECT emp_name AS "员工姓名", salary * 12 + bonus "全年收入"
FROM employee;
多行注释使用 C 语言风格的注释方法(/* … */),例如:
/* 备注:Oracle 列别名的使用案例
作者:TonyDong
日期:2020-11-02
*/
SELECT emp_name AS "员工姓名", salary * 12 + bonus AS "全年收入"
FROM employee;
多行注释之间可以嵌套其他的单行注释,但是不能嵌套其他的多行注释。