《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;



多行注释之间可以嵌套其他的单行注释,但是不能嵌套其他的多行注释。