《数据库及表的创建》由会员分享,可在线阅读,更多相关《数据库及表的创建(17页珍藏版)》请在金锄头文库上搜索。
1、第二章 数据库和表的创建,2、1 基本概念 2、1、1数据库 一、数据库内部结构 (1)表空间:是逻辑划分,每个数据库至少有一个表空间。每个表空间由一个或多个数据文件组成。一个表空间只属于一个数据库。 (2)表:是数据库中存放用户数据的对象,它包含一组固定的列,描述该表所跟踪的实体的属性。 (3)约束条件(CONSTRAINT).确保数据的引用完整性。主要有以下5种约束。 主键(primary key) 默认(default):在表中插入一行数据但没有为列指定值时生成一个在定义表时预先指定的值。 唯一性(unique) 检查(check):确保指定列中的值符合一定的条件。Check列约束条件不
2、能引用一个独立表。非空值约束条件被看作是一个check约束条件。 外键(foreign key):规定表间的关系性质。一个外键使一个表的一列或多列与已定义为主键的表中的一批相同的列相关联。当在已定义主键约束的表中更新列值时,其他表中定义有外键约束的列会被自动更新。,(4)分区(partition):在大的数据库中,可以通过把一个大表的数据分成多个小表来简化数据库的管理,这些小表称作分区。还可对索引进行分区。 (5)索引(index):当create table命令中规定unique或primary key约束条件子句时,自动创建一个索引,也可以通过create index命令手工创建自己的索引
3、。 (6)簇(cluster)。经常被同时访问的表在物理位置上可以存储在一起。为了将它们存储在一起,就要创建一个簇来管理这些表。表中相关的列称为簇键。簇键用一个簇索引来进行索引,对于簇中的多个表,簇键值只存储一次。在把任何行插入簇的表中之前,都必须先创建一个簇索引。 (7)用户 (8)方案(schema)。用户帐户拥有的对象集称为用户的方案。 (9)同义词。为了给不同的用户使用数据库对象时提供一个简单的、唯一标识数据库对象的名称,可以对数据库对象创建同义词。 (10)权限、角色、段、区间、块,二、数据库外部结构 如果从操作系统的观点来看,oracle9i数据库就是操作系统内的各种文件,最重要的
4、文件包括数据文件、重做日志文件、控制文件等。 注:一个数据文件只能对应一个表空间,数据文件一旦加入到表空间,则不能再移出。,2、2界面创建数据库和表 2、2、1数据库的创建和删除 一、创建数据库。使用DBCA 二、修改数据库: 对已有的数据库可以进行的修改主要有: 增加和删除数据文件 改变数据文件的大小和增长方式不论进行什么修改都需要登录的指定的数据库。 改变数据文件的大小和增长方式及增加数据文件有两种方式: 在“数据文件”文件夹下直接修改数据文件。 在相应的表空间中修改数据文件。 删除数据文件:在oracle9i数据库中,system数据文件不能删除。在数据库的使用过程中,不能删除数据文件。
5、若要删除数据文件,可以在关闭数据库后,在操作系统中进行。 三、删除数据库:使用DBCA,2.2.2创建和管理表空间 (1)利用OEM创建和管理表空间 (2)利用create tablespace命令创建和管理表空间。 Alter来修改,drop来删除。 语法格式如下: Create tablespace tablespace_name Datafile path/filename size integerk|m reuse autoextendoff|onnext integer k|m maxsize unlimited|integerk|m default storage storage_
6、clause online|offline logging|nologging permanent|temporary extent managementdictionary|local autoallocate|uniformsize integerk|m,说明: Reuse表示若该文件存在,则清除该文件再重新建立该文件;若不存在则建立新文件。 Autoextend Off/0n禁止或允许自动扩展数据文件。 Next指定当需要更多盘区时分配给数据文件的磁盘空间 Maxsize unlimited 指定允许分配给数据文件的最大磁盘空间 Online 在创建表空间之后使该表空间立即对授权访问该表
7、空间的用户可用。这是默认设置 Offline在创建表空间之后使该表空间不可用 Logging/ nologging 指定日志属性,它表示将来的表、索引等是否需要进行日志处理。默认为logging Permanent指定表空间将用于保存永久对象,这是默认的 Temporary指定表空间将用于保存临时对象 Extent management指定如何管理表空间的盘区 Dictionary指定使用数据字典来管理表空间,这是默认的 Local指定局部管理表空间 Autoallocate指定表空间由系统管理,用户不能指定盘区尺寸。它为系统默认。 Uniform指定使用size字节的统一盘区来管理表空间。默
8、认的是size为1MB。,例子: 创建大小为50MB的表空间TEST,禁止自动扩展数据文件。 Create tablespace TEST Logging Datafile d:oracleoradatarjxyTEST01.dbf size 50M reuse Autoextend off; 作业: 创建表空间Scott,允许自动扩展数据文件,且采用字典管理表空间。,利用命令管理表空间: 利用alter tablespace命令可以修改现有的表空间或它的一个或多个数据文件。可以为数据库中每一个数据文件指定各自的存储扩展参数值 语法格式: Alter tablespace tabsp_name
9、 add datafile|tempfile path/fname size integerk|m reuseautoextendoff|onnext integerk|m Maxsizeunlimited|integerk|m rename datafile pathfilename,n to pathre_filename,n default storage storage_clause online|offlinenormal|temporary|immediate logging|nologging read only|writepermanent temporary 说明: Add
10、datafile|tempfile向表空间添加指定的数据文件或临时文件。 Rename datafile对一个或多个表空间的数据文件重命名。在重命名数据文件之前要使表空间脱机 Read only表明表空间上不允许写操作。该子句在现有的事务全部提交或回滚后才使表空间变成只读 Read write表明在先前只读表空间上允许写操作,例子:通过alter tablespace命令把一个新的数据文件添加到DATA表空间,并指定自动扩充大小,最大为300MB,Alter tablespace DATA Add datafile d:oracleoradatarjxyDATA02.dbf size 50M
11、reuse Autoextend on next 5M Maxsize 300M,(3)表的基本操作 一、建表 (界面建表的两种方案) 利用向导建表 手工建表 二、修改表 对一个已经存在的表可进行的修改操作包括: 增加列 删除列 修改已有列的属性 修改存储方式等信息 增加列。在OEM中展开 表文件夹,选中需操作的表,在“一般信息”选项卡最下面的空白行中输入新增列的名字,数据类型、大小等信息。修改后单击“应用”保存。 删除列。用鼠标单击要删除列所在行最左边的方块,该行会变成蓝色,单击左下角的删除图标,切换到删除列窗口,单击“确定”,再应用保存修改信息。,修改列的属性。 在表中尚未有记录值时,可以
12、修改表结构,如更改列名、列的数据类型等属性。但当表中有了记录后,建议不用轻易改变表结构,特别是不要改变数据类型,以免产生错误。要修改已有列的属性,只需在窗口中对列所在的行直接修改即可。 修改存储情况。在“存储”选项卡中可修改表的存储方式。 三、删除表 删除表时,表的定义、表中的所有数据以及表的索引、触发器、约束等均被删除。 注意:不能删除系统表和有外键约束参照的表。 方法:在表上单击鼠标右键,在弹出的快捷菜单中选择“移出”即可。,2、3 命令方式创建表 在以自己模式创建表时,必须拥有create table系统权限。在其他用户模式中创建表,必须拥有create any table系统权限。 语
13、法格式: Create table schema.table_name (column_name datatype expression column_constraint,n) pctfree integer pctused integer initrans integer maxtrans integer tablespace tablespace_name storge storage_clause cluster cluster_name(cluster_column,n) as subquery 说明: Initrans:指定分配给表的每一数据块中的事务条目的初值。范围为1255该值
14、默认为 1,通常采用默认值。 Storage:指定表的存储特征。该子句基本格式如下: Storage(initial integer k|m next integer k|m minextents integer maxextents integer|unlimited pctincrease integer freelists integer freelist group integer),Create table re_emp as select * from emp;,As subquery:表示将由子查询返回的行插入到所创建的表中。使用它时要注意以下事项: 表中的列数必须等于子查询中的
15、表达式数。 列的定义只能指定列名、默认值和完整性约束,不能指定数据类型。 不能在含有as subquery的create table的语句中定义引用完整性。相反,必须先创建没有约束的表,然后再用alter table语句来添加约束。 例子1:在指定表空间llm创建表。 Create table llm_table (seq number(10) primary key, qq char(6) Tablespace llm; 例子2:创建emp表的备份:,2、4用命令方式修改表 基本语法: Alter table schema.table_name add(column_name datatyp
16、e default expression column_constraint,n) modify(column_namedatatype default expression column_constraint,n) storage storage_clause drop drop_clause 说明: Schema:修改的表的拥有者 Table_name :修改的表名 Add:添加列或完整性约束 Modify:修改已有列的定义 Storage:修改表的存储特征 Drop:从表中删除列或约束,语法格式: Drop column column_name| primary| unique(column