简介

 

1:课程目标

Oracle Database 11g : SQL 基础_Oracle Database

 

 

2:课程 目标

Oracle Database 11g : SQL 基础_Oracle Database_02

 

 

3:Oracle Database 11g 以及相关产品概览

 

 

 

      1:Oracle Database 11g :重点领域

Oracle Database 11g : SQL 基础_Oracle Database_03Oracle Database 11g : SQL 基础_Oracle Database_04

      2:Oracle Fusion Middleware

 

Oracle Database 11g : SQL 基础_Oracle Database_05

 

 

 

 

      3:Oracel Enterprise Manager Grid Control

Oracle Database 11g : SQL 基础_Oracle Database_06

 

 

      4:Oracle Bi Publisher

 

Oracle Database 11g : SQL 基础_Oracle Database_07

 

 

 

4:关系数据库管理概念和术语概览

 

        1:关系和对象关系数据库管理系统

Oracle Database 11g : SQL 基础_Oracle Database_08

 

        2:在不同介质中存储数据

Oracle Database 11g : SQL 基础_Oracle Database_09

 

 

        3:关系数据库概念

Oracle Database 11g : SQL 基础_Oracle Database_10

 

 

        4:关系数据库的定义

Oracle Database 11g : SQL 基础_Oracle Database_11

 

        5:数据模型

Oracle Database 11g : SQL 基础_Oracle Database_12

 

 

 

        6:实体关系模型

Oracle Database 11g : SQL 基础_Oracle Database_13

 

        7:实体关系建模惯例

Oracle Database 11g : SQL 基础_Oracle Database_14

 

 

        8:管理多个表

Oracle Database 11g : SQL 基础_Oracle Database_15

 

        9:关系数据库术语

Oracle Database 11g : SQL 基础_Oracle Database_16

5:SQL 及其开发环境简介

 

        1:使用SQL查询数据库

Oracle Database 11g : SQL 基础_Oracle Database_17

 

        2:SQL语句

Oracle Database 11g : SQL 基础_Oracle Database_18

 

        3:SQL开发环境

Oracle Database 11g : SQL 基础_Oracle Database_19

 

 

 

6:本课程中使用的HR方案和表

         1:人力资源(HR)方案

Oracle Database 11g : SQL 基础_Oracle Database_20

        2:本课程使用的表

Oracle Database 11g : SQL 基础_Oracle Database_21

 

 

7:Oracle Database 11g 的文档和其他资源

        1:Oracle Database 11g 文档

Oracle Database 11g : SQL 基础_Oracle Database_22

 

        2:其他资源

Oracle Database 11g : SQL 基础_Oracle Database_23

 

第一章:使用SQL SELECT 语句检索数据

 

1:课程目标

Oracle Database 11g : SQL 基础_Oracle Database_24

 

2:基本SELECT 语句

        1:SQL SELECT 语句的功能

Oracle Database 11g : SQL 基础_Oracle Database_25

 

        2:基本SELECT 语句

 

Oracle Database 11g : SQL 基础_Oracle Database_26

         3:选择所有列

Oracle Database 11g : SQL 基础_Oracle Database_27

 

         4:选择特定列

Oracle Database 11g : SQL 基础_Oracle Database_28

 

 

         5:编写SQL 语句

Oracle Database 11g : SQL 基础_Oracle Database_29

         6:列标题的默认设置

Oracle Database 11g : SQL 基础_Oracle Database_30

3:SELECT 语句中的算术表达式和空值

         1:算术表达式

Oracle Database 11g : SQL 基础_Oracle Database_31

 

        2:使用算术运算符

Oracle Database 11g : SQL 基础_Oracle Database_32

         3:运算符优先级

Oracle Database 11g : SQL 基础_Oracle Database_33

 

 

        4:定义空值

Oracle Database 11g : SQL 基础_Oracle Database_34

 

        5: 算术表达式中的空值

Oracle Database 11g : SQL 基础_Oracle Database_35

 

4:列别名

         1:定义列别名

Oracle Database 11g : SQL 基础_Oracle Database_36

        2:使用列别名

Oracle Database 11g : SQL 基础_Oracle Database_37

 

 

5:连接运算符、文字字符串、其它引号运算符和 DISTINCT 关键字的用法

        1:连接运算符

Oracle Database 11g : SQL 基础_Oracle Database_38

        2:文字字符串

Oracle Database 11g : SQL 基础_Oracle Database_39

 

         3:使用文字字符串

Oracle Database 11g : SQL 基础_Oracle Database_40

 

 

        4:其它引号(q) 运算符

Oracle Database 11g : SQL 基础_Oracle Database_41

 

 

         5:重复行

Oracle Database 11g : SQL 基础_Oracle Database_42

6:DESCRIBE 命令

         1:显示表结构

Oracle Database 11g : SQL 基础_Oracle Database_43

 

 

         2:使用DESCRIBE 命令

Oracle Database 11g : SQL 基础_Oracle Database_44

 

第二章:对数据进行限制和排序

 

1:课程目标

      

Oracle Database 11g : SQL 基础_Oracle Database_45

 

2:使用以下项对行进行限制: – WHERE 子句 – 使用=、<=、BETWEEN、IN、LIKE 和NULL 条件的 比较条件 – 使用AND、OR 和NOT 运算符的逻辑条件

        1:有选择地对行进行限制

Oracle Database 11g : SQL 基础_Oracle Database_46

 

 

        2:对所选行进行限制

Oracle Database 11g : SQL 基础_Oracle Database_47

 

        3:使用WHERE 子句

Oracle Database 11g : SQL 基础_Oracle Database_48

 

 

        4:字符串和日期

Oracle Database 11g : SQL 基础_Oracle Database_49

 

 

       5:比较运算符

 

Oracle Database 11g : SQL 基础_Oracle Database_50

 

 

       6:使用比较运算符

Oracle Database 11g : SQL 基础_Oracle Database_51

        7:使用BETWEEN 运算符的范围条件

 

Oracle Database 11g : SQL 基础_Oracle Database_52

 

 

         8:使用IN 运算符的成员条件

Oracle Database 11g : SQL 基础_Oracle Database_53

 

         9:使用LIKE 运算符执行模式匹配

Oracle Database 11g : SQL 基础_Oracle Database_54

         10:组合通配符字符

Oracle Database 11g : SQL 基础_Oracle Database_55

 

         11:使用NULL 条件

Oracle Database 11g : SQL 基础_Oracle Database_56

 

         12:使用逻辑运算符定义条件

Oracle Database 11g : SQL 基础_Oracle Database_57

 

         13:使用AND 运算符

 

Oracle Database 11g : SQL 基础_Oracle Database_58

 

 

         14:使用OR 运算符

Oracle Database 11g : SQL 基础_Oracle Database_59

 

 

 

 

         15:使用NOT 运算符

Oracle Database 11g : SQL 基础_Oracle Database_60

 

3:表达式中运算符的优先级规则

         1:优先级规则

Oracle Database 11g : SQL 基础_Oracle Database_61

 

 

 

         2:优先级规则

Oracle Database 11g : SQL 基础_Oracle Database_62

 

 

 

 

 

4:使用ORDER BY 子句对行进行排序

         1:使用ORDER BY 子句

Oracle Database 11g : SQL 基础_Oracle Database_63

 

         2:排序

Oracle Database 11g : SQL 基础_Oracle Database_64Oracle Database 11g : SQL 基础_Oracle Database_65

 

 

 

5:替代变量

         1:替代变量

Oracle Database 11g : SQL 基础_Oracle Database_66Oracle Database 11g : SQL 基础_Oracle Database_67

 

 

         2:使用单与号替代变量

Oracle Database 11g : SQL 基础_Oracle Database_68

 

 

 

         3:使用单与号替代变量

Oracle Database 11g : SQL 基础_Oracle Database_69

 

         4:使用替代变量指定字符值和日期值

Oracle Database 11g : SQL 基础_Oracle Database_70

 

 

         5:指定列名、表达式和文本

Oracle Database 11g : SQL 基础_Oracle Database_71

 

         6:使用双与号替代变量

Oracle Database 11g : SQL 基础_Oracle Database_72

 

 

6:DEFINE 和VERIFY 命令

        1:使用DEFINE 命令

Oracle Database 11g : SQL 基础_Oracle Database_73

 

         2:使用VERIFY 命令

Oracle Database 11g : SQL 基础_Oracle Database_74

 

7:小结

Oracle Database 11g : SQL 基础_Oracle Database_75

 

 

第三章:使用单行函数定制输出

 

1:单行SQL 函数

 

         1:SQL 函数

Oracle Database 11g : SQL 基础_Oracle Database_76

 

 

 

         2:两种类型的SQL 函数

Oracle Database 11g : SQL 基础_Oracle Database_77

 

         3:单行函数

Oracle Database 11g : SQL 基础_Oracle Database_78Oracle Database 11g : SQL 基础_Oracle Database_79

 

2:字符函数

         1:字符函数

Oracle Database 11g : SQL 基础_Oracle Database_80

 

         2:大小写转换函数

Oracle Database 11g : SQL 基础_Oracle Database_81

 

 

        3:使用大小写转换函数

Oracle Database 11g : SQL 基础_Oracle Database_82

 

 

         4:字符处理函数

