《第5章Oracle数据表对象.ppt》由会员分享,可在线阅读,更多相关《第5章Oracle数据表对象.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第5 5章章 OracleOracle数据表对象数据表对象与其他数据库(如与其他数据库(如SQL Server、MySQL)不同,)不同,Oracle数据库的下一层逻辑结构并非数据表,而是表空间;数据库的下一层逻辑结构并非数据表,而是表空间;每个数据表都属于唯一的表空间。因此,本章将首先介绍表每个数据表都属于唯一的表空间。因此,本章将首先介绍表空间,然后介绍数据表及相关操作。本章的主要内容包括以空间,然后介绍数据表及相关操作。本章的主要内容包括以下几个方面:下几个方面:创建创建Oralce表空间;表空间;创建创建Oracle数据表;数据表;修改数据表结构;修改数据表结构;删除数据表;删除数据
2、表;备份备份/恢复数据表;恢复数据表;特殊数据表。特殊数据表。5.1 Oracle5.1 Oracle表空间表空间表空间(表空间(TableSpace)是)是Oracle的开创性理念。表空的开创性理念。表空间使得数据库管理更加灵活,而且极大地提高了数据库性能。间使得数据库管理更加灵活,而且极大地提高了数据库性能。5.1.1 Oracle5.1.1 Oracle表空间简介表空间简介 1避免磁盘空间突然耗竭的风险避免磁盘空间突然耗竭的风险2规划数据更灵活规划数据更灵活3提高数据库性能提高数据库性能4提高数据库安全性提高数据库安全性5.1.2 5.1.2 创建创建OracleOracle表空间表空间
3、1创建一个简单的表空间创建一个简单的表空间create tablespace test datafile f:databaseoracletest_data.dbf size 20M 2指定数据文件的可扩展性指定数据文件的可扩展性-autoextend on3指定数据文件的增长幅度指定数据文件的增长幅度-autoextend On Next 5m 4指定数据文件的最大尺寸指定数据文件的最大尺寸-autoextend On Next 5m Maxsize 500M5查看表空间是否创建成功:查看表空间是否创建成功:select file_name,tablespace_name from dba_
4、data_files order by file_name 6为一个表空间创建多个数据文件为一个表空间创建多个数据文件5.1.3 5.1.3 查看表空间查看表空间每个数据库在创建时都会自动创建几个表空间,这些表每个数据库在创建时都会自动创建几个表空间,这些表空间和用户创建的表空间信息,都存储在数据词典中。可以空间和用户创建的表空间信息,都存储在数据词典中。可以通过查询视图通过查询视图dba_tablespaces和视图和视图dba_data_files来获来获得数据库的表空间信息。得数据库的表空间信息。dba_tablespaces可以用来查看所可以用来查看所有表空间的基本信息;而有表空间的基
5、本信息;而dba_data_files可以用来查看相关可以用来查看相关数据文件的信息。数据文件的信息。5.1.4 5.1.4 修改数据库默认表空间修改数据库默认表空间默认表空间是相对用户来说的,也就是说,每个用户登默认表空间是相对用户来说的,也就是说,每个用户登录录Oralce数据库时,都有一个默认的工作空间。当进行与表数据库时,都有一个默认的工作空间。当进行与表空间相关操作(例如,创建数据表,每个数据表都隶属于一空间相关操作(例如,创建数据表,每个数据表都隶属于一个表空间),如果未显式指定表空间(例如,创建数据表,个表空间),如果未显式指定表空间(例如,创建数据表,未显式指定将表创建于哪个表
6、空间中),则该操作将作用于未显式指定将表创建于哪个表空间中),则该操作将作用于用户的默认表空间。用户的默认表空间。select user_id,username,default_tablespace from dba_usersalter database default tablespace user15.1.5 5.1.5 修改表空间名称修改表空间名称在在Oracle 10g中,新增了修改表空间名称这一特性。中,新增了修改表空间名称这一特性。修改表空间名称应该使用修改表空间名称应该使用renmae to命令。命令。alter tablespace user2 rename to user2
7、0 说明:表空间重命名并不对数据文件产生影响。说明:表空间重命名并不对数据文件产生影响。最后,需要注意的是,不能对数据的系统表空间进行重最后,需要注意的是,不能对数据的系统表空间进行重命名,例如命名,例如SYSTEM,SYSAUX等无法进行重命名。等无法进行重命名。5.1.6 5.1.6 删除表空间删除表空间如果某个表空间没有存在的必要,那么可以执行删除表如果某个表空间没有存在的必要,那么可以执行删除表空间命令,以释放磁盘空间。删除表空间的命令为空间命令,以释放磁盘空间。删除表空间的命令为drop tablespace。删除表空间有两种方式,一种是仅仅删除其在。删除表空间有两种方式,一种是仅仅
8、删除其在数据库中的记录,二是将记录和数据文件一起删除。数据库中的记录,二是将记录和数据文件一起删除。drop tablespace user20drop tablespace user20 including contents and datafiles5.2 5.2 创建创建OracleOracle数据表数据表Oracle表空间的下一层逻辑结构即为数据表。数据表表空间的下一层逻辑结构即为数据表。数据表也是各种数据库中共有的、开发人员和也是各种数据库中共有的、开发人员和DBA最常打交道的数最常打交道的数据库对象。本节着重介绍如何创建据库对象。本节着重介绍如何创建Oracle数据表。数据表。5.
9、2.1 5.2.1 利用工具创建数据表利用工具创建数据表利用工具创建数据表,操作简单、直观、易于掌握。很利用工具创建数据表,操作简单、直观、易于掌握。很多数据库管理工具都提供了图形化界面来创建数据表,如多数据库管理工具都提供了图形化界面来创建数据表,如MS SQL Server企业管理器。针对企业管理器。针对Oracle数据库,数据库,PL/SQL Developer是一个不错的选择。是一个不错的选择。5.2.2 5.2.2 利用工具查看数据表利用工具查看数据表在创建了数据表在创建了数据表T_USER后,同样可以在后,同样可以在PL/SQL Developer中查看该表的信息。中查看该表的信息
10、。小技巧:通过右键单击小技巧:通过右键单击【Columns】分支,执行分支,执行【Copy comma separated】菜单命令,可以将所有列名拷菜单命令,可以将所有列名拷出,并以逗号作为分隔符。这在数据表的列很多、使用出,并以逗号作为分隔符。这在数据表的列很多、使用INSERT语句时,最为有用。语句时,最为有用。5.2.3 5.2.3 利用命令创建数据表利用命令创建数据表利用命令同样可以创建数据表,其效果与利用工具完全利用命令同样可以创建数据表,其效果与利用工具完全相同。创建数据表的命令为相同。创建数据表的命令为CREATE TABLE。create table only_test(id
11、 number,name varchar2(20)5.2.4 5.2.4 利用命令查看表结构利用命令查看表结构同样可以通过命令方式来获得数据表的信息。例如,可同样可以通过命令方式来获得数据表的信息。例如,可以通过查询语句获得所属表空间。以通过查询语句获得所属表空间。Describe only_test5.3 5.3 修改修改OracleOracle数据表结构数据表结构数据表一旦创建,并不是一成不变的,修改数据表结构数据表一旦创建,并不是一成不变的,修改数据表结构也成为开发人员必不可少的知识。本章将从工具方式和命令也成为开发人员必不可少的知识。本章将从工具方式和命令方式两个角度讲述如何修改数据表
12、结构。方式两个角度讲述如何修改数据表结构。5.3.1 5.3.1 利用工具修改数据表结构利用工具修改数据表结构利用工具修改数据表结构,操作简单、直观。最常用的利用工具修改数据表结构,操作简单、直观。最常用的工具自然是工具自然是PL/SQL Developer。在该页面中,可以直接修改列名,例如,将在该页面中,可以直接修改列名,例如,将USER_EMAIL的列名修改为的列名修改为EMAIL;可以修改列的数据类;可以修改列的数据类型,例如,将型,例如,将USER_NAME的长度修改为的长度修改为15字符;可以直字符;可以直接增加新列,例如,增加新列接增加新列,例如,增加新列REMARK作为备注。作
13、为备注。5.3.2 5.3.2 利用命令修改数据表结构利用命令修改数据表结构使用命令方式同样可以修改数据表结构。修改数据表结使用命令方式同样可以修改数据表结构。修改数据表结构的构的SQL命令为命令为alter table。注意,不要轻易修改一个表的表名,因为所有针对该表注意,不要轻易修改一个表的表名,因为所有针对该表的操作都是以表名作为标识,修改表名有可能影响已有应用的操作都是以表名作为标识,修改表名有可能影响已有应用程序的运行。程序的运行。5.4 5.4 删除数据表删除数据表对于维护数据库,另一个可执行的操作就是删除数据表。对于维护数据库,另一个可执行的操作就是删除数据表。如果某个数据表不再
14、需要,又不想其一直占用数据库资源,如果某个数据表不再需要,又不想其一直占用数据库资源,就可以执行删除操作。本节将结合工具和命令方式,讲述如就可以执行删除操作。本节将结合工具和命令方式,讲述如何删除数据表。何删除数据表。5.4.1 5.4.1 利用工具删除数据表利用工具删除数据表许多数据库工具,例如许多数据库工具,例如PL/SQL Developer、TOAD for Oracle都会包含直观的数据表删除功能。本小节将以都会包含直观的数据表删除功能。本小节将以PL/SQL Developer为例,讲述如何删除数据表。为例,讲述如何删除数据表。5.4.2 5.4.2 利用利用SQLSQL语句删除数
15、据表语句删除数据表同样,可以使用同样,可以使用SQL语句删除某张表。删除数据表的语句删除某张表。删除数据表的命令为命令为drop table。Drop table only_test5.5 5.5 备份备份/恢复数据表恢复数据表数据表的备份和恢复是最常用的数据库操作,数据表的数据表的备份和恢复是最常用的数据库操作,数据表的备份主要用于以下场合。备份主要用于以下场合。修改数据表结构之前;修改数据表结构之前;修改数据表的数据之前;修改数据表的数据之前;删除某个数据表之前。删除某个数据表之前。本节将从以下两个角度讲述如何备份本节将从以下两个角度讲述如何备份Oracle数据表。数据表。利用工具备份利用
16、工具备份/恢复数据表;恢复数据表;利用命令备份利用命令备份/恢复数据表。恢复数据表。5.5.1 5.5.1 利用工具备份利用工具备份/恢复数据表恢复数据表PL/SQL Developer是备份是备份/恢复恢复Oracle数据表的常用数据表的常用工具,本小节将以工具,本小节将以PL/SQL Developer为例讲述如何备份为例讲述如何备份/恢恢复数据表。复数据表。PL/SQL Developer提供了三种导出提供了三种导出/导入方式,分别导入方式,分别是:是:Oracle导出导出/导入方式、导入方式、SQL语句方式、语句方式、PL/SQL工具工具本身方式。本身方式。1Oracle导出导出/导入
17、方式导入方式2SQL导出导出/导入方式导入方式3PL/SQL导出导出/导入方式导入方式5.5.2 5.5.2 利用命令备份利用命令备份/恢复数据表恢复数据表对于对于Oracle数据表的备份数据表的备份/恢复操作,最常用的命令为恢复操作,最常用的命令为exp和和imp。二者可以在。二者可以在Windows的命令提示符或者的命令提示符或者Unix/Linux的命令行执行。的命令行执行。exp命令实现导出操作,命令实现导出操作,imp实实现导入操作。现导入操作。5.6 5.6 临时表临时表Oracle使用使用create table命令创建的数据表称为永久表命令创建的数据表称为永久表或普通表。在或普
18、通表。在Oracle中还有另外一种特殊的数据表中还有另外一种特殊的数据表临时临时表。本节将按照以下顺序介绍临时表。表。本节将按照以下顺序介绍临时表。临时表简介;临时表简介;会话级临时表;会话级临时表;事务级临时表;事务级临时表;查看临时表属性信息;查看临时表属性信息;临时表的应用场景。临时表的应用场景。5.6.1 5.6.1 临时表简介临时表简介首先需要明确的是,临时表的临时并非指其存在性而言。首先需要明确的是,临时表的临时并非指其存在性而言。也就是说,除非使用也就是说,除非使用DROP TABLE命令来删除临时表,否命令来删除临时表,否则,一旦创建将一直存在。在存在性上,和普通表没有任何则,
19、一旦创建将一直存在。在存在性上,和普通表没有任何区别。其临时性,指的是所存储数据的临时性。也就是说,区别。其临时性,指的是所存储数据的临时性。也就是说,临时表虽然一直存在,但其中的数据会在某种条件下被临时表虽然一直存在,但其中的数据会在某种条件下被Oracle数据库自动清空。数据库自动清空。临时表数据清空的条件有两种,一是事务提交或回滚;临时表数据清空的条件有两种,一是事务提交或回滚;二是会话结束。二是会话结束。5.6.2 5.6.2 会话级临时表会话级临时表创建临时表应该使用命令创建临时表应该使用命令create global temporary table 命令。命令。create glo
20、bal temporary table tmp_users_session(user_id int,user_name varchar2(20),user_email varchar2(30)on commit preserve rows 5.6.3 5.6.3 事务级临时表事务级临时表与会话级临时表一样,事务级临时表的创建同样使用与会话级临时表一样,事务级临时表的创建同样使用create global temporary table命令。只是将命令。只是将on commit preserve rows变更为变更为on commit delete rows,即提交时,即提交时删除表中记录。删除
21、表中记录。5.6.4 5.6.4 查看临时表在数据库中的信息查看临时表在数据库中的信息一个数据表在数据库中的最主要信息,有以下几个方面:一个数据表在数据库中的最主要信息,有以下几个方面:所属表空间、包含的列及列类型。在所属表空间、包含的列及列类型。在PL/SQL Developer左左侧窗口的侧窗口的【Tables】分支下,可以找到名为分支下,可以找到名为TMP_USERS_SESSION和和TMP_USERS_TRANSACTION的表。像普通表一样,可以通过二者右键菜单中的的表。像普通表一样,可以通过二者右键菜单中的【Properties】查看其属性信息。通过二者的查看其属性信息。通过二者
22、的【Columns】子子分支,可以查看列信息。分支,可以查看列信息。5.6.5 5.6.5 临时表的应用场景临时表的应用场景1大表分割大表分割2解决并行问题解决并行问题3作为数据缓存作为数据缓存5.7 5.7 特殊的表特殊的表dualdual在所有的在所有的Oracle数据表中,有一个非常特殊的表数据表中,有一个非常特殊的表dual。该表是每个数据库创建时默认生成的。该表仅有一列。该表是每个数据库创建时默认生成的。该表仅有一列和一行数据,在数据库开发中有着非常特殊的作用。本节将和一行数据,在数据库开发中有着非常特殊的作用。本节将从以下三个角度介绍表从以下三个角度介绍表dual。分析分析dual
23、表;表;dual表的应用场景;表的应用场景;为什么不可以随意修改为什么不可以随意修改dual表。表。5.7.1 5.7.1 分析分析dualdual表表在在PL/SQL Developer或者或者SQL*Plus中,可以利用中,可以利用DESC命令查看命令查看DUAL表的结构。表的结构。5.7.2 dual5.7.2 dual表的应用场景表的应用场景在在Oracle数据库中,数据库中,dual表实际是作为一个虚表的概表实际是作为一个虚表的概念存在的。也就是说,念存在的。也就是说,dual表存在的意义并非为了存储数据。表存在的意义并非为了存储数据。更多时候,更多时候,dual表被用来作为表被用来
24、作为from的源表。的源表。因为因为Oracle的查询语句必须满足的查询语句必须满足select*|column1 AS alias1,column2 AS alias2 from table的语法格式,的语法格式,其中的其中的from所指向的表是必需的,所以即使某些数据不属于所指向的表是必需的,所以即使某些数据不属于任何表,也必须有一个强制的表名。任何表,也必须有一个强制的表名。dual表即可用作这个强表即可用作这个强制的虚表。制的虚表。5.7.3 5.7.3 修改修改DUALDUAL表对查询结果的影响表对查询结果的影响Oracle针对针对DUAL表会做一些内部操作,以保证其一行表会做一些内
25、部操作,以保证其一行一列的数据结构不发生改变。一列的数据结构不发生改变。5.8 5.8 本章实例本章实例在本章中,创建表、修改表和删除表等表操作是重点讲在本章中,创建表、修改表和删除表等表操作是重点讲述的内容。本节将通过一个范例来综合执行这几项操作。述的内容。本节将通过一个范例来综合执行这几项操作。create table test_table(id number,name varchar2(20);describe test_table;alter table test_table add(status varchar2(3);describe test_table;alter table
26、test_table drop column status;drop table test_table;5.9 5.9 本章小结本章小结本章着重讲述了本章着重讲述了Oracle中数据库中的表空间和表的概中数据库中的表空间和表的概念。表空间是念。表空间是Oracle数据库的独有概念,这种设计理念,为数据库的独有概念,这种设计理念,为数据库的灵活配置和空间分配提供了方便。对于数据表,需数据库的灵活配置和空间分配提供了方便。对于数据表,需要着重理解临时表和虚表要着重理解临时表和虚表dual的作用。临时表在日常开发中的作用。临时表在日常开发中并不常用,而并不常用,而dual表则是不可或缺的。尤其需要注意的是,表则是不可或缺的。尤其需要注意的是,不要对不要对dual表进行任何的修改操作,否则,将对应用程序带表进行任何的修改操作,否则,将对应用程序带来不可预知的风险。来不可预知的风险。5.10 5.10 习题习题1请简述创建表空间命令中的主要参数的意义。请简述创建表空间命令中的主要参数的意义。2请简述请简述Oracle的数据表在添加列和删除列时,语法的数据表在添加列和删除列时,语法形式上的区别。形式上的区别。3请简述会话级临时表和事务级临时表的区别。请简述会话级临时表和事务级临时表的区别。4请简述虚表请简述虚表dual的主要应用场景。的主要应用场景。