Oracle的学习记录(DDL)

Oracle的学习记录

  • SQL初步
    • DML
    • DDL
    • DCL
  • 查询
    • 定义空值
    • 列的别名
    • 连接符
    • 字符串
    • 删除重复行
    • SQL 语句与 SQL*Plus 命令
    • SQL*Plus
    • 显示表结构
    • 过滤
    • 字符和日期
    • 比较运算
      • LIKE
      • ESCAPE
      • NULL
      • 逻辑运算
    • ORDER BY子句
    • 单行函数
      • 大小写控制
      • 字符控制
    • 日期的数学运算
    • 日期函数
  • 隐式数据类型转换
  • 显示数据类型转换
  • TO_CHAR函数对日期的转换
  • 日期格式的元素
  • TO_DATE 函数对字符的转换
  • TO_NUMBER 函数对字符的转换
  • 通用函数
    • NVL 函数
    • 使用 NVL2 函数
    • 使用 NULLIF 函数
    • 使用 COALESCE 函数
  • 条件表达式
    • CASE 表达式
    • DECODE 函数
  • 多表查询
    • 笛卡尔集
    • 连接多个表
    • 内连接和外连接
    • 外连接语法
    • 自连接
    • 叉 集
    • 自然连接
    • 使用 USING 子句创建连接
    • 使用ON 子句创建连接
    • 满 外连接
    • 左外连接
    • 右外连接
  • 分组函数
    • 分组函数类型
    • 函数语法
    • 在组函数中使用NVL函数
    • DISTINCT 关键字
    • GROUP BY
    • HAVING 子句
  • 子查询
    • 语法
    • 注意
    • 类型
    • 单行子查询
    • 子查询中的 HAVING 子句
    • 子查询中的空值问题
    • 多行子查询
    • 在多行子查询中使用 ANY 操作符
    • 在多行子查询中使用 ALL 操作符
    • 子查询中的空值问题
  • 常见的数据库对象
  • Oracle 数据库中的表
  • 命名规则
  • CREATE TABLE 语句
  • 数据类型
  • 使用子查询创建表
    • 子查询创建表实例
  • alter table语句
    • 追加一个新列
    • 修改一个列
    • 删除一个列
    • 重命名一个列
    • 删除表
    • 清空表
  • 改变对象的名称
  • DDL命令不可回滚

SQL初步

SQL语句分为以下三种类型:

  • DML: Data Manipulation Language 数据操纵语言
  • DDL: Data Definition Language 数据定义语言
  • DCL: Data Control Language 数据控制语言

DML

DML用于查询与修改数据记录,包括如下SQL语句:

  • INSERT:添加数据到数据库中
  • UPDATE:修改数据库中的数据
  • DELETE:删除数据库中的数据
  • SELECT:选择(查询)数据
    SELECT是SQL语言的基础,最为重要。

DDL

DDL用于定义数据库的结构,比如创建、修改或删除数据库对象,包括如下SQL语句:

  • CREATE TABLE:创建数据库表
  • ALTER TABLE:更改表结构、添加、删除、修改列长度
  • DROP TABLE:删除表
  • CREATE INDEX:在表上建立索引
  • DROP INDEX:删除索引

DCL

DCL用来控制数据库的访问,包括如下SQL语句:

  • GRANT:授予访问权限
  • REVOKE:撤销访问权限
  • COMMIT:提交事务处理
  • ROLLBACK:事务处理回退
  • SAVEPOINT:设置保存点
  • LOCK:对数据库的特定部分进行锁定

查询

定义空值

空值是无效的,未指定的,未知的或不可预知的值
空值不是空格或者0
Oracle的学习记录(DDL)_第1张图片
包含空值的数学表达式的值都为空值
Oracle的学习记录(DDL)_第2张图片

列的别名

列的别名:
重命名一个列。
紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
Oracle的学习记录(DDL)_第3张图片

连接符

连接符:
把列与列,列与字符连接在一起。
用 ‘||’表示。
可以用来‘合成’列。
Oracle的学习记录(DDL)_第4张图片

字符串

Oracle的学习记录(DDL)_第5张图片
Oracle的学习记录(DDL)_第6张图片

删除重复行

Oracle的学习记录(DDL)_第7张图片

SQL 语句与 SQL*Plus 命令

Oracle的学习记录(DDL)_第8张图片

SQL*Plus

描述表结构。
编辑 SQL 语句。
执行 SQL语句。
将 SQL 保存在文件中并将SQL语句执行结果保存在文件中。
在保存的文件中执行语句。
将文本文件装入 SQL*Plus编辑窗口。