Oracle Database 11g : SQL 基础_Oracle Database_83

 

         5:使用字符处理函数

Oracle Database 11g : SQL 基础_Oracle Database_84

 

3:数字函数

        1:数字函数

Oracle Database 11g : SQL 基础_Oracle Database_85

 

         2:使用ROUND 函数

Oracle Database 11g : SQL 基础_Oracle Database_86

 

         3:使用TRUNC 函数

Oracle Database 11g : SQL 基础_Oracle Database_87

 

 

 

 

         4:使用MOD 函数

Oracle Database 11g : SQL 基础_Oracle Database_88

 

 

4:处理日期

         1:处理日期

Oracle Database 11g : SQL 基础_Oracle Database_89

 

         2:RR 日期格式

Oracle Database 11g : SQL 基础_Oracle Database_90

 

         3:使用SYSDATE 函数

Oracle Database 11g : SQL 基础_Oracle Database_91

         4:与日期有关的运算

Oracle Database 11g : SQL 基础_Oracle Database_92

 

 

         5:使用算术运算符处理日期

Oracle Database 11g : SQL 基础_Oracle Database_93

 

5:日期函数

          1:日期处理函数

Oracle Database 11g : SQL 基础_Oracle Database_94

 

         2:使用日期函数

Oracle Database 11g : SQL 基础_Oracle Database_95

 

 

         3:使用ROUND 函数和TRUNC 函数处理日期

Oracle Database 11g : SQL 基础_Oracle Database_96

 

 

         4:小测验

Oracle Database 11g : SQL 基础_Oracle Database_97

 

 

 

         5:小结

 

Oracle Database 11g : SQL 基础_Oracle Database_98

 

 

 

 

第四章:使用转换函数和条件表达式

 

 

1:隐式和显式数据类型转换

         1:转换函数

Oracle Database 11g : SQL 基础_Oracle Database_99

         2:隐式数据类型转换

Oracle Database 11g : SQL 基础_Oracle Database_100Oracle Database 11g : SQL 基础_Oracle Database_101

 

         3:显式数据类型转换

Oracle Database 11g : SQL 基础_Oracle Database_102

 

 

 

 

2:TO_CHAR、TO_DATE、TO_NUMBER 函数

         1:使用TO_CHAR 函数处理日期

Oracle Database 11g : SQL 基础_Oracle Database_103

 

 

        2:日期格式样式的元素

Oracle Database 11g : SQL 基础_Oracle Database_104

 

 

         3:日期格式样式的元素

Oracle Database 11g : SQL 基础_Oracle Database_105

 

         4:使用TO_CHAR 函数处理日期

Oracle Database 11g : SQL 基础_Oracle Database_106

 

 

         5:使用TO_CHAR 函数处理数字

Oracle Database 11g : SQL 基础_Oracle Database_107Oracle Database 11g : SQL 基础_Oracle Database_108

 

         6:使用TO_NUMBER 和TO_DATE 函数

Oracle Database 11g : SQL 基础_Oracle Database_109

 

         7:将TO_CHAR 和TO_DATE 函数 与RR 日期格式结合使用

Oracle Database 11g : SQL 基础_Oracle Database_110

 

 

3:嵌套函数

        1:嵌套函数

Oracle Database 11g : SQL 基础_Oracle Database_111

 

        2:嵌套函数:示例1

Oracle Database 11g : SQL 基础_Oracle Database_112

         2:嵌套函数:示例2

Oracle Database 11g : SQL 基础_Oracle Database_113

 

      4:常规函数: – NVL – NVL2 – NULLIF – COALESCE

        1:常规函数

 

Oracle Database 11g : SQL 基础_Oracle Database_114

        2:NVL 函数

Oracle Database 11g : SQL 基础_Oracle Database_115Oracle Database 11g : SQL 基础_Oracle Database_116Oracle Database 11g : SQL 基础_Oracle Database_117

 

 

 

 

         3:使用NULLIF 函数

Oracle Database 11g : SQL 基础_Oracle Database_118

 

 

 

         4:使用COALESCE 函数

Oracle Database 11g : SQL 基础_Oracle Database_119Oracle Database 11g : SQL 基础_Oracle Database_120

 

5:条件表达式: – CASE – DECODE

         1:条件表达式

Oracle Database 11g : SQL 基础_Oracle Database_121

         2:CASE 表达式

Oracle Database 11g : SQL 基础_Oracle Database_122Oracle Database 11g : SQL 基础_Oracle Database_123

 

       3:DECODE 函数

Oracle Database 11g : SQL 基础_Oracle Database_124Oracle Database 11g : SQL 基础_Oracle Database_125Oracle Database 11g : SQL 基础_Oracle Database_126

 

 

第五章:使用组函数报告聚集数据

 

 

1: 组函数: – 类型和语法 – 使用AVG、SUM、MIN、MAX、COUNT – 在组函数中使用DISTINCT 关键字 – 组函数中的NULL 值

         1:何谓组函数

Oracle Database 11g : SQL 基础_Oracle Database_127

 

 

         2:组函数的类型

Oracle Database 11g : SQL 基础_Oracle Database_128

 

       3:组函数:语法

Oracle Database 11g : SQL 基础_Oracle Database_129

         4:使用AVG 和SUM 函数

Oracle Database 11g : SQL 基础_Oracle Database_130

 

 

 

         5:使用MIN 和MAX 函数

Oracle Database 11g : SQL 基础_Oracle Database_131

         6:使用COUNT 函数

Oracle Database 11g : SQL 基础_Oracle Database_132

 

 

         7:使用DISTINCT 关键字

Oracle Database 11g : SQL 基础_Oracle Database_133

 

         8:组函数和空值

Oracle Database 11g : SQL 基础_Oracle Database_134

 

 

 

 

2:对行进行分组: – GROUP BY 子句 – HAVING 子句

         1:创建数据组

Oracle Database 11g : SQL 基础_Oracle Database_135

 

 

         2:创建数据组:GROUP BY 子句的语法

Oracle Database 11g : SQL 基础_Oracle Database_136Oracle Database 11g : SQL 基础_Oracle Database_137Oracle Database 11g : SQL 基础_Oracle Database_138

 

         3:按多个列进行分组

Oracle Database 11g : SQL 基础_Oracle Database_139

 

         4:对多个列使用GROUP BY 子句

 

Oracle Database 11g : SQL 基础_Oracle Database_140

 

         5:使用组函数的非法查询

Oracle Database 11g : SQL 基础_Oracle Database_141Oracle Database 11g : SQL 基础_Oracle Database_142

 

 

 

         6:限定组结果

Oracle Database 11g : SQL 基础_Oracle Database_143

 

 

 

         7:使用HAVING 子句限定组结果

Oracle Database 11g : SQL 基础_Oracle Database_144Oracle Database 11g : SQL 基础_Oracle Database_145Oracle Database 11g : SQL 基础_Oracle Database_146

 

 

 

4:嵌套组函数

         1:嵌套组函数

Oracle Database 11g : SQL 基础_Oracle Database_147

 

 

 

第六章:使用联接显示多个表中的数据

 

1:JOIN 的类型及其语法

         1:获取多个表中的数据

Oracle Database 11g : SQL 基础_Oracle Database_148

 

 

 

 

         2:联接类型

Oracle Database 11g : SQL 基础_Oracle Database_149

 

 

 

 

         3:使用SQL:1999 语法将表联接起来

Oracle Database 11g : SQL 基础_Oracle Database_150

 

        4:限定不确定的列名

Oracle Database 11g : SQL 基础_Oracle Database_151

 

2:自然联接: – USING 子句 – ON 子句

         1:创建自然联接

Oracle Database 11g : SQL 基础_Oracle Database_152

 

         2:使用自然联接检索记录

Oracle Database 11g : SQL 基础_Oracle Database_153

 

         3:使用USING 子句创建联接

Oracle Database 11g : SQL 基础_Oracle Database_154

 

         4:联接列名

Oracle Database 11g : SQL 基础_Oracle Database_155

 

 

 

         5:使用USING 子句检索记录

 

Oracle Database 11g : SQL 基础_Oracle Database_156

 

 

         6:在USING 子句中使用表别名

Oracle Database 11g : SQL 基础_Oracle Database_157

        7:使用ON 子句创建联接

Oracle Database 11g : SQL 基础_Oracle Database_158Oracle Database 11g : SQL 基础_Oracle Database_159

 

 

         8:使用ON 子句创建三向联接

Oracle Database 11g : SQL 基础_Oracle Database_160

 

 

 

 

 

         9:对联接应用附加条件

Oracle Database 11g : SQL 基础_Oracle Database_161

 

 

3:自联接

        1:将表联接到自身

Oracle Database 11g : SQL 基础_Oracle Database_162

 

         2:使用ON 子句进行自联接

Oracle Database 11g : SQL 基础_Oracle Database_163

 

3:非等值联接

         1:非等值联接

Oracle Database 11g : SQL 基础_Oracle Database_164

 

 

 

         2:使用非等值联接检索记录

Oracle Database 11g : SQL 基础_Oracle Database_165

 

 

