Oracle数据库基础
2015-08-15 21:16
495 查看
Oracle数据库基础
1.Oracle简介:Oracle是一个数据库管理系统,是Oracle公司的核心产品。
Oracle数据库主要特点特点:
> 支持多用户、大事务量的事务处理
> 在保持数据安全性和完整性方面性能优越
> 支持分布式数据处理
> 具有可移植性
1.数据库
概念:Oracle是磁盘上存储数据的集合,在物理上表现为数据文件、日志文件和控制文件等,在逻辑上以表空间形式存在,首先必须创建数据库,然后才能使用Oracle。也可以在安装软件的同时创建数据库,也可以安装后单独创建数据库。
2.全局数据库名
3.数据库实例
4.表空间
5.数据文件
6.控制文件
7.日志文件
8.模式和模式对象
安装Oracle
Windows下启动数据库
Oracle常用的3个服务
(1)OracleServiceSID服务是Oracle数据库服务,此服务对应名为SID(系统标识符)的数据库实例创建的。SID是安装Oracle数据库时输入的数据库名称,默认自启动。
(2)OeacleOraDb11g_home1TNSListerer:监听器服务,远程连接数据库作用
(3)OracleDBConsoleSID:数据库控制台服务。
配置数据库
连接数据库
1.SQL*Plus工具:与Oracle数据库进行交互的客户端工具。
2.PL/SQL Developer:第三方客户端工具。
2.Oracle数据类型
(1)字符数据类型
a) Char数据类型:
b) Varchar2:
c) Nchar:
(2)数值数据类型
a) Number:
(3)日期时间数据类型
a) DATE数据类型
b) TIMESTAMP:
(4)LOB数据类型:
LOB又称为“大数据”数据类型,该数据可以存储多达4GB的非结构化数据,LOB允许对数据库进行高效、随机、分段的访问。可以是外部也可以是内部的。
a) CLOB(Character):存储大量字符数据(包括单字节和多字节)主要用于存储非结构化的XML文档。
b) BLOB(Binary):存储较大的二进制对象。
c) BFILE:将二进制文件存储在数据库外部的操作系统文件中。
d) NCLOB:用于存储大的NCHAR字符数据。
Oracle中的表可以有多个LOB,没个LOB列可以是不同的LOB类型。
Oracle中的伪劣:
1.ROWID:重要用途
a) 能以最快的速度访问表中的一行
b) 能显示表的行是如何存储的
c) 可以作为表中行的唯一标识
2.ROWNUM:限制查询返回的行数,
SQL语言简介:
> 数据库定义语言(DDL):CREATE(创建)、ALTER(更改)、TRUNCATE(截断)、DROP(删除)命令。
> 数据库操作语言(DML):INSERT(插入)、SELECT(选择)、DELETE(删除)、Update(更新)命令。
> 事务控制语言(TCL):COMMIT(提交)、SAVEPOINT(保存点)、ROLLBACK(回滚)。
> 数据控制语言(DCL):GRANT(授予)、REMOVE(回收)
数据定义语言:CREATE TABLE:
创建标明规则:
> 表名首字符为字母
> 不能使用Oracle保留字为表名
> 表名的最大长度为30个字符。
> 同以用户模式下的不同表不能具有相同的名称
> 可以使用”_”数字和字母,但不能使用空格和单引号
Oracle的表名(列名、用户名、其他对象名)不区分大小写,系统会自动转换大小写。
Varchar2标准数据类型 不建议使用VARCHAR
TRUNCATE TABLE<表名>:只删除表中的记录不删除表结构。节省资源,执行效率高。
提示:
(1)何时开启事务:在Oracle中,事务在上一次事务结束后,数据第一次被修改时自动开启。
(2)何时关闭事务
有两种情况
1.数据被提交
a) COMMIT
b) 执行DDL或DCL语句时,当前事务自动被提交
c) 与Oracle分离,退出PL/SQL Developer
2.数据被撤销
a) ROLLBACK
b) 服务器进程异常结束
c) DBA停止会话。
SQL操作符
1.算术操作符:+-*/
2.比较操作符:=>< => <= != Between and 、 IN、 LIKE、IS NULL
3.逻辑操作符:AND OR NOT
4.集合操作符:UNION(联合)、UNIONALL(联合所有)、INTERSECT(交集)、MINUS(减集)。
SQL函数
1.转换函数:
a) TO_CHAR:格式化显示日期类型的函数
b) TO_DATE:将TO_CHAR、TO_NUMBER数据类型转换为TO_DATE数据类型
c) TO_NUMBER:隐式转换。
2.其他函数:
a) NVL(exp1,exp2):1为NULL则返回2的值 否则返回1
b) NVL2(1,2,3):1为NULL则返回2的值 否则返回3
c) DECODE(value,1,then1,2,then2,):value1 f返回1 alue=2 返回2
3.分析函数
a) ROW_NUMBER:返回一个唯一的值,相同数据时排名顺序依次递增
b) DENSE_RANK:返回一个唯一的值,相同数据时排名顺序相同
c) RANK:返回一个唯一的值,相同数据排名相同,同时会在最后一条记录和下一条不同记录之间空出排名
02——Oracle数据库应用
1.表空间和用户权限管理
1.表空间:
表空间分类:
永久性、临时性、撤销表空间
目的:
(1)对不同用户分配不同的表空间,对不同模式对象分配不同的表空间,方便对用户数据的操作,对模式对象的管理。
(2)可以将不同的数据文件创建在不同的磁盘中,有利于管理磁盘空间性能、备份 和恢复数据等。
创建表空间:
CREATE TABLE tablespacename
删除表空间:
DROP TABLE tablespacename
2.自定义用户管理:
a) SYS:超级用户管理员
b) SYSTEM:默认系统管理员
c) Scott:临时示范用户
3.数据库权限管理:
a) 系统权限
常见的系统权限
> CREATESESSION:连接数据库
> CREATETABLE:创建表
> CREATEVIEW:创建试图
> CREATE SEQUENCES:创建序列
b) 对象权限
Oracle数据库用户有两种途径获得权限:
1.管理员直接向用户授予权限:1.直接授权
2.管理员将权限授予角色,然后再将角色授予给一个或多个用户:2.通过角色授权
2.序列
i. 创建序列:
ii. 访问苏列:
iii. 更改序列:
iv. 删除序列:
v. 使用序列:
3.同义词
同义词是表、视图、序列、函数、过程、程序包或者其他同义词的别名
4.索引
索引是与表关联的可选结构,是一种快速访问数据的途径,可提高数据库性能。
索引的分类:
单列或组合索引:分区或非分区索引
唯一或非唯一索引:B树索引
基于函数的索引:位图索引、正常或反向键索引
(1)B树索引:标准索引,默认索引
(2)唯一索引和非唯一索引:
a) 唯一索引:没有重复值,唯一索引的关键字只能指向表中的一行,在创建主键约束和创建唯一约束时都会创建一个与之对应的唯一索引。
b) 非唯一索引:单个关键字可以有多个与其关联的行
(3)反向键索引:与B树相反,
(4)位图索引:适用于低基数列。
优点:
a) 对于大批查询可以减少响应时间
b) 相比其他索引技术,占用空间明显减少
c) 即使在配置很低的终端硬件上也能获得显著的性能
(5)其他索引:
a) 组合索引:在表内多列上创建
b) 基于函数的索引:使用的函数或表达式正在建立索引中的表中的一列或多列则创建
5.分区表
i. Oracle允许用户把一个表中的所有行分为几个部分,并将这些部分存储在不同的位置。被分区的表称为分区表,分成的每个部分称为一个分区。
表分区优点:
》 改善表的查询性能
》 更容易管理
》 便于备份和分区
》 提高数据安全性
创建分区表条件
》 数据量大于2GB
》 已有的数据和新添加的数据有明显的界限划分。
分区表的分类:
1.范围分区:以列的值的范围作为分区的条件
2.间隔分区:范围分区的一种增强,可以实现范围分区的自动化
优点:在不需要创建表时就将所有分区划分清楚,随着数据的增加会划分出更多的分区,并自动创建新的分区。
表分区用于管理存储大表中的数据
总结:
一个数据库由一个或多个表空间组成,每个表空间中的数据保存在一个多个数据文件中,
分区方法包括:范围分区、散列分区、列表分区、复合分区、间隔分区和虚拟列分区。
运算符和表达式:
常量和变量的声明
注释:-- 、/**/
PL/SQL是一种可移植的高性能事务处理语言
2.PL/SQL 数据类型
1. 标量数据类型:
a) CHAR:
i. Character:定长字符串 0~32767
ii. Nchar:民族语言字符集: 可选 默认1
b) VARCHAR2
i. Varchar String可变字符串 0~32767
ii. NVARCHAR2:民族语言字符集 0~32767
c) BINARY_INTEGER:带符号整数,为整数计算优化性能
d) NUMBER:
i. DEC:小数
ii. DOUBLE Precision:整数 子类型
iii. Integer:整数 子类型
iv. INT:与NUmber等价
v. NUMERIC:与NUmber等价
vi. REAL:整数 比Integer小
vii. Small int:
e) LONG:变长字符串
f) DATE:日期
g) BOOLEAN:布尔类型 TRUE FALSE NULL
2. LOB数据类型:用于存储大的数据对象的类型。Oracle主要支持BFILE、BLOB、CLOB、NCLOB类型
3. 属性类型
a) %Type:
b) %ROWTYPE:
3.PL/SQL控制语句
控制结构共有三种类型:
1.条件控制:
a)
2.循环控制:
3.顺序控制:
a) NULL语句:一个可执行语句
4.异常处理
在运行程序时出现的错误叫异常。
5.显式游标
游标可分为静态游标和动态游标
静态游标可分为:隐式、显式 和REF游标
a) 显式游标的使用步骤:
1. 声明游标
2. 打开游标
3. 提取游标
4. 关闭游标
显式游标属性:
》 %FOUND:只有在DML语句影响一行或多行时%FOUND属性才会返回true
》 %NOTFOUND:与%FOUND相反
》 %ROWCOUNT:返回DML语句影响的行数 无影响返回0
》 %ISOPRN:返回游标是否打开
6.存储过程
1.声明部分
a) 声明部分包括类型、游标、常量、变量、异常和嵌套子程序的声明
2.可执行部分
a) 赋值、控制执行过程以及操作Oracle数据的语句
3.异常处理部分:包括异常处理程序,负责处理执行存储过程中出现的异常
a) 模块化:通过子程序可以将程序分解为可管理的、明确的逻辑模块
b) 可重用性:子程序在创建并执行后,就可以在任意数目的应用程序中使用
c) 可维护性:子程序简化维护操作
d) 安全性:用户可以设置权限使得访问数据的唯一方式就是通过用户提供的存储过程和函数。
4.用法:
1. 创建存储过程
2. 调用存储过程
a) 用命令在SQL提示符下调用
1. 执行存储过程
a) 参数的传递方式:
i. 按位置传递
ii. 按名称传递
iii. 混合方式传递
b) 在PL/SQL块中调用
3. 存储过程的参数模式
4. 存储过程的访问权限
5. 删除存储过程
5.规范:
a) 存储过程中不可以直接使用DDL语句,可以通过动态SQL实现。
b) 必须有相应的出错处理功能
c) 存储过程中变量在引用表字段的时候,需使用%TYPE和%ROWTYPE类型
d) 必须在存储过程中做异常处理,并将异常信息通过OS_MSG变量输出
e) 必须包含两个参数:on_Flag (NUMBER)和 os_Msg(VarChar2)
f) -19999~ -1的异常为Oracle定义的异常代码
g) “WHEN OTHERS”必须放置在异常处理代码的最后面作为默认处理器处理没有显式处理的异常。
1.Oracle简介:Oracle是一个数据库管理系统,是Oracle公司的核心产品。
Oracle数据库主要特点特点:
> 支持多用户、大事务量的事务处理
> 在保持数据安全性和完整性方面性能优越
> 支持分布式数据处理
> 具有可移植性
1.数据库
概念:Oracle是磁盘上存储数据的集合,在物理上表现为数据文件、日志文件和控制文件等,在逻辑上以表空间形式存在,首先必须创建数据库,然后才能使用Oracle。也可以在安装软件的同时创建数据库,也可以安装后单独创建数据库。
2.全局数据库名
3.数据库实例
4.表空间
5.数据文件
6.控制文件
7.日志文件
8.模式和模式对象
安装Oracle
Windows下启动数据库
Oracle常用的3个服务
(1)OracleServiceSID服务是Oracle数据库服务,此服务对应名为SID(系统标识符)的数据库实例创建的。SID是安装Oracle数据库时输入的数据库名称,默认自启动。
(2)OeacleOraDb11g_home1TNSListerer:监听器服务,远程连接数据库作用
(3)OracleDBConsoleSID:数据库控制台服务。
配置数据库
连接数据库
1.SQL*Plus工具:与Oracle数据库进行交互的客户端工具。
2.PL/SQL Developer:第三方客户端工具。
2.Oracle数据类型
(1)字符数据类型
a) Char数据类型:
b) Varchar2:
c) Nchar:
(2)数值数据类型
a) Number:
(3)日期时间数据类型
a) DATE数据类型
b) TIMESTAMP:
(4)LOB数据类型:
LOB又称为“大数据”数据类型,该数据可以存储多达4GB的非结构化数据,LOB允许对数据库进行高效、随机、分段的访问。可以是外部也可以是内部的。
a) CLOB(Character):存储大量字符数据(包括单字节和多字节)主要用于存储非结构化的XML文档。
b) BLOB(Binary):存储较大的二进制对象。
c) BFILE:将二进制文件存储在数据库外部的操作系统文件中。
d) NCLOB:用于存储大的NCHAR字符数据。
Oracle中的表可以有多个LOB,没个LOB列可以是不同的LOB类型。
Oracle中的伪劣:
1.ROWID:重要用途
a) 能以最快的速度访问表中的一行
b) 能显示表的行是如何存储的
c) 可以作为表中行的唯一标识
2.ROWNUM:限制查询返回的行数,
SQL语言简介:
> 数据库定义语言(DDL):CREATE(创建)、ALTER(更改)、TRUNCATE(截断)、DROP(删除)命令。
> 数据库操作语言(DML):INSERT(插入)、SELECT(选择)、DELETE(删除)、Update(更新)命令。
> 事务控制语言(TCL):COMMIT(提交)、SAVEPOINT(保存点)、ROLLBACK(回滚)。
> 数据控制语言(DCL):GRANT(授予)、REMOVE(回收)
数据定义语言:CREATE TABLE:
创建标明规则:
> 表名首字符为字母
> 不能使用Oracle保留字为表名
> 表名的最大长度为30个字符。
> 同以用户模式下的不同表不能具有相同的名称
> 可以使用”_”数字和字母,但不能使用空格和单引号
Oracle的表名(列名、用户名、其他对象名)不区分大小写,系统会自动转换大小写。
Varchar2标准数据类型 不建议使用VARCHAR
TRUNCATE TABLE<表名>:只删除表中的记录不删除表结构。节省资源,执行效率高。
提示:
(1)何时开启事务:在Oracle中,事务在上一次事务结束后,数据第一次被修改时自动开启。
(2)何时关闭事务
有两种情况
1.数据被提交
a) COMMIT
b) 执行DDL或DCL语句时,当前事务自动被提交
c) 与Oracle分离,退出PL/SQL Developer
2.数据被撤销
a) ROLLBACK
b) 服务器进程异常结束
c) DBA停止会话。
SQL操作符
1.算术操作符:+-*/
2.比较操作符:=>< => <= != Between and 、 IN、 LIKE、IS NULL
3.逻辑操作符:AND OR NOT
4.集合操作符:UNION(联合)、UNIONALL(联合所有)、INTERSECT(交集)、MINUS(减集)。
SQL函数
1.转换函数:
a) TO_CHAR:格式化显示日期类型的函数
b) TO_DATE:将TO_CHAR、TO_NUMBER数据类型转换为TO_DATE数据类型
c) TO_NUMBER:隐式转换。
2.其他函数:
a) NVL(exp1,exp2):1为NULL则返回2的值 否则返回1
b) NVL2(1,2,3):1为NULL则返回2的值 否则返回3
c) DECODE(value,1,then1,2,then2,):value1 f返回1 alue=2 返回2
3.分析函数
a) ROW_NUMBER:返回一个唯一的值,相同数据时排名顺序依次递增
b) DENSE_RANK:返回一个唯一的值,相同数据时排名顺序相同
c) RANK:返回一个唯一的值,相同数据排名相同,同时会在最后一条记录和下一条不同记录之间空出排名
02——Oracle数据库应用
1.表空间和用户权限管理
1.表空间:
表空间分类:
永久性、临时性、撤销表空间
目的:
(1)对不同用户分配不同的表空间,对不同模式对象分配不同的表空间,方便对用户数据的操作,对模式对象的管理。
(2)可以将不同的数据文件创建在不同的磁盘中,有利于管理磁盘空间性能、备份 和恢复数据等。
创建表空间:
CREATE TABLE tablespacename
删除表空间:
DROP TABLE tablespacename
2.自定义用户管理:
a) SYS:超级用户管理员
b) SYSTEM:默认系统管理员
c) Scott:临时示范用户
3.数据库权限管理:
a) 系统权限
常见的系统权限
> CREATESESSION:连接数据库
> CREATETABLE:创建表
> CREATEVIEW:创建试图
> CREATE SEQUENCES:创建序列
b) 对象权限
Oracle数据库用户有两种途径获得权限:
1.管理员直接向用户授予权限:1.直接授权
2.管理员将权限授予角色,然后再将角色授予给一个或多个用户:2.通过角色授权
2.序列
i. 创建序列:
ii. 访问苏列:
iii. 更改序列:
iv. 删除序列:
v. 使用序列:
3.同义词
同义词是表、视图、序列、函数、过程、程序包或者其他同义词的别名
4.索引
索引是与表关联的可选结构,是一种快速访问数据的途径,可提高数据库性能。
索引的分类:
单列或组合索引:分区或非分区索引
唯一或非唯一索引:B树索引
基于函数的索引:位图索引、正常或反向键索引
(1)B树索引:标准索引,默认索引
(2)唯一索引和非唯一索引:
a) 唯一索引:没有重复值,唯一索引的关键字只能指向表中的一行,在创建主键约束和创建唯一约束时都会创建一个与之对应的唯一索引。
b) 非唯一索引:单个关键字可以有多个与其关联的行
(3)反向键索引:与B树相反,
(4)位图索引:适用于低基数列。
优点:
a) 对于大批查询可以减少响应时间
b) 相比其他索引技术,占用空间明显减少
c) 即使在配置很低的终端硬件上也能获得显著的性能
(5)其他索引:
a) 组合索引:在表内多列上创建
b) 基于函数的索引:使用的函数或表达式正在建立索引中的表中的一列或多列则创建
5.分区表
i. Oracle允许用户把一个表中的所有行分为几个部分,并将这些部分存储在不同的位置。被分区的表称为分区表,分成的每个部分称为一个分区。
表分区优点:
》 改善表的查询性能
》 更容易管理
》 便于备份和分区
》 提高数据安全性
创建分区表条件
》 数据量大于2GB
》 已有的数据和新添加的数据有明显的界限划分。
分区表的分类:
1.范围分区:以列的值的范围作为分区的条件
2.间隔分区:范围分区的一种增强,可以实现范围分区的自动化
优点:在不需要创建表时就将所有分区划分清楚,随着数据的增加会划分出更多的分区,并自动创建新的分区。
表分区用于管理存储大表中的数据
总结:
一个数据库由一个或多个表空间组成,每个表空间中的数据保存在一个多个数据文件中,
分区方法包括:范围分区、散列分区、列表分区、复合分区、间隔分区和虚拟列分区。
03——PL/SQL编程
1.PL/SQL:结合了Oracle过程语言和结构化查询语言的一种扩展语言。运算符和表达式:
常量和变量的声明
注释:-- 、/**/
PL/SQL是一种可移植的高性能事务处理语言
2.PL/SQL 数据类型
1. 标量数据类型:
a) CHAR:
i. Character:定长字符串 0~32767
ii. Nchar:民族语言字符集: 可选 默认1
b) VARCHAR2
i. Varchar String可变字符串 0~32767
ii. NVARCHAR2:民族语言字符集 0~32767
c) BINARY_INTEGER:带符号整数,为整数计算优化性能
d) NUMBER:
i. DEC:小数
ii. DOUBLE Precision:整数 子类型
iii. Integer:整数 子类型
iv. INT:与NUmber等价
v. NUMERIC:与NUmber等价
vi. REAL:整数 比Integer小
vii. Small int:
e) LONG:变长字符串
f) DATE:日期
g) BOOLEAN:布尔类型 TRUE FALSE NULL
2. LOB数据类型:用于存储大的数据对象的类型。Oracle主要支持BFILE、BLOB、CLOB、NCLOB类型
3. 属性类型
a) %Type:
b) %ROWTYPE:
3.PL/SQL控制语句
控制结构共有三种类型:
1.条件控制:
a)
2.循环控制:
3.顺序控制:
a) NULL语句:一个可执行语句
4.异常处理
在运行程序时出现的错误叫异常。
5.显式游标
游标可分为静态游标和动态游标
静态游标可分为:隐式、显式 和REF游标
a) 显式游标的使用步骤:
1. 声明游标
2. 打开游标
3. 提取游标
4. 关闭游标
显式游标属性:
》 %FOUND:只有在DML语句影响一行或多行时%FOUND属性才会返回true
》 %NOTFOUND:与%FOUND相反
》 %ROWCOUNT:返回DML语句影响的行数 无影响返回0
》 %ISOPRN:返回游标是否打开
6.存储过程
1.声明部分
a) 声明部分包括类型、游标、常量、变量、异常和嵌套子程序的声明
2.可执行部分
a) 赋值、控制执行过程以及操作Oracle数据的语句
3.异常处理部分:包括异常处理程序,负责处理执行存储过程中出现的异常
a) 模块化:通过子程序可以将程序分解为可管理的、明确的逻辑模块
b) 可重用性:子程序在创建并执行后,就可以在任意数目的应用程序中使用
c) 可维护性:子程序简化维护操作
d) 安全性:用户可以设置权限使得访问数据的唯一方式就是通过用户提供的存储过程和函数。
4.用法:
1. 创建存储过程
2. 调用存储过程
a) 用命令在SQL提示符下调用
1. 执行存储过程
a) 参数的传递方式:
i. 按位置传递
ii. 按名称传递
iii. 混合方式传递
b) 在PL/SQL块中调用
3. 存储过程的参数模式
4. 存储过程的访问权限
5. 删除存储过程
5.规范:
a) 存储过程中不可以直接使用DDL语句,可以通过动态SQL实现。
b) 必须有相应的出错处理功能
c) 存储过程中变量在引用表字段的时候,需使用%TYPE和%ROWTYPE类型
d) 必须在存储过程中做异常处理,并将异常信息通过OS_MSG变量输出
e) 必须包含两个参数:on_Flag (NUMBER)和 os_Msg(VarChar2)
f) -19999~ -1的异常为Oracle定义的异常代码
g) “WHEN OTHERS”必须放置在异常处理代码的最后面作为默认处理器处理没有显式处理的异常。
相关文章推荐
- oracle锁表解除
- MySQL与Oracle的语法区别详细对比
- Oracle数据库表被锁
- Oracle学习笔记20150815多表查询
- oracle rac 11.2.0.3 升级到11.2.0.4
- MySQL、Oracle、SQL Server
- oracle游标
- Oracle中OEM的启动与关闭
- 批处理打开和关闭oracle11g 服务
- oracle创建user具体指示
- ORA-04031: 无法分配 3936 字节的 共享内存
- Oracle存储过程完整结构讲解
- Oracle 11gR2单实例数据库补丁升级记录
- oracle sql分组合并
- Oracle中查询前10条记录
- c# 连接oracle 读取数据
- 检索06 - Oracle MySql SqlSever之间的区别和优缺点
- oracle用户创建及权限设置
- 浅说两种输出Oracle字符文件的方法
- Oracle触发器