第1章关系数据库系统与Oracle 10g介绍
第2章SQL和SQL*Plus概述
第3章 创建、修改、重命名和删除数据库的表
第4章 修改数据以及审计表的 *** 作
4.1 将数据行插入表中
4.1.1 指定列的列表
4.1.2 处理完整性约束
4.1.3 省略列名
4.1.4 插入日期和时间
4.1.5 从其他表中插入数据
4.1.6 创建和使用序列
4.2 更新数据
4.2.1 更新语句
4.2.2CASE结构介绍
4.2.3 用CASE结构更新数据
4.2.4 替代变量
4.3 删除行和截断表
4.3.1 删除选择的行
4.3.2 删除所有行
4.4 合并行
4.5 数据库事务
4.5.1 提交
4.5.2 回退
4.5.3 保留点
4.6 创建和使用数据库触发器
4.6.1 触发器介绍
4.6.2 创建和使用BEFORE触发器
4.6.3 创建一个AFTER触发器审计表 *** 作
4.6.4 创建和使用语句级触发器
4.6.5 显示、更改、删除触发器
4.7 小结
第5章 查询数据库
5.1 显示单个数据库表中的数据
5.1.1 编写SELECT语句
5.1.2 选择所有的列
5.1.3 使用DISTINCT显示唯一的行
5.1.4 中断失控的查询
5.1.5 使用搜索条件过滤结果
5.1.6 排序
5.1.7 在查询中包含计算
5.2 SQL函数介绍
5.2.1 在查询中使用单行函数
5.2.2 使用聚集函数
5.2.3 对结果进行分组
5.2.4 用HAVING子句过滤组
5.2.5 格式化SQL*Plus的输出并创建简单的报表
5.3 小结
第6章 创建多表查询和视图
6.1 创建和使用多表查询
6.1.1 联结具有匹配列值的表
6.1.2 理解其他联结类型和联结条件
6.1.3 集合 *** 作符
6.1.4 使用子查询
6.2 创建和使用视图
6.2.1 视图的用途
6.2.2 定义和查询一个表的视图
6.2.3 用一个表的视图修改表数据
6.2.4 创建复杂视图
6.2.5 创建同义词以简化表引用
6.2.6 列出视图定义
6.2.7 删除视图
6.3 小结
第7章 使用PL/SQL
7.1PL/SQL介绍
7.1.1PL/SQL的优点
7.1.2PL/SQL块的类型
7.2 理解匿名块
7.2.1 考察声明部分
7.2.2 考察可执行部分
7.2.3 考察异常处理部分
7.3 创建匿名块
7.3.1 初始化Redwood Realty数据库
7.3.2 编写匿名块
7.3.3 建立SQL*Plus环境
7.3.4 运行匿名的PL/SQL块
7.3.5 修改匿名块显示多行
7.3.6 处理异常情况
7.4 理解显式游标
7.4.1PL/SQL循环结构介绍
7.4.2 使用显式游标和循环处理行
7.4.3 使用FOR循环处理显式游标
7.4.4 IF语句介绍
7.5 有名块的介绍
7.6 创建、使用、显示并删除函数
7.6.1 创建并存储函数
7.6.2 调用函数
7.6.3 修改函数
7.6.4 显示并删除函数
7.7 创建、使用、显示和删除过程
7.7.1 过程的优点
7.7.2 创建并存储过程
7.7.3 调用存储过程
7.7.4 修改过程并重新编译和保存过程
7.7.5 显示和删除过程
7.8 小结
第8章 理解和使用Forms Builder
8.1 表单介绍
8.1.1 种主要的表单类型
8.1.2 表单服务体系结构
8.1.3Oracle表单的基本结构
8.2 用Forms Builder创建一个简单的主表单
8.2.1Forms Builder向导
8.2.2 用Run Form按钮测试表单
8.2.3 用表单查询显示数据
8.3 修改表单
8.3.1 布局编辑器
8.3.2 对象导航器
8.3.3 基本属性
8.3.4 添加图像
8.3.5 添加查找列
8.3.6 创建一个值列表
8.3.7 自动执行查询的步骤
8.3.8 单选按钮和复选框
8.4 创建表格式表单和子表单
8.4.1 创建表格式表单
8.4.2 创建主表单和子表单
8.4.3 给网格添加显示列
8.4.4 设置格式掩码
8.5 小结
第9章 定制表单
9.1 设置表单结构
9.1.1 创建画布和简单的数据块
9.1.2 创建查询数据块
9.1.3 完成搜索工作
9.2 设计表单触发器
9.2.1 定义表单事件
9.2.2 创建和编辑触发器
9.2.3 调试触发器
9.2.4 处理错误
9.2.5 理解表单程序的作用域和生命周期
9.3 建立有用的表单工具
9.3.1 创建序列
9.3.2 验证表单输入
9.3.3 计算网格数据小计
9.4 使用多个画布
9.4.1 添加一个画布
9.4.2 叠加画布
9.4.3 标签画布
9.4.4 表单样式的评论
9.5 用JDeveloper创建Web表单
9.5.1 修改Listings表并建立服务器文件
9.5.2 创建数据连接和工作区
9.5.3 创建业务组件数据模型
9.5.4 创建Java服务器页面显示数据
9.5.5 添加搜索表单
9.6 小结
第10章 创建和修改报表
10.1 报表开发器介绍
10.1.1 网络发布和纸质报表
10.1.2 报表的类型
10.1.3 Oracle报表服务
10.2 建立和修改报表
10.2.1 报表结构
10.2.2Report Builder
10.2.3 纸质设计和布局窗口
10.2.4 对象导航器窗口
10.3 增强报表的功能
10.3.1 对齐和调整列
10.3.2 设置格式掩码和属性
10.3.3 添加阴影和边框
10.3.4 插入页号和日期
10.3.5 添加文本框
10.4 定制报表
10.4.1 数据模型
10.4.2 添加字段
10.4.3 数据组结构及框架
10.4.4 手工创建报表
10.4.5 显示数据库中的映像
10.5 控制报表中的数据
10.5.1 创建用户参数
10.5.2 使用过滤器限制报表
10.5.3 创建报表触发器
10.6 创建定制模板
10.6.1 设计定制模板
10.6.2 应用模板
10.6.3 注册模板
10.7 定制Web报表
10.7.1 动态报表的环境
10.7.2 更改Web报表
10.7.3 给Web报表添加图表
10.8 小结
第11章 建立集成应用
11.1 设计一个集成数据库应用
11.1.1 组织Redwood Realty
11.1.2 一致的外观
11.1.3 创建模板表单
11.1.4 创建和应用属性类和可视属性
11.1.5 应用模板表单和属性
11.2 在应用中连接表单和报表
11.2.1 启动表单
11.2.2 打开所连接的表单
11.2.3 显示报表
11.2.4 在OracleAS中部署表单和报表
11.3 创建菜单
11.3.1 菜单的作用
11.3.2 建立菜单
11.3.3 创建菜单动作
11.3.4 部署和使用菜单
11.4 创建帮助文件
11.4.1Oracle的Web帮助系统
11.4.2 创建HTML帮助文件
11.4.3 部署并使用帮助文件
11.5 小结
第12章 维护数据库安全
12.1 创建和编辑用户账号
12.1.1 用户验证
12.1.2 用户角色
12.1.3 系统权限和对象权限
12.2 控制用户对对象的访问
12.2.1 创建角色
12.2.2 授予和撤销权限
12.3 利用视图和过程实施权限
12.3.1 对选定行和列的限制访问
12.3.2 利用过程限制更新
12.3.3 虚拟专用数据库和标签安全
12.3.4 限制应用内的访问
12.4 加密保护数据
12.4.1 安全的因特网传输
12.4.2 加密数据库中选定的数据
12.4.3 用wrap保护源代码
12.5 审计数据库
12.5.1 启用审计
12.5.2 查看审计跟踪
12.5.3 创建审计触发器
12.5.4 细粒度审计
12.6 小结
第13章 数据库管理
13.1DBA职责一览
13.2 使用企业管理器
13.3 理解Oracle的存储文件
13.3.1 保护控制文件
13.3.2 创建表空间和数据文件
13.3.3 配置撤销和重做 *** 作
13.4 为模式对象配置空间
13.4.1 设置表存储参数
13.4.2 定义群
13.4.3 创建分区
13.5 导出和导入数据
13.5.1 使用SQL脚本
13.5.2 使用数据泵
13.5.3 使用SQL*Loader和外部表
13.6 维护DBMS
13.6.1补丁和升级
13.6.2 启动和关闭数据库
13.7 备份数据库
13.7.1 备份数据库的复杂性
13.7.2 关闭和系统备份(冷备份)
13.7.3 继续备份和归档(热备份)
13.8 监控和改善数据库性能
13.8.1 监控工具
13.8.2 优化查询
13.9 利用系统视图获得有用信息
13.10 小结
词汇表
索引(图灵网站下载)
Oracle主要数据类型
概述 各种数据库所支持的数据类型大同小异 与标准SQL语言中的数据类型可能略有出入
类型 varchar 可以在声明字段时设置它的长度上限 而且使用它之后 就不必再考虑空格的存在
若插入的字符串的长度低于长度上限 系统就会自动将其缩减为字符串的真实长度
number(m n) 既可以用来表示整型 也可以表示浮点型 但m不可以超过 如果n为 或者省略n 就代表它是整数
date 用来存放日期和时间
blob 通常是在应用程序中使用到它 而不是在数据库中利用SQL指令直接使用
比如通过JDBC技术访问数据库 读写blob或clob类型的字段 即读写长的字符串信息等等
char 它是一种定长的字符类型 在Oracle数据库不区分字符和字符串 它们被统称为字符型或文本型
所谓定长的字符型是指 插入的字符串若没有达到约定的字段长度 系统就会在字符串尾部自动补空格
同样 读取时的字段长度永远是声明时的字段长度 而且在比较字符串内容的时候 也需要考虑到空格的过滤
nchar 它也是定长的字符串类型 它是SQL语言标准中规定的 通常采用Unicode编码来保存不同国家或不同语言的字符
varchar SQL标准在定义varchar时并没有保证能够向前和向后兼容 即有可能随着语言标准的修改而产生不兼容的问题
所以Oracle定义了同varchar型类似的varchar 型 就是为了在Oracle以后的版本中 都永远支持varchar 类型
Oracle这么做就是为了确保此类型向前后兼容 以达到能够在Oracle系列数据库中进行数据的导入和导出的目的
long 它和varchar 的差别在于 它不支持对字符串内容进行检索 即查询时不可以对它的内容进行条件查询
而varchar 和char nchar型等等都可以在查询的时候直接检索字符串的内容
补充 select * from v$nls_parameters数据库的配置信息以数据表的形式存在 通常称其为关于数据的数据或数据字典
实际上它查询的是数据字典中的一个视图 其中NLS_CHARACTERSET对应的是当前的数据库字符集
缺省均为使用数据库字符集 教程中使用的是安装时默认的ZHS GBK字符集 即汉字占 个字节 英文占 个字节
而NLS_NCHAR_CHARACTERSET对应的是nchar或nvarchar 类型所采用的辅助字符集 即AL UTF 字符集
实际上AL UTF 是一种 位定长的Unicode编码的字符集 而数据库字符集以及这种国家字符集都可以修改
但数据库字符集修改后可能会面临很严重的后果 除非是数据库管理员 普通用户不必对这方面进行深究
数据库中的数据导入导出的时候 如果源数据库和目标数据库所采用的字符集不同 也很容易出问题
函数
概述 函数可以认为是能够完成相对独立的功能的一段代码的集合 Oracle函数相当于其它语言中的方法或过程
Oracle函数可以分为单行函数和多行函数两大类 Oracle函数都是有返回值的
所谓的单行函数是针对查询结果中的每一行都起作用 都会返回一个结果
多行函数也就是所谓分组函数 是针对一组查询的记录 或者说多行 返回一个结果
单行 *** 作数据项 接受参数并返回处理结果 对每一返回行均起作用 可修改数据类型 可嵌套使用
单行函数分为字符函数 数值函数 日期函数 转换函数 通用函数
多行 也称分组函数 即对一组数据进行运算 针对一组数据(多行记录)只能返回一个结果
多行函数包括avg() count() max() min() sum()等
比如select avg(sal) max(sal) min(sal) sum(sal) max(hiredate) min(hiredate) from emp
续一 使用Oracle的系统函数中的单行函数可实现诸多功能 如对数据进行计算 控制数据的输出格式
设置和改变日期的显示格式 进行数据类型转换 使用NVL等函数处理空值 实现IF THEN ELSE多路分支逻辑等等
续二 转换函数不会改变表中数据的字段类型和值 它就相当于将数据复制了一份 所转换的是复制之后的数据
数据类型转换包括隐含转换和显式转换两种方式 建议使用显式的数据类型转换 确保SQL语句的可靠性
续三 通用函数适用于包括空值在内的任何类型数据 通常用来实现空值的处理 空值的过滤或设置缺省值等
通用函数包括nvl() nvl () nullif() coalesce() case表达式 decode()等
嵌套 单行函数可以嵌套使用 嵌套层次无限制 分组函数最多可嵌套两层 嵌套函数的执行顺序是由内到外
单行比如select empno lpad(initcap(trim(ename)) ) 姓名 job sal from emp
多行比如select max(avg(sal)) from emp group by deptno其实这里再使用分组函数就没有意义了
说明 通常数据库层面提供的函数 只是进行数据的简单的处理 或者说是只能实现极为常规的功能
所以就不应该 或者说是不要指望在数据库查询的层面来实现特别复杂的业务逻辑
如果应用程序的逻辑跟数据库混在一起的话 会不利于代码的维护和更新
而且也不利于数据库的管理 包括数据移植 数据库导入导出等等
日期类型
概述 在计算机 *** 作系统或者各种高级编程语言中 日期通常会被保存成一个长整数 通常记录的是毫秒
Oracle内部以数字格式存储日期和时间信息 世纪 年 月 日 小时 分钟 秒
缺省的日期格式是DD—MON—YY 可使用sysdata函数获取当前系统日期和时间
运算 日期型数据可以直接加或减一个数值 结果认为日期 约定的该数值代表的是相加减的天数
两个日期型数据可以相减 结果为二者相差多少天 二者不能 因为日期相加是没有意义的
NVL()函数
概述 它用于将空值null替换为指定的缺省值 适用于字符 数字 日期等类型数据
格式 NVL(exp exp ) 如果表达式exp 值为null 则返回exp 值 否则返回exp 值
举例 select empno ename sal m sal+nvl(m ) from emp
select empno ename job nvl(job No job yet ) from emp
NVL ()函数
概述 它用于实现条件表达式功能
格式 NVL (exp exp exp ) 如果表达式exp 值不为null 则返回exp 值 否则返回exp 值
举例 select empno ename sal m nvl (m sal+m sal) 总收入 from emp
NULLIF()函数
概述 它用于数据等价性比较并根据比较结果返回null或其中一个被比较的数值 实际开发中应用并不是很多
格式 nullif(exp exp ) 如果表达式exp 与exp 的值相等 则返回null 否则返回exp 的值
举例 select name 原名 nullif(pen_name name) 化名 from author
COALESCE()函数
概述 它用于实现数据“接合”功能
格式 coalesec(exp exp ) 依次考察各参数表达式 遇到非null值即停止并返回该值
若表达式均为null值 则返回null 通常最后一个表达式都是能确保不是空值的字段
举例 select empno ename sal m coalesec(sal+m sal ) 总收入 from emp
CASE表达式
概述 它用于实现多路分支结构
格式 case exp when parison_exp then return_exp
[when parison_exp then return_exp
when parison_expn then return_expn
else else_exp]
end
举例 select empno ename sal
case deptno when then 财务部
when then 研发部
when then 销售部
else 未知部门
end 部门
from emp
说明 CASE中的每一个表达式(如deptno 财务部等)都可以是复合而成的
这种对齐方式的书写是为了增加可读性 当然也可以把代码写在同一行上
其中case到end之间的整体就相当于普通查询中的一个字段 end后面的“部门”是别名
DEDODE()函数
概述 和case表达式类似 它也用于实现多路分支结构
格式 decode(col|expression search result
[ search result ]
[ default])
举例 select empno ename sal
decode(deptno 财务部
研发部
销售部
未知部门 )
部门
from emp
COUNT()函数
格式 count(*)返回组中总记录数目
count(exp)返回表达式exp值非空的记录
count(distinct(exp))返回表达式exp值不重复的 非空的记录数目
举例 select count(*) from emp缺省的情况下 整个表就是一组
select count(m) from emp返回emp表中m字段不为空的记录(行)数目
select count(distinct(deptno)) from emp查找deptno值为非空且不重复的记录数目
分组函数与空值
概述 分组函数省略列中的空值 可使用NVL()函数强制分组函数处理空值
举例 select avg(m) from emp等价于sum(m)/count(m)
select sum(m) from emp计算表中非空的m值的总和
select avg(nvl(m )) from emp等价于avg(nvl(m ))/count(*)
GROUP BY子句
概述 它用于将表中数据分成若干小组
格式 select column group_function(column)
from table
[where condition]
[group by group_by_expression]
[order by column]
举例 select deptno avg(sal) from emp group by deptno
说明 出现在SELECT列表中的字段 如果不是包含在组函数中 那么该字段必须同时在GROUP BY子句中出现
包含在GROPY BY子句中的字段则不必须出现在SELECT列表中 子句执行顺序是where→group by→order by缺省按升序排列
补充 select deptno job avg(sal) from emp group by deptno job order by deptno desc基于多个字段的分组
select deptno avg(sal) from emp非法
注意 如果没有GROUP BY子句 SELECT列表中不允许出现字段(单行函数)与分组函数混用的情况
WHERE中不允许使用分组函数 如select deptno avg(sal) from emp where avg(sal)>group by deptno非法
这跟子句执行的顺序有关 where子句最先执行 在执行where子句的时候还没有执行过group by子句
于是程序不知道这是在分组 也不曾计算过avg(sal)的组内平均工资 所以在where子句中不允许使用分组函数
由于还没有执行过group by子句 所以此时就不确定如何怎么分组以及分多少个组
所以where子句中只能进行初级过滤 此时可以使用HAVING子句实现对平均工资的过滤
HAVING子句
概述 它用于过滤分组
格式 select column group_function(column)
from table
[where condition]
[group by group_by_expression]
[having group_condition]
[order by column]
举例 select deptno job avg(sal)
from emp
where hiredate >= to_date( yyyy mm dd )
group by by deptno job
having avg(sal) >
lishixinzhi/Article/program/Oracle/201311/190871、创建数据库;
2、创建表空间,配置存放数据文件的目录;创建用户和数据表时需要用到表空间,最好创建单独的表空间;
3、创建用户,以后在程序中连接数据库时需要用到用户,系统用户如sys/system一般用于管理数据库;创建用户时需要选择表空间;
4、创建数据表,根据业务设计数据表和表间关系;创建数据表时需要选择用户和表空间;
5、建议安装数据库开发工具,本人用的是PL/SQL Developer,方便简洁,用于编写触发器、存储过程、sql语句等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)