5:OUTER 联接: – LEFT OUTER 联接 – RIGHT OUTER 联接 – FULL OUTER 联接

         1:使用OUTER 联接返回没有直接匹配的记录

 

Oracle Database 11g : SQL 基础_Oracle Database_166

 

         2:INNER 联接与OUTER 联接

Oracle Database 11g : SQL 基础_Oracle Database_167

 

         3:LEFT OUTER JOIN

Oracle Database 11g : SQL 基础_Oracle Database_168

 

 

         4:RIGHT OUTER JOIN

Oracle Database 11g : SQL 基础_Oracle Database_169

 

         5:FULL OUTER JOIN

Oracle Database 11g : SQL 基础_Oracle Database_170

 

 

 

6:笛卡尔积 – 交叉联接

         1:笛卡尔积

Oracle Database 11g : SQL 基础_Oracle Database_171

 

         2:生成笛卡尔积

 

Oracle Database 11g : SQL 基础_Oracle Database_172

 

 

 

 

         3:创建交叉联接

Oracle Database 11g : SQL 基础_Oracle Database_173

 

 

 

 

 

 

第七章:使用子查询来解决查询

 

 

1:子查询:类型、语法和准则

        1:使用子查询解决问题

Oracle Database 11g : SQL 基础_Oracle Database_174

 

 

 

 

         2:子查询语法

Oracle Database 11g : SQL 基础_Oracle Database_175

 

         3:使用子查询

Oracle Database 11g : SQL 基础_Oracle Database_176

 

 

        4:使用子查询的准则

Oracle Database 11g : SQL 基础_Oracle Database_177

 

 

 

         5:子查询的类型

Oracle Database 11g : SQL 基础_Oracle Database_178

 

 

 

2:单行子查询: – 子查询中的组函数 – 带有子查询的HAVING 子句

         1:单行子查询

Oracle Database 11g : SQL 基础_Oracle Database_179

 

 

        2:执行单行子查询

Oracle Database 11g : SQL 基础_Oracle Database_180

 

 

         3:在子查询中使用组函数

 Oracle Database 11g : SQL 基础_Oracle Database_181

 

 

 

         4:带有子查询的HAVING 子句

Oracle Database 11g : SQL 基础_Oracle Database_182

 

 

         5:此语句中有什么错误

Oracle Database 11g : SQL 基础_Oracle Database_183

 

 

 

 

 

         6:内部查询没有返回任何行

Oracle Database 11g : SQL 基础_Oracle Database_184

 

 

3:多行子查询 – 使用IN、ALL 或ANY

         1:多行子查询

Oracle Database 11g : SQL 基础_Oracle Database_185

 

         2:在多行子查询中使用ANY 运算符

Oracle Database 11g : SQL 基础_Oracle Database_186

 

 

 

         3:在多行子查询中使用ALL 运算符

Oracle Database 11g : SQL 基础_Oracle Database_187

 

 

        4:使用EXISTS 运算符

 

Oracle Database 11g : SQL 基础_Oracle Database_188

 

 

4:子查询中的空值

          1:子查询中的空值

Oracle Database 11g : SQL 基础_Oracle Database_189

 

第八章:使用集合运算符

 

1:集合运算符:类型和准则

        1:集合运算符

Oracle Database 11g : SQL 基础_Oracle Database_190

 

 

 

 

 

 

         2:集合运算符准则

Oracle Database 11g : SQL 基础_Oracle Database_191

 

 

 

        3:Oracle Server 和集合运算符

 

Oracle Database 11g : SQL 基础_Oracle Database_192

 

 

 

2:本课中使用的表

         1:本课中使用的表

Oracle Database 11g : SQL 基础_Oracle Database_193

3:UNION 和UNION ALL 运算符

        1:UNION 运算符

Oracle Database 11g : SQL 基础_Oracle Database_194

 

 

 

         2:使用UNION 运算符

Oracle Database 11g : SQL 基础_Oracle Database_195

 

 

        3:UNION ALL 运算符

Oracle Database 11g : SQL 基础_Oracle Database_196

 

 

 

 

         4:使用UNION ALL 运算符

Oracle Database 11g : SQL 基础_Oracle Database_197

 

 

3:INTERSECT 运算符

         1:INTERSECT 运算符

 

Oracle Database 11g : SQL 基础_Oracle Database_198

 

 

 

 

 

         2:使用INTERSECT 运算符

Oracle Database 11g : SQL 基础_Oracle Database_199

 

5:MINUS 运算符

        1:MINUS 运算符

Oracle Database 11g : SQL 基础_Oracle Database_200

 

 

 

         2:使用MINUS 运算符

Oracle Database 11g : SQL 基础_Oracle Database_201

 

6:匹配SELECT 语句

          1:匹配SELECT 语句

Oracle Database 11g : SQL 基础_Oracle Database_202

 

 

 

         2:匹配SELECT 语句:示例

Oracle Database 11g : SQL 基础_Oracle Database_203

 

 

 

 

7:在集合运算中使用ORDER BY 子句

 

         1:在集合运算中使用ORDER BY 子句

Oracle Database 11g : SQL 基础_Oracle Database_204

 

 

 

第九章:处理数据

 

 

1:在表中添加新行 – INSERT 语句

        1:数据操纵语言

Oracle Database 11g : SQL 基础_Oracle Database_205

 

 

         2:在表中添加新行

Oracle Database 11g : SQL 基础_Oracle Database_206

 

 

         3:INSERT 语句语法

Oracle Database 11g : SQL 基础_Oracle Database_207

         4:插入新行

Oracle Database 11g : SQL 基础_Oracle Database_208

 

         5:插入带有空值的行

Oracle Database 11g : SQL 基础_Oracle Database_209

 

         6:插入特殊值

Oracle Database 11g : SQL 基础_Oracle Database_210

 

 

         7:插入特定日期和时间值

Oracle Database 11g : SQL 基础_Oracle Database_211

 

 

 

         8:创建脚本

Oracle Database 11g : SQL 基础_Oracle Database_212

 

         9:从其它表中复制行

Oracle Database 11g : SQL 基础_Oracle Database_213

 

 

2:更改表中的数据 – UPDATE 语句

        1:更改表中的数据

Oracle Database 11g : SQL 基础_Oracle Database_214

 

 

         2:UPDATE 语句语法

Oracle Database 11g : SQL 基础_Oracle Database_215

 

 

 

 

         3:更新表中的行

Oracle Database 11g : SQL 基础_Oracle Database_216

 

 

 

         4:使用子查询更新两列

Oracle Database 11g : SQL 基础_Oracle Database_217

 

         5:根据另一个表更新行

Oracle Database 11g : SQL 基础_Oracle Database_218

 

3:从表中删除行: – DELETE 语句 – TRUNCATE 语句

        1:从表中删除行

Oracle Database 11g : SQL 基础_Oracle Database_219

 

 

        2:DELETE 语句

Oracle Database 11g : SQL 基础_Oracle Database_220

 

          3:从表中删除行

Oracle Database 11g : SQL 基础_Oracle Database_221

 

 

         4:根据另一个表删除行

Oracle Database 11g : SQL 基础_Oracle Database_222

 

 

        5:TRUNCATE 语句

Oracle Database 11g : SQL 基础_Oracle Database_223

 

 

4:使用COMMIT、ROLLBACK 和SAVEPOINT 执行数据库 事务处理控制

         1:数据库事务处理

Oracle Database 11g : SQL 基础_Oracle Database_224

 

 

        2:数据库事务处理:开始和结束

Oracle Database 11g : SQL 基础_Oracle Database_225

 

 

 

        3:COMMIT 和ROLLBACK 语句的优点

Oracle Database 11g : SQL 基础_Oracle Database_226

 

 

 

 

 

         4:显式事务处理控制语句

Oracle Database 11g : SQL 基础_Oracle Database_227

 

 

 

         5:将更改回退到某个标记

Oracle Database 11g : SQL 基础_Oracle Database_228

 

 

        6:隐式事务处理

Oracle Database 11g : SQL 基础_Oracle Database_229

        7:执行COMMIT 或ROLLBACK 操作之前的数据状态

 

Oracle Database 11g : SQL 基础_Oracle Database_230

 

 

        8:执行COMMIT 操作之后的数据状态

 

Oracle Database 11g : SQL 基础_Oracle Database_231

 

        9:提交数据

Oracle Database 11g : SQL 基础_Oracle Database_232

 

         10:执行ROLLBACK 操作之后的数据状态:示例

Oracle Database 11g : SQL 基础_Oracle Database_233

 

        11:执行ROLLBACK 操作之后的数据状态

 

Oracle Database 11g : SQL 基础_Oracle Database_234

 

        12:语句级回退

Oracle Database 11g : SQL 基础_Oracle Database_235

 

 

 

5:读一致性

        1:读一致性

Oracle Database 11g : SQL 基础_Oracle Database_236

 

 

         2:实施读一致性

 

Oracle Database 11g : SQL 基础_Oracle Database_237

 

 

 

6:SELECT 语句中的FOR UPDATE 子句

        1:SELECT 语句中的FOR UPDATE 子句

Oracle Database 11g : SQL 基础_Oracle Database_238

 

         2:FOR UPDATE 子句:示例

Oracle Database 11g : SQL 基础_Oracle Database_239

 

 

 

