第二章 简单的 SQL 语句
本章要点 创建一个简单的表 SQL 语句介绍 最简单的查询语句 select 带有限制条件的查询 查询结果的排序显示
创建一个简单的表 CREATE TABLE employee ( id varchar2(10) primary key, name varchar2(10), age number(3), birth date);
表中的常用字段类型 char(n) 定长字符串 varchar2(n) 变长字符串 mumber(m,p) 数字类型 date 日期类型
对表的最简单操作 查看表中的数据 SELECT * FROM employee; 查看表的结构 DESC employee
SQL 语句基础 SQL 被称为结构化查询语言 (Structured Query Language ) SQL 是操作和检索关系型数据库的标准语言 使用 SQL 语句,程序员和数据库管理员可以完成如下的任务 改变数据库的结构 更改系统的安全设置 增加用户对数据库或表的许可权限 在数据库中检索需要的信息 对数据库的信息进行更新
SQL 语句分类 select 查询语句 DML 语句(数据操作语言) INSERT / UPDATE / DELETE / MERGE DDL 语句(数据定义语言) CREATE / ALTER / DROP / TRUNCATE DCL 语句(数据控制语言) GRANT / REVOKE 事务控制语句 COMMIT / ROLLBACK / SAVEPOINT
SQL 语句的书写规则 在 Oracle 数据库中, SQL 语句大小写不敏感 SQL 语句可单行或多行书写 在 SQL 语句中,关键字不能跨多行或缩写 为了提高可读性,一般关键字大写,其他小写 子句通常位于独立行,便于编辑,提高可读性 空格和缩进使程序易读
最简单的 select 语句 SELECT{*, column [alias],...} FROMtable; 说明: SELECT 选择查询列表 FROM 提供数据源
Select 语句中的算数表达式 对 NUMBER 型数据可以使用算数操作符 创建表达式( + - * / ) 对 DATE 型数据可以使用部分算数操作符 创建表达式 ( + - )
运算符的优先级 乘法和除法的优先级高于加法和减法 同级运算的顺序是从左到右 表达式中使用括号可强行改变优先级的 运算顺序
字符串的连结操作符 将列或字符与其它列连结 用双竖线表示 (||) 产生的结果列是另一个字符表达式
空值的使用 空值是指不可用、未分配的值 空值不等于零或空格 任意类型都可以支持空值
空值的运算表达式 包括空值的任何算术表达式都等于空 包括空值的连接表达式等于与空字符 串连接,也就是原来的字符串
定义字段的别名 改变列的标题头 用于表示计算结果的含义 作为列的别名 如果别名中使用特殊字符, 或者是强制 大小写敏感, 或有空格时, 都需加双引号
文本字符串 文本字符串是一个包括在 SELECT 查询 列表中的字符, 表达式, 或数字 日期和字符型文本字符串必须用单引号 扩起来 每返回一条记录文本字符串被显示一次
重复记录 缺省情况下查询显示所有行, 包括重复行
去除重复行 使用 DISTINCT 关键字可从查询结果中清除重复行 DISTINCT 的作用范围是后面所有字段的组合
限定所选择的记录 使用 WHERE 子句限定返回的记录 SELECT [DISTINCT] {*, column [alias],...} FROM table [WHERE condition(s)]; WHERE 子句在 FROM 子句后
WHERE 中的字符串和日期值 字符串和日期要用单引号扩起来 字符串是大小写敏感的, 日期值是格式 敏感的 缺省的日期格式是 'DD-MON-RR'
当前的默认日期格式 SELECT sysdate FROM dual;
WHERE 中的比较运算符 运算符含义 = 等于 > 大于 >= 大于等于 < 小于 <= 小于等于 <> 不等于
其它的比较运算符 运算符含义 BETWEEN … AND … 在两值之间(包含) IN (list) 匹配列出的值 LIKE 匹配一个字符模式 IS NULL 是空值
逻辑运算符 运算符含义 AND 如果组合的条件都是 TRUE ,返回 TRUE OR 如果组合的条件之一是 TRUE ,返回 TRUE NOT 如果下面的条件是 FALSE ,返回 TRUE
优先级规则 次序运算符 1 所有的比较运算符 2NOT 3AND 4OR 括号将跨越所有优先级规则
对查询数据的排序 使用 ORDER BY 子句将记录排序 ASC: 升序, 缺省 DESC: 降序 ORDER BY 子句出现在 SELECT 语句的最后