跳转到内容

Oracle 数据库/SELECT 语句

来自 Wikibooks,开放世界中的开放书籍

列出 SQL SELECT 语句的功能

[编辑 | 编辑源代码]

SELECT 语句从数据库中检索数据。使用 SELECT 语句,您可以使用以下功能

  • 投影:选择查询返回的表中的列。
  • 选择:使用某些条件来限制结果,选择查询返回的表中的行。
  • 连接:通过指定它们之间的链接,将存储在不同表中的数据组合在一起。

执行基本 SELECT 语句

[编辑 | 编辑源代码]
    SELECT *|{[DISTINCT] column|expression [[AS] alias],...}
    FROM    table;
  1. SQL 语句不区分大小写。
  2. SQL 语句可以输入在一行或多行上。
  3. SELECT、FROM 等关键字不能缩写或拆分到多行。
  4. 在 SQL Developer 中,SQL 语句可以选择性地用分号 (;) 终止。当您执行多个 SQL 语句时,分号是必需的。
  5. 在 SQL*Plus 中,您需要在每个 SQL 语句的末尾用分号 (;) 结尾。
  • 选择所有列
    SELECT *
    FROM   hr.employees;
  • 选择特定列
    SELECT employee_id, last_name, hire_date
    FROM   hr.employees;
  • 排除重复行
    SELECT DISTINCT last_name
    FROM   hr.employees;
  • 使用算术运算符
    • 运算符优先级与普通数学相同,(即。/ * + -)
    • 包含空值的算术表达式计算结果为空
    SELECT last_name, salary, (salary+100-20)*105/100
    FROM   hr.employees;
  • 使用列标题默认值
    • SQL Developer
      • 默认标题显示:大写
      • 默认标题对齐方式:左对齐
    • SQL*Plus
      • 默认标题显示:大写
      • 字符和日期列标题:左对齐
      • 数字列标题:右对齐
  • 使用列别名
    • 重命名列标题
    • 列名和别名之间的 AS 关键字是可选的
    • 如果包含空格、特殊字符或区分大小写,则需要双引号
    SELECT last_name AS name, commission_pct comm, salary*12 "Annual Salary"
    FROM   hr.employees;
  • 文字字符字符串
    • 日期和字符文字值必须用单引号括起来
    • 每个字符字符串都会为返回的每一行输出一次
    SELECT last_name || ' annually earns ' || salary*12
    FROM   hr.employees;
  • 转义单引号字符,使用两个单引号
    SELECT last_name || '''s employee no is ' || employee_id
    FROM   hr.employees;
  • 转义单引号字符,使用备用引号 (q) 运算符
    SELECT last_name || q'<'s employee no is >' || employee_id
    FROM   hr.employees;
  • 了解 DESCRIBE 命令以显示表结构
    DESC[RIBE] table

描述 SQL 中可用的各种类型转换函数

[编辑 | 编辑源代码]

隐式数据类型转换

当 Oracle 尝试将与函数定义的参数不匹配的值转换为所需数据类型时,会发生隐式转换。

显式数据类型转换 显式转换发生在调用 TO_CHAR 等函数以更改值的​​数据类型时。

使用 TO_CHAR、TO_NUMBER 和 TO_DATE 转换函数

[编辑 | 编辑源代码]
  • 嵌套多个函数
  • 将 NVL、NULLIF 和 COALESCE 函数应用于数据

在 SELECT 语句中应用条件表达式

[编辑 | 编辑源代码]
  • 在 SELECT 语句中使用条件 IF THEN ELSE 逻辑


描述 SQL 中可用的各种类型的函数

[编辑 | 编辑源代码]
  • 描述单行函数和多行函数之间的区别

单行函数每行返回一个结果。

单行函数

 Manipulate data items
 Accept arguments and return one value
 Act on each row that is returned
 Return one result per row
 May modify the data type
 Can be nested
 Accept arguments that can be a column or an expression

字符函数

 Case manipulation functions
   LOWER
   UPPER
   INITCAP

在 SELECT 语句中使用字符、数字和日期函数

[编辑 | 编辑源代码]
  • 使用 SELECT 和 WHERE 子句中的字符函数操作字符串
  • 使用 ROUND、TRUNC 和 MOD 函数操作数字
  • 使用日期数据执行算术运算
  • 使用日期函数操作日期


识别可用的分组函数

[编辑 | 编辑源代码]

描述分组函数的使用

[编辑 | 编辑源代码]

使用 GROUP BY 子句对数据进行分组

[编辑 | 编辑源代码]

使用 HAVING 子句包含或排除分组行

[编辑 | 编辑源代码]

编写 SELECT 语句以使用等值连接和非等值连接访问多个表中的数据

[编辑 | 编辑源代码]

使用自连接将表连接到自身

[编辑 | 编辑源代码]

使用外连接查看通常不符合连接条件的数据

[编辑 | 编辑源代码]

生成来自两个或多个表的全部行的笛卡尔积

[编辑 | 编辑源代码]
华夏公益教科书