第十章:使用DDL 语句创建和管理表

 

 

1:数据库对象 – 命名规则

        1:数据库对象

Oracle Database 11g : SQL 基础_Oracle Database_240

 

 

         2:命名规则

Oracle Database 11g : SQL 基础_Oracle Database_241

2:CREATE TABLE 语句: – 访问另一个用户的表 – DEFAULT 选项

         1:CREATE TABLE 语句

 

Oracle Database 11g : SQL 基础_Oracle Database_242

 

 

         2:引用另一个用户的表

Oracle Database 11g : SQL 基础_Oracle Database_243

 

 

 

          3:DEFAULT 选项

Oracle Database 11g : SQL 基础_Oracle Database_244

 

 

 

         4:创建表

Oracle Database 11g : SQL 基础_Oracle Database_245

 

3:数据类型

        1:数据类型

Oracle Database 11g : SQL 基础_Oracle Database_246

 

         2:日期时间数据类型

 

Oracle Database 11g : SQL 基础_Oracle Database_247

 

 

 

4:约束条件概览:NOT NULL、UNIQUE、PRIMARY KEY、 FOREIGN KEY、CHECK 约束条件

        1:包括约束条件

Oracle Database 11g : SQL 基础_Oracle Database_248

 

 

 

         2:约束条件准则

Oracle Database 11g : SQL 基础_Oracle Database_249

 

 

         3:定义约束条件

Oracle Database 11g : SQL 基础_Oracle Database_250

 

          4:NOT NULL 约束条件

Oracle Database 11g : SQL 基础_Oracle Database_251

 

 

 

         5:UNIQUE 约束条件

Oracle Database 11g : SQL 基础_Oracle Database_252

 

 

 

         6:PRIMARY KEY 约束条件

Oracle Database 11g : SQL 基础_Oracle Database_253

 

          7:FOREIGN KEY 约束条件

Oracle Database 11g : SQL 基础_Oracle Database_254

 

 

        8:FOREIGN KEY 约束条件:关键字

Oracle Database 11g : SQL 基础_Oracle Database_255

 

         9:CHECK 约束条件

Oracle Database 11g : SQL 基础_Oracle Database_256

 

 

 

         10:CREATE TABLE:示例

Oracle Database 11g : SQL 基础_Oracle Database_257

 

 

 

 

         11:违反约束条件

Oracle Database 11g : SQL 基础_Oracle Database_258

 

 

5:使用子查询创建表

          1:使用子查询创建表

Oracle Database 11g : SQL 基础_Oracle Database_259

 

6: ALTER TABLE – 只读表

        1:只读表

Oracle Database 11g : SQL 基础_Oracle Database_260

 

 

7:DROP TABLE 语句

         1:删除表

Oracle Database 11g : SQL 基础_Oracle Database_261

 

 

 

 

第十一章:创建其它方案对象

1:视图概览: – 创建、修改和检索视图中的数据 – 对视图执行数据操纵语言(DML) 操作 – 删除视图

         1:数据库对象

Oracle Database 11g : SQL 基础_Oracle Database_262

 

 

         2:什么是视图

Oracle Database 11g : SQL 基础_Oracle Database_263

 

 

 

         3;视图的优点

Oracle Database 11g : SQL 基础_Oracle Database_264

 

 

 

 

 

         4:简单视图和复杂视图

Oracle Database 11g : SQL 基础_Oracle Database_265

 

         5:创建视图

Oracle Database 11g : SQL 基础_Oracle Database_266

         6:从视图中检索数据

Oracle Database 11g : SQL 基础_Oracle Database_267

 

         7:修改视图

Oracle Database 11g : SQL 基础_Oracle Database_268

 

 

 

         8:创建复杂视图

Oracle Database 11g : SQL 基础_Oracle Database_269

 

 

 

 

         9:对视图执行DML 操作的规则

Oracle Database 11g : SQL 基础_Oracle Database_270

 

         10:使用WITH CHECK OPTION 子句

Oracle Database 11g : SQL 基础_Oracle Database_271

 

 

         11:拒绝DML 操作

Oracle Database 11g : SQL 基础_Oracle Database_272

 

 

 

 

 

2:序列概览: – 创建、使用和修改序列 – 高速缓存序列值 – NEXTVAL 和CURRVAL 伪列

 

         1:CREATE SEQUENCE 语句:语法

Oracle Database 11g : SQL 基础_Oracle Database_273

         2:创建序列

Oracle Database 11g : SQL 基础_Oracle Database_274

 

         3:NEXTVAL 和CURRVAL 伪列

Oracle Database 11g : SQL 基础_Oracle Database_275

 

 

 

 

         4:使用序列

Oracle Database 11g : SQL 基础_Oracle Database_276

         5:高速缓存序列值

Oracle Database 11g : SQL 基础_Oracle Database_277

 

 

 

 

         6:修改序列

Oracle Database 11g : SQL 基础_Oracle Database_278

 

         7:修改序列的准则

Oracle Database 11g : SQL 基础_Oracle Database_279

 

 

 

 

3:索引概览 – 创建、删除索引

         1:索引

Oracle Database 11g : SQL 基础_Oracle Database_280

 

 

         2:如何创建索引

Oracle Database 11g : SQL 基础_Oracle Database_281

 

 

 

 

 

         3:创建索引

Oracle Database 11g : SQL 基础_Oracle Database_282

         4:索引创建准则

Oracle Database 11g : SQL 基础_Oracle Database_283

 

         5:删除索引

Oracle Database 11g : SQL 基础_Oracle Database_284

 

 

4:同义词概览 – 创建、删除同义词

         1:创建对象的同义词

Oracle Database 11g : SQL 基础_Oracle Database_285

 

 

         2:创建和删除同义词

Oracle Database 11g : SQL 基础_Oracle Database_286

 

第十二章:控制授权

  1:系统权限

         1:控制用户访问

Oracle Database 11g : SQL 基础_Oracle Database_287

 

 

 

 

 

         2:权限

Oracle Database 11g : SQL 基础_Oracle Database_288

 

 

 

         3:系统权限

Oracle Database 11g : SQL 基础_Oracle Database_289

 

 

         4:创建用户

Oracle Database 11g : SQL 基础_Oracle Database_290

 

 

 

         5:用户系统权限

Oracle Database 11g : SQL 基础_Oracle Database_291

 

         6:授予系统权限

Oracle Database 11g : SQL 基础_Oracle Database_292

 

 

2:创建角色

         1:角色是什么

Oracle Database 11g : SQL 基础_Oracle Database_293

 

         2:创建角色和为角色授予权限

Oracle Database 11g : SQL 基础_Oracle Database_294

 

         3:更改口令

Oracle Database 11g : SQL 基础_Oracle Database_295

 

 

 

 

3:对象权限

         1:对象权限

Oracle Database 11g : SQL 基础_Oracle Database_296

 

 

         2:授予对象权限

Oracle Database 11g : SQL 基础_Oracle Database_297

 

 

         3:传递权限

Oracle Database 11g : SQL 基础_Oracle Database_298

 

 

         4:确认授予的权限

Oracle Database 11g : SQL 基础_Oracle Database_299

4:撤消对象权限

         1:撤消对象权限

Oracle Database 11g : SQL 基础_Oracle Database_300

 

第十三章:管理方案对象

1:使用ALTER TABLE 语句添加、修改或删除列 

         1:ALTER TABLE 语句

Oracle Database 11g : SQL 基础_Oracle Database_301

 

 

 

 

         2:添加列

Oracle Database 11g : SQL 基础_Oracle Database_302

 

 

         3:修改列

Oracle Database 11g : SQL 基础_Oracle Database_303

 

 

 

         4:删除列

Oracle Database 11g : SQL 基础_Oracle Database_304

 

 

         5:SET UNUSED 选项

Oracle Database 11g : SQL 基础_Oracle Database_305

 

 

2:管理约束条件: – 添加和删除约束条件 – 延迟约束条件 – 启用和禁用约束条件

         1:添加约束条件语法

Oracle Database 11g : SQL 基础_Oracle Database_306

 

 

         2: 添加约束条件

Oracle Database 11g : SQL 基础_Oracle Database_307

 

 

         4:ON DELETE 子句

Oracle Database 11g : SQL 基础_Oracle Database_308

 

 

 

         5:延迟约束条件

Oracle Database 11g : SQL 基础_Oracle Database_309

        6:INITIALLY DEFERRED 与 INITIALLY IMMEDIATE 之间的区别

Oracle Database 11g : SQL 基础_Oracle Database_310

 

 

 

         7:删除约束条件

Oracle Database 11g : SQL 基础_Oracle Database_311

 

 

 

         8:禁用约束条件

Oracle Database 11g : SQL 基础_Oracle Database_312

 

         9:启用约束条件

Oracle Database 11g : SQL 基础_Oracle Database_313

 

 

         10:级联约束条件

Oracle Database 11g : SQL 基础_Oracle Database_314

 

         11:重命名表列和约束条件

Oracle Database 11g : SQL 基础_Oracle Database_315

 

 

 

 

 

 

3:创建索引: – 使用CREATE TABLE 语句 – 创建基于函数的索引 – 删除索引

         1:索引概览

