《表格模板-第7章表的创建和管理 精品.ppt》由会员分享,可在线阅读,更多相关《表格模板-第7章表的创建和管理 精品.ppt(47页珍藏版)》请在第一文库网上搜索。
1、第1页第第7章章 表的创建和管理表的创建和管理 表是最常用的数据库对象之一,也是最基本和最重要的数表是最常用的数据库对象之一,也是最基本和最重要的数据库对象之一。由于表是存储数据库数据的主要手段,因此对据库对象之一。由于表是存储数据库数据的主要手段,因此对表的管理也是非常重要的。表的管理涉及表的结构、表的创建、表的管理也是非常重要的。表的管理涉及表的结构、表的创建、修改、删除与设置完整性约束等操作,以及如何向表中添加数修改、删除与设置完整性约束等操作,以及如何向表中添加数据、更新数据和删除数据。在本章中,将对表和表中数据的管据、更新数据和删除数据。在本章中,将对表和表中数据的管理操作进行详细介
2、绍。理操作进行详细介绍。本章的学习目标:本章的学习目标: 了解表的相关概念了解表的相关概念 掌握如何使用命令行方式创建表掌握如何使用命令行方式创建表 掌握修改表和删除表的操作掌握修改表和删除表的操作 掌握表中约束的定义和管理掌握表中约束的定义和管理 掌握使用掌握使用OEM工具创建表和管理表的方法工具创建表和管理表的方法 掌握如何管理表中的数据掌握如何管理表中的数据第2页7.1 表概述表概述 表是数据库中最基本的对象,用户的数据在数据库中表是数据库中最基本的对象,用户的数据在数据库中是以表的形式存储的。数据库中每一个表都被一个用户模是以表的形式存储的。数据库中每一个表都被一个用户模式所拥有,因此
3、表是一种典型的模式对象。式所拥有,因此表是一种典型的模式对象。7.1.1 表的构成表的构成 表是组成数据库的基本元素,主要用来存储系统或用户表是组成数据库的基本元素,主要用来存储系统或用户的数据。表中的数据是按照行和列的二维结构组成。每一行的数据。表中的数据是按照行和列的二维结构组成。每一行用来保存关系数据库关系的元组,也称数据行或记录。每一用来保存关系数据库关系的元组,也称数据行或记录。每一列用来保存关系的属性,也称字段。行的顺序一般是按照写列用来保存关系的属性,也称字段。行的顺序一般是按照写入的先后顺序存放,各列的顺序是根据创建表时定义的先后入的先后顺序存放,各列的顺序是根据创建表时定义的
4、先后顺序存放。每个列具有列名、列数据类型、列长度、约束条顺序存放。每个列具有列名、列数据类型、列长度、约束条件、默认值等,这些内容在创建表时确定。件、默认值等,这些内容在创建表时确定。第3页 在逻辑结构上,表位于某个表空间。当创建一个表时,将在逻辑结构上,表位于某个表空间。当创建一个表时,将同时创建一个段,专门用来存放表中的数据。在物理结构上,同时创建一个段,专门用来存放表中的数据。在物理结构上,表中的数据都存放在数据块中,因而在数据块中存放的是一行表中的数据都存放在数据块中,因而在数据块中存放的是一行的数据。表的结构主要由列组成,包括列名称、数据类型、数的数据。表的结构主要由列组成,包括列名
5、称、数据类型、数据长度、比例(针对数值型的数据)、约束等信息。据长度、比例(针对数值型的数据)、约束等信息。在在Oracle数据库中根据不同用途有多种类型的表,如堆表、数据库中根据不同用途有多种类型的表,如堆表、临时表、索引组织表和分区表等。临时表、索引组织表和分区表等。1. 1. 堆表堆表(Heap Organized Table) “ “堆堆”是一个经典的数据结构,它的存储分配原则是随机是一个经典的数据结构,它的存储分配原则是随机的。具体到数据表中,也就是说表中插入的每一行数据的空间的。具体到数据表中,也就是说表中插入的每一行数据的空间分配是随机的分配是随机的。堆表中的数据数据按堆组织,以
6、无序的方式存。堆表中的数据数据按堆组织,以无序的方式存放在单独的表段中。这种表是最基础、最常用的数据库表类型,放在单独的表段中。这种表是最基础、最常用的数据库表类型,是默认情况下创建的表。是默认情况下创建的表。 第4页2. 2. 临时表临时表(Temporary Table) 临时表是一种特殊类型的表,临时表是一种特殊类型的表,表中的数据并不永久保存,而是一些临时数据。这些临时数表中的数据并不永久保存,而是一些临时数据。这些临时数据只在当前事务或当前会话中有效,当事务或会话结束时,据只在当前事务或当前会话中有效,当事务或会话结束时,这些临时数据将被全部删除。这些临时数据将被全部删除。 3. 3
7、. 索引组织表索引组织表(Index Organized Table) 索引组织表索引组织表是一种特殊类型的表,它把表中的数据和表的索引存放在同是一种特殊类型的表,它把表中的数据和表的索引存放在同一个段中,并以一个段中,并以B*树的方式组织在一起,从而加快表的查询树的方式组织在一起,从而加快表的查询速度。在索引组织表中必须有一个主键,表中的数据按照主速度。在索引组织表中必须有一个主键,表中的数据按照主键进行排序,在键进行排序,在B*树的叶块中同时存储主键列和非主键列。树的叶块中同时存储主键列和非主键列。4. 4. 分分区表区表为了提高大型表的访问效率,为了提高大型表的访问效率,Oracle提供
8、了一种分区技提供了一种分区技术,利用这种技术可以把表、索引等数据库对象中的数据分割术,利用这种技术可以把表、索引等数据库对象中的数据分割成小的单位,分别存放在一个个单独的段中,用户对表的访问成小的单位,分别存放在一个个单独的段中,用户对表的访问变转化为对较小段的访问。变转化为对较小段的访问。第5页OracleOracle数据库中表和列的命名规则如下:数据库中表和列的命名规则如下: 长度长度30个字节之内。个字节之内。 必须以字母开头。必须以字母开头。 由字母、数字、由字母、数字、_、#、$组成。组成。 不能使用保留字。不能使用保留字。 非法的命名,可以用非法的命名,可以用“”“”括起来。括起来
9、。 一个表内列名要唯一。一个表内列名要唯一。 表名在名称空间内必须唯一。表名在名称空间内必须唯一。对数据库设计人员、开发和管理人员,在创建表对数据库设计人员、开发和管理人员,在创建表之前都要做好表的设计工作,包括如下:之前都要做好表的设计工作,包括如下: 为表中各个字段选择合适的数据类型;为表中各个字段选择合适的数据类型; 确定表的完整性约束类型确定表的完整性约束类型 根据需求决定创建的表类型根据需求决定创建的表类型第6页7.1.2 表的数据类型表的数据类型 Oracle 11g的数据类型很丰富,包含标量的数据类型很丰富,包含标量(SCALAR)、)、复合复合(COMPOSITE)、)、引用(
10、引用(REFFERENCE)和和LOB4类类数据类型。数据类型。合法的标量类型与数据库的列所使用的类型相同,合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。此外它还有一些扩展。Oracle 11g提供的提供的23种数据类型中,选种数据类型中,选择最常用的,分为字符型、数值型、日期型和其他数据类型择最常用的,分为字符型、数值型、日期型和其他数据类型4类进行讲解。表类进行讲解。表7-1列出了较为常用的数据类型。不同的数据列出了较为常用的数据类型。不同的数据类型可以为表的每个列限定取值范围,实现数据的域完整性。类型可以为表的每个列限定取值范围,实现数据的域完整性。第7页第8页7.1.
11、3 表的约束类型表的约束类型Oracle的表定义支持以下完整性约束。的表定义支持以下完整性约束。1. 1. 实体完整性实体完整性实体完整性将定义为特定表的唯一实体,要求主属性非空。可以通过设实体完整性将定义为特定表的唯一实体,要求主属性非空。可以通过设置主键置主键(Primary Key)、唯一值约束、唯一值约束(Unique)和非空值约束和非空值约束(NOT NULL)等多种方法实现。等多种方法实现。2. 2. 参照完整性参照完整性参照完整性是用来维护相关数据表之间数据一致性的手段,主要使用外参照完整性是用来维护相关数据表之间数据一致性的手段,主要使用外键键(Foreign Key)来实现。
12、来实现。3. 3. 用户自定义完整性用户自定义完整性用户自定义完整性由用户根据实际应用中的需要自行定义。例如:要求用户自定义完整性由用户根据实际应用中的需要自行定义。例如:要求某列的值能取空值;某一列的值在表中是唯一的;某一列的值要在某个范某列的值能取空值;某一列的值在表中是唯一的;某一列的值要在某个范围中等。可以使用数据类型围中等。可以使用数据类型(Data Type)、默认值、默认值(Default)、检查约束、检查约束(Check)、空或非空、空或非空(NULL| NOT NULL)等多种约束方法实现。稍微等多种约束方法实现。稍微复杂一点的也可以使用触发器(复杂一点的也可以使用触发器(T
13、rigger)、存储过程)、存储过程(Procedure)和函和函数数(Function)等来实现。等来实现。第9页7.2 创建表创建表创建表的方法有基于命令行的创建方法和使用创建表的方法有基于命令行的创建方法和使用OEMOEM工具创建工具创建两种。本节重点介绍如何使用这两种方法完成普通表的创建。两种。本节重点介绍如何使用这两种方法完成普通表的创建。7.2.1 使用命令行创建表使用命令行创建表 使用命令行创建表用的关键字是使用命令行创建表用的关键字是CREATE TABLE,其,其简单的语法格式如下:简单的语法格式如下:CREATE TABLE table_name (column_name
14、type CONSTRAINT constraint_def DEFAULT default_exp, column_name type CONSTRAINT constraint_def DEFAULT default_exp .)第10页语法中的各选项说明:语法中的各选项说明: table_name table_name 指定要分配给该表的名称。指定要分配给该表的名称。 column_name column_name 指定要分配给某个列的名称。指定要分配给某个列的名称。 type type 指定某个列的类型。指定某个列的类型。 constraint_def constraint_def 指
15、定对某个列的约束。指定对某个列的约束。 default_exp default_exp 指定一个表达式,用来为某个列赋予默认指定一个表达式,用来为某个列赋予默认值。值。 ON COMMITON COMMIT控制临时表中行的有效期。控制临时表中行的有效期。DELETE说明这说明这些行在事务的末尾要被删除。些行在事务的末尾要被删除。PRESERVE说明这些行在用说明这些行在用户会话的末尾要被删除。如果对临时表没有指定户会话的末尾要被删除。如果对临时表没有指定ON COMMIT选项,那么默认值是选项,那么默认值是DELETE。【例【例7-1】一般数据库应用程序中都会有一个用户表,用】一般数据库应用程
16、序中都会有一个用户表,用来记录应用程序的用户的信息。按照表来记录应用程序的用户的信息。按照表7-2所示的结构创建所示的结构创建用户表用户表Sys_User,代码如下。,代码如下。第11页SQLCREATE TABLE Sys_User2 (UserID Number Primary Key,3 UserName Varchar2(20) NOT NULL,4 UserType Number(1),5 UserPwd Varchar2(40),6 Remark Varchar2(200)7 );表已创建。表已创建。第12页 表创建成功后,可以通过表创建成功后,可以通过DESCRIBE命令查看表的描述,命令查看表的描述,如图如图7-1所示。所示。 图图7-1 表表Sys_User的描述的描述7.2.2 创建表的相关子句创建表的相关子句 当创建表时,当创建表时,Oracle会自动在用户默认表空间中为新建的会自动在用户默认表空间中为新建的表创建一个数据段,以便为表提供存储数据的空间。除此之外,表创建一个数据段,以便为表提供存储数据的空间。除此之外,用户也可以在创建表时指定所处的表空间,当然用户