显示表结构

使用 DESCRIBE 命令,表示表结构

describle employee -- describle 表名

过滤

Oracle的学习记录(DDL)_第9张图片

字符和日期

Oracle的学习记录(DDL)_第10张图片

比较运算

Oracle的学习记录(DDL)_第11张图片
Oracle的学习记录(DDL)_第12张图片

LIKE

Oracle的学习记录(DDL)_第13张图片
在这里插入图片描述

ESCAPE

Oracle的学习记录(DDL)_第14张图片

NULL

使用 IS (NOT) NULL 判断空值。
Oracle的学习记录(DDL)_第15张图片

逻辑运算

Oracle的学习记录(DDL)_第16张图片
AND 要求并的关系为真。
OR 要求或关系为真。

ORDER BY子句

Oracle的学习记录(DDL)_第17张图片

单行函数

Oracle的学习记录(DDL)_第18张图片

大小写控制

Oracle的学习记录(DDL)_第19张图片

字符控制

Oracle的学习记录(DDL)_第20张图片
Oracle的学习记录(DDL)_第21张图片
Oracle的学习记录(DDL)_第22张图片
Oracle的学习记录(DDL)_第23张图片
函数SYSDATE 返回:
日期
时间

日期的数学运算

在日期上加上或减去一个数字结果仍为日期。
两个日期相减返回日期之间相差的天数。
日期不允许做加法运算,无意义
可以用数字除24来向日期中加上或减去天数。
Oracle的学习记录(DDL)_第24张图片

日期函数

Oracle的学习记录(DDL)_第25张图片
Oracle的学习记录(DDL)_第26张图片

隐式数据类型转换

Oracle 自动完成下列转换:
Oracle的学习记录(DDL)_第27张图片

显示数据类型转换

Oracle的学习记录(DDL)_第28张图片

TO_CHAR函数对日期的转换

Oracle的学习记录(DDL)_第29张图片

日期格式的元素

Oracle的学习记录(DDL)_第30张图片
Oracle的学习记录(DDL)_第31张图片

TO_DATE 函数对字符的转换

Oracle的学习记录(DDL)_第32张图片
TO_CHAR 函数中经常使用的几种格式:
Oracle的学习记录(DDL)_第33张图片
Oracle的学习记录(DDL)_第34张图片

TO_NUMBER 函数对字符的转换

Oracle的学习记录(DDL)_第35张图片

通用函数

函数适用于任何数据类型,同时也适用于空值:
Oracle的学习记录(DDL)_第36张图片

NVL 函数

将空值转换成一个已知的值:
Oracle的学习记录(DDL)_第37张图片
Oracle的学习记录(DDL)_第38张图片

使用 NVL2 函数

Oracle的学习记录(DDL)_第39张图片

使用 NULLIF 函数

Oracle的学习记录(DDL)_第40张图片

使用 COALESCE 函数

  • COALESCENVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。
  • 如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE

Oracle的学习记录(DDL)_第41张图片

条件表达式

在 SQL 语句中使用IF-THEN-ELSE 逻辑
使用两种方法:

  • CASE 表达式
  • DECODE 函数

CASE 表达式

Oracle的学习记录(DDL)_第42张图片
使用case表达式
Oracle的学习记录(DDL)_第43张图片

DECODE 函数

在需要使用 IF-THEN-ELSE 逻辑时:
在这里插入图片描述

Oracle的学习记录(DDL)_第44张图片

多表查询

笛卡尔集

Oracle的学习记录(DDL)_第45张图片
笛卡尔集会在下面条件下产生:

  • 省略连接条件
  • 连接条件无效
  • 所有表中的所有行互相连接
    为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。

连接多个表

连接 n个表,至少需要 n-1个连接条件。 例如:连接三个表,至少需要两个连接条件。

内连接和外连接

  • 内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
  • 外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL). 外连接的 WHERE 子句条件类似于内部连接, 但连接条件中没有匹配行的表的列后面要加外连接运算符, 即用圆括号括起来的加号(+).

外连接语法

Oracle的学习记录(DDL)_第46张图片

自连接

Oracle的学习记录(DDL)_第47张图片

叉 集

Oracle的学习记录(DDL)_第48张图片

自然连接

Oracle的学习记录(DDL)_第49张图片
Oracle的学习记录(DDL)_第50张图片

使用 USING 子句创建连接

Oracle的学习记录(DDL)_第51张图片

使用ON 子句创建连接

Oracle的学习记录(DDL)_第52张图片
Oracle的学习记录(DDL)_第53张图片