Oracle Database 11g : SQL 基础_Oracle Database_316

 

 

         2:CREATE INDEX 与CREATE TABLE 语句 配合使用

Oracle Database 11g : SQL 基础_Oracle Database_317

 

 

 

         3:基于函数的索引

Oracle Database 11g : SQL 基础_Oracle Database_318

 

 

         4:删除索引

 

Oracle Database 11g : SQL 基础_Oracle Database_319

 

 

         5:DROP TABLE … PURGE

Oracle Database 11g : SQL 基础_Oracle Database_320

 

4:执行闪回操作

         1:FLASHBACK TABLE 语句

Oracle Database 11g : SQL 基础_Oracle Database_321

 

Oracle Database 11g : SQL 基础_Oracle Database_322

 

 

 

         2:使用FLASHBACK TABLE 语句

Oracle Database 11g : SQL 基础_Oracle Database_323

 

 

 

5:创建和使用临时表

        1:临时表

Oracle Database 11g : SQL 基础_Oracle Database_324

 

 

         2:创建临时表

Oracle Database 11g : SQL 基础_Oracle Database_325

 

 

 

 

 

 

 

 

6:创建和使用外部表

        1:外部表

Oracle Database 11g : SQL 基础_Oracle Database_326

 

 

         2:创建外部表目录

Oracle Database 11g : SQL 基础_Oracle Database_327

 

 

         3:创建外部表

Oracle Database 11g : SQL 基础_Oracle Database_328

 

 

 

         4:使用ORACLE_LOADER 创建外部表

Oracle Database 11g : SQL 基础_Oracle Database_329

 

 

         5:查询外部表

Oracle Database 11g : SQL 基础_Oracle Database_330

 

 

         6:使用ORACLE_DATAPUMP 创建外部表:示例

Oracle Database 11g : SQL 基础_Oracle Database_331

 

 

 

第十四章:使用数据字典视图管理对象

 

1:数据字典简介

        1:数据字典

Oracle Database 11g : SQL 基础_Oracle Database_332

         2:数据字典结构

Oracle Database 11g : SQL 基础_Oracle Database_333

 

 

         3:如何使用字典视图

Oracle Database 11g : SQL 基础_Oracle Database_334

 

         4:USER_OBJECTS 和ALL_OBJECTS 视图

Oracle Database 11g : SQL 基础_Oracle Database_335

 

 

 

 

         5:USER_OBJECTS 视图

Oracle Database 11g : SQL 基础_Oracle Database_336

2:在字典视图中查询以下信息: – 表信息 – 列信息 – 约束条件信息

 

         1:表信息

Oracle Database 11g : SQL 基础_Oracle Database_337

 

 

         2:列信息

Oracle Database 11g : SQL 基础_Oracle Database_338

 

         3:约束条件信息

Oracle Database 11g : SQL 基础_Oracle Database_339

 

 

         4:USER_CONSTRAINTS:示例

Oracle Database 11g : SQL 基础_Oracle Database_340

 

 

 

 

         5: 在USER_CONS_COLUMNS 中进行查询

Oracle Database 11g : SQL 基础_Oracle Database_341

 

 

 

3:在字典视图中查询以下信息: – 视图信息 – 序列信息 – 同义词信息 – 索引信息

        1:视图信息

Oracle Database 11g : SQL 基础_Oracle Database_342

 

 

         2:序列信息

Oracle Database 11g : SQL 基础_Oracle Database_343

 

 

 

         3:确认序列

Oracle Database 11g : SQL 基础_Oracle Database_344

 

         4:索引信息

Oracle Database 11g : SQL 基础_Oracle Database_345

 

 

         5:USER_INDEXES:示例

 

Oracle Database 11g : SQL 基础_Oracle Database_346

 

 

 

         6:在USER_IND_COLUMNS 中进行查询

Oracle Database 11g : SQL 基础_Oracle Database_347

 

 

        7:同义词信息

Oracle Database 11g : SQL 基础_Oracle Database_348

 

4:在表中添加注释以及在字典视图中查询注释信息

         1:在表中添加注释

Oracle Database 11g : SQL 基础_Oracle Database_349

 

 

 

 

 

 

第十五章:处理大型数据集

        

1:使用子查询处理数据

        1:使用子查询处理数据

Oracle Database 11g : SQL 基础_Oracle Database_350

 

 

         2:通过将子查询用作源来检索数据

Oracle Database 11g : SQL 基础_Oracle Database_351

 

         3:通过将子查询用作目标来执行插入

Oracle Database 11g : SQL 基础_Oracle Database_352

 

 

 

 

 

         4:通过将子查询用作目标来执行插入

Oracle Database 11g : SQL 基础_Oracle Database_353

 

 

         5:在DML 语句中使用WITH CHECK OPTION 关键字

Oracle Database 11g : SQL 基础_Oracle Database_354

 

 

2:在INSERT 和UPDATE 语句中指定显式默认值

         1:显式默认值功能概览

Oracle Database 11g : SQL 基础_Oracle Database_355

 

 

         2:使用显式默认值

Oracle Database 11g : SQL 基础_Oracle Database_356

 

         3:从其它表中复制行

Oracle Database 11g : SQL 基础_Oracle Database_357

 

 

 

 

 

 

3:使用以下类型的多表INSERT: – 无条件INSERT – 转换INSERT (Pivoting INSERT) – 条件INSERT ALL – 条件INSERT FIRST

        1:多表INSERT 语句概览

Oracle Database 11g : SQL 基础_Oracle Database_358

 

 

 

         2:多表INSERT 语句的类型

Oracle Database 11g : SQL 基础_Oracle Database_359

         3:多表INSERT 语句

Oracle Database 11g : SQL 基础_Oracle Database_360

 

 

 

 

         4:无条件INSERT ALL

Oracle Database 11g : SQL 基础_Oracle Database_361

 

 

 

 

         5:条件INSERT ALL:示例

Oracle Database 11g : SQL 基础_Oracle Database_362

 

 

 

          6:条件INSERT ALL

Oracle Database 11g : SQL 基础_Oracle Database_363

 

         7:条件INSERT FIRST:示例

Oracle Database 11g : SQL 基础_Oracle Database_364

 

 

 

 

 

 

 

          8:条件INSERT FIRST

Oracle Database 11g : SQL 基础_Oracle Database_365

 

         9:转换INSERT (Pivoting INSERT)

Oracle Database 11g : SQL 基础_Oracle Database_366

 

 

 

4:合并表行

         1:MERGE 语句

Oracle Database 11g : SQL 基础_Oracle Database_367

 

         2:MERGE 语句的语法

Oracle Database 11g : SQL 基础_Oracle Database_368

 

 

         3:合并行:示例

Oracle Database 11g : SQL 基础_Oracle Database_369

Oracle Database 11g : SQL 基础_Oracle Database_370

 

 

4:跟踪一段时间内的数据更改

         1:跟踪数据更改

Oracle Database 11g : SQL 基础_Oracle Database_371

 

 

 

 

 

         2:闪回版本查询示例

Oracle Database 11g : SQL 基础_Oracle Database_372

 

 

 

 

         3:VERSIONS BETWEEN 子句

Oracle Database 11g : SQL 基础_Oracle Database_373

 

 

 

第十六章:管理不同时区中的数据

 

1:CURRENT_DATE、CURRENT_TIMESTAMP 和LOCALTIMESTAMP

        1:时区

Oracle Database 11g : SQL 基础_Oracle Database_374

 

 

 

/*如果需要支持一个国际化的应用,那么数据库端的国际化特性的支持也就显得尤其重要。Oracle中有很多特性支持国际化,如字符集、时区等等。如果相关参数设置不当,以至于在设计阶段没有考虑完全,那么肯定会对应用造成一定的损失。

Oracle中相关的时区大体分为两类:数据库时区和session时区。


0、查看os时区*/
[oracle@wl ~]$ cat /etc/sysconfig/clock

--sysdate是调用操作系统里的gettimeofday函数,不依赖oracle数据库里设置的时区,用的是操作系统的时区。

--1、查看数据库和session时区

--//查看数据库时区   
SQL> select dbtimezone from dual;   

--//查看session时区

SQL> select sessiontimezone from dual; 


--2、修改数据库和session时区

---//修改数据库时区
SQL> ALTER DATABASE SET TIME_ZONE='+08:00';

---//修改当前会话时区
SQL> ALTER SESSION SET TIME_ZONE='+08:00'; 

--其它修改方式
--//偏移量
ALTER SESSION SET TIME_ZONE = '-05:00';
--//数据库时区
ALTER SESSION SET TIME_ZONE = dbtimezone;
--//系统本地时区
ALTER SESSION SET TIME_ZONE = local;
---//时区名称
ALTER SESSION SET TIME_ZONE = 'America/New_York';

--//使用数据字典v$timezone_names查时区名称
SYS@orcl>select tzname from v$timezone_names where tzname like '%hai%';


ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
ALTER SESSION SET TIME_ZONE = '+8:00';
--返回当前的时间
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
--系统当前的时间戳
SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM DUAL;
--用户会话级别的当前时间戳
SELECT SESSIONTIMEZONE, LOCALTIMESTAMP FROM DUAL;

--3、和时区相关的数据类型
DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE

