日期:2011-03-21 00:21:00 来源:本站整理
<b>Oracle数据库数据对象解析(上)</b>[Oracle防范]
本文“<b>Oracle数据库数据对象解析(上)</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储历程、包、触发器等.对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径.
表和视图
Oracle中表是数据存储的基本构造.ORACLE8引入了分区表和对象表,ORACLE8i引入了暂时表,使表的功效更强盛.视图是一个或多个表中数据的逻辑表达式.本文我们将谈论怎样成立和管理简单的表和视图.
管理表
表可以看做有行和列的电子数据表,表是关系数据库中一种拥有数据的构造.用CREATE TABLE语句成立表,在成立表的同时,必须定义表名,列,以及列的数据范例和大小.比方:
CREATE TABLE products ( PROD_ID NUMBER(4), PROD_NAME VAECHAR2(20), STOCK_QTY NUMBER(5,3) ); |
这样我们就成立了一个名为products的表, 关键词CREATE TABLE后紧跟的表名,然后定义了三列,同时规定了列的数据范例和大小.
在成立表的同时你可以规定表的完好性约束,也可以规定列的完好性约束,在列上普通的约束是NOT NULL,关于约束的谈论我们在今后举行.
在成立或更改表时,可以给表一个缺省值.缺省值是在增添行时,增添的数据行中某一项值为null时,oracle即认为该值为缺省值.
下列数据字典视图供应表和表的列的信息:
. DBA_TABLES
. DBA_ALL_TABLES
. USER_TABLES
. USER_ALL_TABLES
. ALL_TABLES
. ALL_ALL_TABLES
. DBA_TAB_COLUMNS
. USER_TAB_COLUMNS
. ALL_TAB_COLUMNS
表的命名法则
表名标识一个表,所以应尽大概在表名中描写表,oracle中表名或列名最长可以达30个字符串.表名应当以字母开始,可以在表名中包含数字、下划线、#、$等.
从别的表中成立表
可以利用查询从基于一个或多个表中成立表,表的列的数据范例和大小有查询后果断定.成立这种情势的表的查询可以挑选其他表中全部的列大概只挑选部份列.在CREATE TABLE语句中利用关键字AS,比方:
SQL>CREATE TABLE emp AS SELECT * FROM employee TABLE CREATED SQL> CREATE TABLE Y AS SELECT * FROM X WHERE no=2 |
需求注意的是假如查询触及LONG数据范例,那么CREATE TABLE....AS SELECT....将不会工作.
更改表定义
在成立表后,有时刻我们大概需求改正表,比方更改列的定义,更改缺省值,增添新列,删除列等等.ORACLE利用ALTER TABLE语句来更改表的定义
1、增添列
语法:
ALTER TABLE [schema.] table_name ADD column_definition |
例:
ALTER TABLE orders ADD order_date DATE; TABLE ALTER |
关于已经存在的数据行,新列的值将是NULL.
2、更改列
语法:
ALTER TABLE [schema.] table_name MODIFY column_name new_attributes; |
例:
ALTER TABLE orders MODITY (quantity number(10,3),status varchar2(15)); |
这个例子中我们改正了表orders,将STATUS列的长度增添到15,将QUANTITY列减小到10,3;
改正列的法则以下:
. 可以增添字符串数据范例的列的长度,数字数据范例列的精度.
. 削减列的长度时,该列应当不包含任何值,全部数据行都为NULL.
. 改变数据范例时,该列的值必须是NULL.
. 关于十进制数字,可以增添或削减但不能降低他的精度.
3、删除数据列
优化ORACLE数据库,唯一的办法是删除列,重新成立数据库.在ORACLE8i中有很多办法删除列,你可以删除未用数据列大概可以标示该列为未用数据列然后删除.
删除数据列的语法是:
ALTER TABLE [schema.] table_name DROP {COLUM column_names | (column_names)}[CASCADE CONSTRAINS] |
要注意的是在删除列时关于该列的索引和完好性约束也同时删除.注意关键字CASCADE CONSTRAINS,假如删除的列是多列约束的一部份,那么这个约束条件相关于其他列也同时删除.
假如用户耽忧在大型数据库中删除列要花太多时间,可以先将他们标志为未用数据列,标志未用数据列的语法以下:
ALTER TABLE [schema.] table_name SET UNUSED {COLUM column_names | (column_names)}[CASCADE CONSTRAINS] |
这个语句将一个或多个数据列标志为未用数据列,但并不删除数据列中的数据,也不释放占用的磁盘空间.但是,未用数据列在视图和数据字典中并不显示,并且该数据列的名称将被删除,新的数据列可以利用这个名称.基于该数据列的索引、约束,统计等都将被删除.
删除未用数据列的语句是:
ALTER TABLE [schema.] table_name DROP {UNUSED COLUM | COLUMN CONTINUE} |
以上是“<b>Oracle数据库数据对象解析(上)</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论