满 外连接

在SQL: 1999中,内连接只返回满足连接条件的数据
两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右) 外连接。
两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行 ,这种连接称为满 外连接
Oracle的学习记录(DDL)_第54张图片

左外连接

Oracle的学习记录(DDL)_第55张图片

右外连接

Oracle的学习记录(DDL)_第56张图片

分组函数

分组函数作用于一组数据,并对一组数据返回一个值。
Oracle的学习记录(DDL)_第57张图片

分组函数类型

AVG 
COUNT 
MAX 
MIN 
STDDEV
SUM

函数语法

Oracle的学习记录(DDL)_第58张图片
Oracle的学习记录(DDL)_第59张图片
Oracle的学习记录(DDL)_第60张图片
Oracle的学习记录(DDL)_第61张图片
Oracle的学习记录(DDL)_第62张图片
Oracle的学习记录(DDL)_第63张图片

在组函数中使用NVL函数

NVL函数使分组函数无法忽略空值。

DISTINCT 关键字

Oracle的学习记录(DDL)_第64张图片

GROUP BY

Oracle的学习记录(DDL)_第65张图片
SELECT 列表中所有未包含在组函数中的列都应该包含
GROUP BY 子句中。
Oracle的学习记录(DDL)_第66张图片
包含在 GROUP BY 子句中的列不必包含在SELECT 列表
Oracle的学习记录(DDL)_第67张图片
在GROUP BY子句中包含多个列
Oracle的学习记录(DDL)_第68张图片
Oracle的学习记录(DDL)_第69张图片

HAVING 子句

Oracle的学习记录(DDL)_第70张图片

子查询

语法

Oracle的学习记录(DDL)_第71张图片

注意

  • 子查询要包含在括号内。
  • 将子查询放在比较条件的右侧
  • 单行操作符对应单行子查询,多行操作符对应多行子查询。

类型

Oracle的学习记录(DDL)_第72张图片

单行子查询

Oracle的学习记录(DDL)_第73张图片
Oracle的学习记录(DDL)_第74张图片

子查询中的 HAVING 子句

Oracle的学习记录(DDL)_第75张图片

子查询中的空值问题

Oracle的学习记录(DDL)_第76张图片

多行子查询

返回多行。
使用多行比较操作符。
Oracle的学习记录(DDL)_第77张图片

在多行子查询中使用 ANY 操作符

Oracle的学习记录(DDL)_第78张图片

在多行子查询中使用 ALL 操作符

Oracle的学习记录(DDL)_第79张图片

子查询中的空值问题

Oracle的学习记录(DDL)_第80张图片
在查询时基于未知的值时,应使用子查询。

常见的数据库对象

Oracle的学习记录(DDL)_第81张图片

Oracle 数据库中的表

  • 用户定义的表:
    – 用户自己创建并维护的一组表
    – 包含了用户所需的信息
    如:SELECT * FROM user_tables;查看用户创建的表
  • 数据字典:
    – 由 Oracle Server 自动创建的一组表
    – 包含数据库信息

命名规则

表名和列名:

  • 必须以字母开头
  • 必须在 1–30 个字符之间
  • 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
  • 必须不能和用户定义的其他对象重名
  • 必须不能是Oracle 的保留字

CREATE TABLE 语句

Oracle的学习记录(DDL)_第82张图片

数据类型

Oracle的学习记录(DDL)_第83张图片

使用子查询创建表

Oracle的学习记录(DDL)_第84张图片
Oracle的学习记录(DDL)_第85张图片

子查询创建表实例

Oracle的学习记录(DDL)_第86张图片

alter table语句

使用alter table可以

  • 追加新的列
  • 修改现有的列
  • 为新追加的列定义默认值
  • 删除一个列
  • 重命名表的一个列名
    使用 ALTER TABLE 语句追加, 修改, 或删除列的语法
    Oracle的学习记录(DDL)_第87张图片

追加一个新列

Oracle的学习记录(DDL)_第88张图片

修改一个列

Oracle的学习记录(DDL)_第89张图片

删除一个列

Oracle的学习记录(DDL)_第90张图片

重命名一个列

Oracle的学习记录(DDL)_第91张图片

删除表

Oracle的学习记录(DDL)_第92张图片

清空表

Oracle的学习记录(DDL)_第93张图片

改变对象的名称

Oracle的学习记录(DDL)_第94张图片

DDL命令不可回滚

DDL语句创建, 修改, 删除, 和重命名表.
Oracle的学习记录(DDL)_第95张图片

你可能感兴趣的:(oracle,数据库,sql)