--DATE:存储日期和时间信息,精确到秒。 

SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'; 
SQL> select to_date('2009-01-12 13:24:33','YYYY-MM-DD HH24:MI:SS') from dual; 


--TIMESTAMP:DATE类型的扩展,保留小数级别的秒,默认为小数点后6位。不保存时区和地区信息。 

SQL> select localtimestamp from dual;

ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-YY HH:MI:SSXFF';
CREATE TABLE table_ts(c_id NUMBER, c_ts TIMESTAMP);
INSERT INTO table_ts VALUES(1, '01-JAN-2009 2:00:00');
INSERT INTO table_ts VALUES(2, TIMESTAMP '2009-01-01 2:00:00');
INSERT INTO table_ts VALUES(3, TIMESTAMP '2009-01-01 2:00:00 -08:00');
commit;
set linesize 120
select * from table_ts; 
--第三条数据的时区信息丢失!


-------------------------------------------
/*

TIMESTAMP WITH TIME ZONE:存储带时区信息的TIMESTAMP(以和UTC时间差或者地区信息的形式保存)。
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='DD-MON-RR HH:MI:SSXFF AM TZR'; 
ALTER SESSION SET TIME_ZONE='-7:00';
CREATE TABLE table_tstz (c_id NUMBER, c_tstz TIMESTAMP WITH TIME ZONE);
INSERT INTO table_tstz VALUES(1, '01-JAN-2009 2:00:00 AM -07:00');
INSERT INTO table_tstz VALUES(2, TIMESTAMP '2009-01-01 2:00:00'); 
INSERT INTO table_tstz VALUES(3, TIMESTAMP '2009-01-01 2:00:00 -8:00');
commit;
select * from table_tstz;
数据保存了时区信息! 
如果没有指定时区,用会话时区
--------------------------------------------
TIMESTAMP WITH LOCAL TIME ZONE:以数据库时区时间保存在数据库中,用户请求数据时,以客户端会话(session)时区时间返回,是另一种不同类型的TIMESTAMP。

TIMESTAMP WITH LOCAL TIME ZONE和
TIMESTAMP WITH TIME ZONE类型的区别在于:
数据库不保存时区相关信息,而是把客户端输入的时间转换为基于database timezone的时间后存入数据库。当用户请求此类型信息时,Oracle把数据转换为用户session的时区时间返回给用户。所以Oracle建议把database timezone设置为标准时间UTC,这样可以节省每次转换所需要的开销,提高性能。

TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE两种数据类型是timestamp的变种,Date和timestamp数据类型不包含时区信息。

*/
SQL>ALTER SESSION SET TIME_ZONE='-07:00'; 

CREATE TABLE table_tsltz (c_id NUMBER, c_tsltz TIMESTAMP WITH LOCAL TIME ZONE); 

INSERT INTO table_tsltz VALUES(1,'01-JAN-2009 2:00:00');
INSERT INTO table_tsltz VALUES(2, TIMESTAMP '2009-01-01 2:00:00');
INSERT INTO table_tsltz VALUES(3, TIMESTAMP '2009-01-01 2:00:00 -08:00');
commit;

select * from table_tsltz;
/*
注意:
插入的第三条数据指定为UTC-8时区的时间,然后存入数据库后按照database timezone的时间保存,最后在客户端请求的时候,转换为客户端时区的时间返回!
//查看数据库时区   */
SQL> select dbtimezone from dual;   

--//查看session时区

SQL> select sessiontimezone from dual;

--更改UTC-5
SYS@orcl>ALTER SESSION SET TIME_ZONE='-05:00'; 
SYS@orcl>select * from table_tsltz;
--当客户端时区改为UTC-5的时候,TIMESTAMP WITH LOCAL TIME ZONE数据类型的返回信息会相应改变的。
/*

Oracle语法: 
INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}] 

该数据类型常用来表示一段时间差, 注意时间差只精确到年和月,precision为年或月的精确域, 有效范围是0到9, 默认值为2。

例:
INTERVAL '123-2' YEAR(3) TO MONTH     
表示: 123年2个月, "YEAR(3)" 表示年的精度为3, 可见"123"刚好为3为有效数值, 如果该处YEAR(n), n<3就会出错, 注意默认是2。

INTERVAL '123' YEAR(3) 
表示: 123年0个月 

INTERVAL '300' MONTH(3) 
表示: 300个月, 注意该处MONTH的精度是3啊. 

INTERVAL '4' YEAR     
表示: 4年, 同 INTERVAL '4-0' YEAR TO MONTH 是一样的 

INTERVAL '50' MONTH     
表示: 50个月, 同 INTERVAL '4-2' YEAR TO MONTH 是一样 

INTERVAL '123' YEAR     
表示: 该处表示有错误, 123精度是3了, 但系统默认是2, 所以该处应该写成 INTERVAL '123' YEAR(3) 或"3"改成大于3小于等于9的数值都可以的 

INTERVAL '5-3' YEAR TO MONTH + INTERVAL '20' MONTH=INTERVAL '6-11' YEAR TO MONTH 
表示: 5年3个月 + 20个月 = 6年11个月 


TZ_OFFSET函数根据时区名称,返回时区与0时区相差的小时和分钟数
from_tz函数将一个timstamp和timzone拼成一个timestamp with time zone 
TO_TIMESTAMP函数将字符型转成timestamp 
TO_YMINTERVAL 将字符型CHAR, VARCHAR2, NCHAR, or NVARCHAR2 转换为 INTERVAL YEAR TO MONTH 类型
TO_DSINTERVAL 将字符型 CHAR, VARCHAR2, NCHAR, or NVARCHAR2 转换为 INTERVAL DAY TO SECOND
*/

 

 

 

         2:TIME_ZONE 会话参数

Oracle Database 11g : SQL 基础_Oracle Database_375

 

 

 

 

 

 

 

 

         3:CURRENT_DATE、CURRENT_TIMESTAMP 和LOCALTIMESTAMP

Oracle Database 11g : SQL 基础_Oracle Database_376

         4:对会话时区的日期和时间进行比较

Oracle Database 11g : SQL 基础_Oracle Database_377

 

 

         5:DBTIMEZONE 和SESSIONTIMEZONE

 

Oracle Database 11g : SQL 基础_Oracle Database_378

 

 

 

 

 

         6:TIMESTAMP 数据类型

Oracle Database 11g : SQL 基础_Oracle Database_379

 

 

 

         7:TIMESTAMP 字段

Oracle Database 11g : SQL 基础_Oracle Database_380

 

 

         8:DATE 和TIMESTAMP 之间的区别

Oracle Database 11g : SQL 基础_Oracle Database_381

 

 

 

        9:TIMESTAMP 数据类型的比较

Oracle Database 11g : SQL 基础_Oracle Database_382

 

 

 

 

2:INTERVAL 数据类型

        1:INTERVAL 数据类型

Oracle Database 11g : SQL 基础_Oracle Database_383

 

 

 

         2:INTERVAL 字段

Oracle Database 11g : SQL 基础_Oracle Database_384

 

 

         3:INTERVAL YEAR TO MONTH:示例

Oracle Database 11g : SQL 基础_Oracle Database_385

 

 

 

         4:INTERVAL DAY TO SECOND 数据类型:示例

Oracle Database 11g : SQL 基础_Oracle Database_386

 

 

 

 

3:使用以下函数: – EXTRACT – TZ_OFFSET – FROM_TZ – TO_TIMESTAMP – TO_YMINTERVAL – TO_DSINTERVAL

         1:EXTRACT

Oracle Database 11g : SQL 基础_Oracle Database_387

 

 

         2:TZ_OFFSET

Oracle Database 11g : SQL 基础_Oracle Database_388

 

 

         3:FROM_TZ

 

Oracle Database 11g : SQL 基础_Oracle Database_389

 

 

         4:TO_TIMESTAMP

Oracle Database 11g : SQL 基础_Oracle Database_390

 

 

 

         5:TO_YMINTERVAL

Oracle Database 11g : SQL 基础_Oracle Database_391

 

 

         6:TO_DSINTERVAL

Oracle Database 11g : SQL 基础_Oracle Database_392

 

 

 

         7:夏令时

Oracle Database 11g : SQL 基础_Oracle Database_393

 

第十七章:使用子查询检索数据

 

1:编写多列子查询

        1:多列子查询

Oracle Database 11g : SQL 基础_Oracle Database_394

 

         2:列比较

 

Oracle Database 11g : SQL 基础_Oracle Database_395

 

 

 

        3:成对比较子查询

Oracle Database 11g : SQL 基础_Oracle Database_396

 

 

 

 

         4:不成对比较子查询

Oracle Database 11g : SQL 基础_Oracle Database_397

 

 

 

2:在SQL 中使用标量子查询

         1:标量子查询表达式

Oracle Database 11g : SQL 基础_Oracle Database_398

 

          2:标量子查询:示例

Oracle Database 11g : SQL 基础_Oracle Database_399

 

 

3:使用相关子查询解决问题

         1:相关子查询

Oracle Database 11g : SQL 基础_Oracle Database_400

 

 

 

 

         2:使用相关子查询

 

Oracle Database 11g : SQL 基础_Oracle Database_401

 

 

 

 

 

 

 

 

 

 

