欢迎来到天天文库
浏览记录
ID:50992632
大小:35.00 KB
页数:9页
时间:2020-03-08
《oracle数据库中的表与视图.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、oracle数据库中的表与视图Oracle数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作,理解和掌握Oracle数据库对象是学习Oracle的捷径。 表和视图 Oracle中表是数据存储的基本结构。ORACLE8引入了分区表和对象表,ORACLE8i引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。 管理表 表可以看作有行和列的电子数据表,表是关系数据库中
2、一种拥有数据的结构。用CREATETABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如:CREATETABLEproducts (PROD_IDNUMBER(4), PROD_NAMEVAECHAR2(20), STOCK_QTYNUMBER(5,3) ); 这样我们就建立了一个名为products的表,关键词CREATETABLE后紧跟的表名,然后定义了三列,同时规定了列的数据类型和大小。 在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列
3、上普通的约束是NOTNULL,关于约束的讨论我们在以后进行。 在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一项值为null时,oracle即认为该值为缺省值。 下列数据字典视图提供表和表的列的信息: .DBA_TABLES .DBA_ALL_TABLES .USER_TABLES .USER_ALL_TABLES .ALL_TABLES .ALL_ALL_TABLES .DBA_TAB_COLUMNS .USER_TAB_COLUMNS .
4、ALL_TAB_COLUMNS 表的命名规则 表名标识一个表,所以应尽可能在表名中描述表,oracle中表名或列名最长可以达30个字符串。表名应该以字母开始,可以在表名中包含数字、下划线、#、$等。 从其它表中建立表 可以使用查询从基于一个或多个表中建立表,表的列的数据类型和大小有查询结果决定。建立这种形式的表的查询可以选择其他表中所有的列或者只选择部分列。在CREATETABLE语句中使用关键字AS,例如:SQL>CREATETABLEempASSELECT*FROMemployeeTABLECRE
5、ATEDSQL>CREATETABLEYASSELECT*FROMXWHEREno=2 需要注意的是如果查询涉及LONG数据类型,那么CREATETABLE....ASSELECT....将不会工作。 更改表定义 在建立表后,有时候我们可能需要修改表,比如更改列的定义,更改缺省值,增加新列,删除列等等。ORACLE使用ALTERTABLE语句来更改表的定义 1、增加列 语法:ALTERTABLE[schema.]table_nameADDcolumn_definition 例:ALTERTABLE
6、ordersADDorder_dateDATE;TABLEALTER 对于已经存在的数据行,新列的值将是NULL. 2、更改列 语法:ALTERTABLE[schema.]table_nameMODIFYcolumn_namenew_attributes; 例:ALTERTABLEordersMODITY(quantitynumber(10,3),statusvarchar2(15)); 这个例子中我们修改了表orders,将STATUS列的长度增加到15,将QUANTITY列减小到10,3; 修
7、改列的规则如下: .可以增加字符串数据类型的列的长度,数字数据类型列的精度。 .减少列的长度时,该列应该不包含任何值,所有数据行都为NULL. .改变数据类型时,该列的值必须是NULL. .对于十进制数字,可以增加或减少但不能降低他的精度。 3、删除数据列 优化ORACLE数据库,唯一的方法是删除列,重新建立数据库。在ORACLE8i中有很多方法删除列,你可以删除未用数据列或者可以标示该列为未用数据列然后删除。 删除数据列的语法是:ALTERTABLE[schema.]table_nam
8、eDROP{COLUMcolumn_names
9、(column_names)}[CASCADECONSTRAINS] 要注意的是在删除列时关于该列的索引和完整性约束也同时删除。注意关键字CASCADECONSTRAINS,如果删除的列是多列约束的一部分,那么这个约束条件相对于其他列也同时删除。 如果用户担心在大型数据库中删除列要花太多时间,可以先将他们标记为未用数据列,标记未用数据列的语法如下:
此文档下载收益归作者所有