4:使用EXISTS 和NOT EXISTS 运算符

         1:使用EXISTS 运算符

Oracle Database 11g : SQL 基础_Oracle Database_402

 

 

 

 

        2:查找没有任何雇员的所有部门

Oracle Database 11g : SQL 基础_Oracle Database_403

 

 

 

         3:相关UPDATE

Oracle Database 11g : SQL 基础_Oracle Database_404

 

         4:使用相关UPDATE

 

Oracle Database 11g : SQL 基础_Oracle Database_405

 

 

         5:相关DELETE

Oracle Database 11g : SQL 基础_Oracle Database_406

 

         6:使用相关DELETE

Oracle Database 11g : SQL 基础_Oracle Database_407

 

 

 

4:使用WITH 子句

         1:WITH 子句

Oracle Database 11g : SQL 基础_Oracle Database_408

 

 

         2:WITH 子句:示例

 

Oracle Database 11g : SQL 基础_Oracle Database_409

 

Oracle Database 11g : SQL 基础_Oracle Database_410

 

 

 

 

         3:递归WITH 子句

 

Oracle Database 11g : SQL 基础_Oracle Database_411

 

 

         4:递归WITH 子句:示例

Oracle Database 11g : SQL 基础_Oracle Database_412

 

 

 

 

 

 

 

 

 

 

 

 

第十八章 :正则表达式支持功能

    

1:正则表达式简介

         1:正则表达式是什么

Oracle Database 11g : SQL 基础_Oracle Database_413

 

 

 

 

ORACLE 正则表达式
一、正则表达式简介
正则表达式,就是以某种模式来匹配一类字符串。例如,判断匹配性,进行字符串的重新组合等。正则表达式提供了字符串处理的快捷方式。Oracle 10g及以后的版本中也支持正则表达式。
二、正则表达式相对通配符的优势
1、正则表达式中不仅存在着代表模糊字符的特殊字符,而且存在着量词等修饰字符,使得模式的控制更加灵活和强大。
2、通配符的使用一般是在特定的环境下,不同的环境下,通配符有可能不同。而正则表达式,不但广泛应用于各种编程语言,而且在各种编程语言中,保持了语法的高度一致性。
三、元字符
元字符是指在正则表达式中表示特殊含义的字符。
四、量词
量词用来指定量词的前一个字符出现的次数。量词的形式主要有“?”、“*”、“+”、“{}”。
五、字符转义:
元字符在正则表达式中有特殊含义。如果需要使用其原义,则需要用到字符转义。字符转义使用字符“\”来实现。其语法模式为:“\”+元字符。例如,“\.”表示普通字符“.”; “\.doc”匹配字符串“.doc”;而普通字符“\”需要使用“\\”来表示。
六、字符组.
字符组是指将模式中的某些部分作为一个整体。这样,量词可以来修饰字符组,从而提高正则表达式的灵活性。字符组通过()来实现。
许多编程语言中,可以利用“$1”、“$2”等来获取第一个、第二个字符组,即所谓的后向引用。在Oracle中,引用格式为“\1”、“\2”。
七、正则表达式分支
可以利用“|”来创建多个正则表达式分支。例如,“\d{4}|\w{4}”可以看做两个正则表达式“\d{4}”和“\w{4}”,匹配其中任何一个正则表达式的字符串都被认为匹配整个正则表达式。如果该字符串两个正则表达式分支都匹配,那么将被处理为匹配第一个正则表达式分支。
八、字符类.
在Oracle中,正则表达式的用法与标准用法略有不同。这种不同主要体现在对于字符类的定义上。Orale中不使用字符“\”与普通字符组合的形式来实现字符类,而是具有其特殊语法.
九、ORACLE中的四个正则表达式相关函数。
1、regexp_like(expression, regexp)
返回值为一个布尔值。如果第一个参数匹配第二个参数所代表的正则表达式,那么将返回真,否则将返回假。
举例: select * from people where regexp_like(name, '^J.*$');
2、regexp_instr(expression, regexp, startindex, times)
返回找到的匹配字符串的位置。参数startindex表示开始进行匹配比较的位置;参数times表示第几次匹配作为最终匹配结果。
举例: select regexp_instr('12.158', '\.') position from dual;
regexp_instr('12.158', '\.')用于获取第一个小数点的位置。
3、regexp_substr(expression, regexp)
返回第一个字符串参数中,与第二个正则表达式参数相匹配的子字符串。
举例: create table html(id integer, html varchar2(2000));
insert into html values (1, '<a href="http://mail.google.com/2009/1009.html">mail link</a>');
表html中存储了HTML标签及内容。现欲从标签<a>中获得链接的url,那么可以利用regexp_substr()函数。
select id, regexp_substr(html, 'http[a-zA-Z0-9\.:/]*') url from html;
4、regexp_replace(expression, regexp, replacement)
将expression中的按regexp匹配到的部分用replacement代替。在参数replacement中,可以含有后向引用,以便将正则表达式中的字符组重新捕获。
例如,某些国家和地区的日期格式可能为“MM/DD/YYYY”,那么可以利用regexp_replace()函数来转换日期格式。
select regexp_replace('09/29/2008', '^([0-9]{2})/([0-9]{2})/([0-9]{4})$', '\3-\1-\2') replace from dual;
十、正则表达式练习
第一:REGEXP_LIKE函数用法 EMP表结构及数据如下:
SQL> desc emp;
SQL> select empno,ename,sal,hiredate from emp;
1、查找员工编号为4位数字的员工信息
SQL> select empno,ename from emp where regexp_like(empno,'^[[:digit:]]{4}$');
2、查找员工姓名为全英文的员工信息
SQL> select empno,ename from emp where regexp_like(ename,'^[[:alpha:]]+$');
或者:
SQL> select empno,ename from emp where regexp_like(ename,'^[a-zA-Z]+$');
3、查找员工姓名以“a”字母开头,不区分大小写
SQL> select empno,ename from emp where regexp_like(ename,'^a','i');
4、查找员工姓名为全英文,且以“N”结尾的员工信息
SQL> select empno,ename from emp where regexp_like(ename,'^[[:alpha:]]+N$');
5、查找员工编号以非数字的员工信息
SQL> select empno,ename from emp where regexp_like(empno,'[^[:digit:]]');
以数字开头
select empno,ename from emp where regexp_like(empno,'^[[:digit:]]');
数字
select empno,ename from emp where regexp_like(empno,'[[:digit:]]');
非数字开头
select empno,ename from emp where regexp_like(empno,'^[^[:digit:]]');
第二:REGEXP_INSTR函数用法
1、查找员工编号中第一个非数字字符的位置
SQL> select regexp_instr(empno,'[^[:digit:]]') position from emp;
2、从第三个字符开始,查找员工编号中第二个非数字字符的位置
SQL> select regexp_instr(empno,'[^[:digit:]]',3,2) position from emp;
第三:REGEXP_SUBSTR函数用法
1、返回从ename的第二个位置开始查找,并且是以“L”开头到结尾的字串
SQL> select regexp_substr(ename,'L.*','2') substr from emp;
第四:REGEXP_REPLACE函数用法
1、把ename中所有非字母字符替换为“A”
SQL>update emp set ename=regexp_replace(ename, '[^[:alpha:]]','A') where regexp_like(ename, '[^[:alpha:]]');

 

 

 

         2:使用正则表达式的好处

Oracle Database 11g : SQL 基础_Oracle Database_414

 

 

         3:在SQL 和PL/SQL 中使用 正则表达式函数和条件

Oracle Database 11g : SQL 基础_Oracle Database_415

 

 

   

2:在正则表达式中使用元字符

         1:元字符是什么

Oracle Database 11g : SQL 基础_Oracle Database_416

         2:在正则表达式中使用元字符

Oracle Database 11g : SQL 基础_Oracle Database_417

 

 

 

 

 

 

3:使用正则表达式函数: – REGEXP_LIKE – REGEXP_REPLACE – REGEXP_INSTR – REGEXP_SUBSTR

        1:正则表达式函数和条件:语法

Oracle Database 11g : SQL 基础_Oracle Database_418

 

         2:使用REGEXP_LIKE 条件执行基本搜索

Oracle Database 11g : SQL 基础_Oracle Database_419

 

 

 

 

 

        3:使用REGEXP_REPLACE 函数替换模式

Oracle Database 11g : SQL 基础_Oracle Database_420

 

 

 

 

 

         4:使用REGEXP_INSTR 函数查找模式

Oracle Database 11g : SQL 基础_Oracle Database_421

 

 

 

 

         5:使用REGEXP_SUBSTR 函数提取子字符串

Oracle Database 11g : SQL 基础_Oracle Database_422

 

 

 

4:访问子表达式

        1:子表达式

Oracle Database 11g : SQL 基础_Oracle Database_423

 

 

 

 

 

         2:结合使用正则表达式支持与子表达式

 

Oracle Database 11g : SQL 基础_Oracle Database_424

 

 

 

 

         3:为什么要访问第n 个子表达式

 

Oracle Database 11g : SQL 基础_Oracle Database_425

 

 

 

         4:REGEXP_SUBSTR:示例

Oracle Database 11g : SQL 基础_Oracle Database_426

 

5:使用REGEXP_COUNT 函数

         1:使用REGEXP_COUNT 函数

Oracle Database 11g : SQL 基础_Oracle Database_427

 

 

         2:正则表达式和检查约束条件:示例

Oracle Database 11g : SQL 基础_Oracle Database_428

 

 

 

 

第十九章:通过将相关数据分组来生成报表

       

1:复习组函数

 

Oracle Database 11g : SQL 基础_Oracle Database_429

 

 

 

2:复习GROUP BY 子句

Oracle Database 11g : SQL 基础_Oracle Database_430

 

 

 

3:复习HAVING 子句

Oracle Database 11g : SQL 基础_Oracle Database_431

 

 

4:GROUP BY 与ROLLUP 和CUBE 运算符一起使用

Oracle Database 11g : SQL 基础_Oracle Database_432

5:ROLLUP 运算符

Oracle Database 11g : SQL 基础_Oracle Database_433

 

6:ROLLUP 运算符:示例

Oracle Database 11g : SQL 基础_Oracle Database_434

 

 

 

7:CUBE 运算符

Oracle Database 11g : SQL 基础_Oracle Database_435

 

8:CUBE 运算符:示例

Oracle Database 11g : SQL 基础_Oracle Database_436

 

 

9:GROUPING 函数

 

Oracle Database 11g : SQL 基础_Oracle Database_437

 

 

10:GROUPING 函数:示例

Oracle Database 11g : SQL 基础_Oracle Database_438

 

 

 

 

 

 

11:GROUPING SETS

Oracle Database 11g : SQL 基础_Oracle Database_439

 

12:GROUPING SETS:示例

Oracle Database 11g : SQL 基础_Oracle Database_440

 

 

 

 

 

13:组合列

 

Oracle Database 11g : SQL 基础_Oracle Database_441

 

 

 

 

14:组合列:示例

Oracle Database 11g : SQL 基础_Oracle Database_442

 

 

 

15:级联分组

Oracle Database 11g : SQL 基础_Oracle Database_443

 

16:级联分组:示例

Oracle Database 11g : SQL 基础_Oracle Database_444

 

17:小结

 

Oracle Database 11g : SQL 基础_Oracle Database_445

 

 

 

 

 

第二十章:分层检索

 

1:课程目标

Oracle Database 11g : SQL 基础_Oracle Database_446

 

Oracle Database 11g : SQL 基础_Oracle Database_447Oracle Database 11g : SQL 基础_Oracle Database_448Oracle Database 11g : SQL 基础_Oracle Database_449

 

 

 

--1、从根节点开始遍历(start with ...connect by prior ) Conn scott/scott 
SQL> select empno,mgr,ename,job from emp start with empno = 7839 connect by prior empno = mgr; 
SQL> select level,empno,mgr,ename,job from emp start with ename = 'KING' connect by prior empno = mgr order by level;
-- 注:prior表示前一条记录,即下一条返回记录的mgr应当等于前一条记录的empno 
-- 2、获得层次数 
SQL> select count(distinct level) "Level" from emp start with ename = 'KING' connect by prior empno = mgr; 
--3、格式化层次查询结果(使用左填充* level - 1个空格) 
SQL> col Ename for a30 
SQL> select level,lpad(' ',2 * level - 1) || ename as "Ename",job from emp start with ename = 'KING' connect by prior empno = mgr; 
--4、从非根节点开始遍历(只需修改start with 中的条件即可) 
SQL> select level,lpad(' ',2 * level - 1) || ename as "Ename",job from emp start with ename = 'SCOTT' connect by prior empno = mgr; 
--5、从下向上遍历(交换connect by prior中的条件即可,使用mgr = empno),prior表示前一条记录,即下一条返回记录的empno应当等于前一条记录的mgr 
SQL> select level,lpad(' ',2 * level - 1) || ename as "Ename",job from emp start with ename = 'SCOTT' connect by prior mgr = empno; 
--从下向上遍历(也可以将prior置于等号右边,得到相同的结果) 
SQL> select level,lpad(' ',2 * level - 1) || ename as "Ename",job from emp start with ename = 'SCOTT' connect by empno = prior mgr; 
--6、从层次查询中删除节点和分支,通过where子句来过滤SCOTT用户,但SCOTT的下属ADAMS并没有过滤掉 
SQL> select level,lpad(' ',2 * level - 1) || ename as "Ename",job from emp where ename != 'SCOTT' start with empno = 7839 connect by prior empno = mgr; 
--7、通过将过滤条件由where 子句的内容移动到connect by prior 子句中过滤掉SCOTT及其下属 
SQL> select level,lpad(' ',2 * level - 1) || ename as "Ename",job from emp start with empno = 7839 connect by prior empno = mgr and ename != 'SCOTT';
 --8、在层次化查询中增加过滤条件或使用子查询 
SQL> select level,lpad(' ',2 * level - 1) || ename as "Ename",job from emp where sal > 2500 start with empno = 7839 connect by prior empno = mgr; 
SQL> select level,lpad(' ',2 * level - 1) || ename as "Ename",job from emp where sal > (select avg(sal) from emp) start with empno = 7839 connect by prior empno = mgr ;

 

 

 

 

 

 

2:EMPLOYEES 表中的示例数据

Oracle Database 11g : SQL 基础_Oracle Database_450

 

 

 

3:自然树结构

Oracle Database 11g : SQL 基础_Oracle Database_451

 

 

 

4:分层查询

Oracle Database 11g : SQL 基础_Oracle Database_452

 

 

 

5:遍历树

Oracle Database 11g : SQL 基础_Oracle Database_453

 

6:遍历树:自下而上

 

Oracle Database 11g : SQL 基础_Oracle Database_454

7:遍历树:自上而下

Oracle Database 11g : SQL 基础_Oracle Database_455

 

 

 

 

8:使用LEVEL 伪列确定行的等级

Oracle Database 11g : SQL 基础_Oracle Database_456

 

 

 

 

9:使用LEVEL 和LPAD 设置分层报表的格式

Oracle Database 11g : SQL 基础_Oracle Database_457

 

 

 

 

10:修剪分支

Oracle Database 11g : SQL 基础_Oracle Database_458

 

11:小结

Oracle Database 11g : SQL 基础_Oracle Database_459

第二十一章:Oracle DB 体系结构组件

 

1:课程目标

Oracle Database 11g : SQL 基础_Oracle Database_460

 

 

 

 

2:Oracle DB 体系结构:概览

Oracle Database 11g : SQL 基础_Oracle Database_461

 

 

 

 

 

3:Oracle DB Server 结构

Oracle Database 11g : SQL 基础_Oracle Database_462

 

 

 

 

 

4:连接到数据库

Oracle Database 11g : SQL 基础_Oracle Database_463

 

5:与Oracle DB 交互

Oracle Database 11g : SQL 基础_Oracle Database_464

 

 

 

 

 

 

 

6:Oracle 内存体系结构

Oracle Database 11g : SQL 基础_Oracle Database_465

 

 

 

7:进程体系结构

Oracle Database 11g : SQL 基础_Oracle Database_466

 

 

 

 

 

8:数据库写进程

Oracle Database 11g : SQL 基础_Oracle Database_467

 

 

 

 

 

9:日志写进程

Oracle Database 11g : SQL 基础_Oracle Database_468

 

 

10:检查点进程

Oracle Database 11g : SQL 基础_Oracle Database_469

 

 

 

11:系统监视器进程

 

Oracle Database 11g : SQL 基础_Oracle Database_470

 

 

 

 

 

 

 

12:进程监视器进程

Oracle Database 11g : SQL 基础_Oracle Database_471

 

 

 

13:Oracle DB 存储体系结构

Oracle Database 11g : SQL 基础_Oracle Database_472

 

 

 

 

14:逻辑和物理数据库结构

Oracle Database 11g : SQL 基础_Oracle Database_473

 

 

 

 

 

 

15:处理SQL 语句

Oracle Database 11g : SQL 基础_Oracle Database_474

 

 

 

16:处理查询

Oracle Database 11g : SQL 基础_Oracle Database_475

 

 

 

 

17:共享池

Oracle Database 11g : SQL 基础_Oracle Database_476

 

 

 

 

18:数据库缓冲区高速缓存

Oracle Database 11g : SQL 基础_Oracle Database_477

 

 

 

 

 

19:程序全局区(PGA)

Oracle Database 11g : SQL 基础_Oracle Database_478

 

 

 

 

 

20:处理DML 语句

Oracle Database 11g : SQL 基础_Oracle Database_479

 

 

21:重做日志缓冲区

Oracle Database 11g : SQL 基础_Oracle Database_480

 

 

 

 

 

 

22:回退段

Oracle Database 11g : SQL 基础_Oracle Database_481

 

 

23:COMMIT 处理

Oracle Database 11g : SQL 基础_Oracle Database_482

 

 

 

24:Oracle DB 体系结构小结

Oracle Database 11g : SQL 基础_Oracle Database_483

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=======================================================================================================================================

 

 

 

 

 

 

 

 

 

 

 

 

_____________________________________________________________________________________________________________________________________________________________________________

为人:谦逊、激情、博学、审问、慎思、明辨、 笃行
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
转载请标注出处!