OraclePL/SQL语言初级教程之表和视图

如题所述

第1个回答  2022-11-15

  Oracle数据库数据对象中最基本的是表和视图 其他还有约束 序列 函数 存储过程 包 触发器等 对数据库的操作可以基本归结为对数据对象的操作 理解和掌握Oracle数据库对象是学习Oracle的捷径    表和视图   Oracle中表是数据存储的基本结构 ORACLE 引入了分区表和对象表 ORACLE i引入了临时表 使表的功能更强大 视图是一个或多个表中数据的逻辑表达式 本文我们将讨论怎样创建和管理简单的表和视图    管理表   表可以看作有行和列的电子数据表 表是关系数据库中一种拥有数据的结构 用CREATE TABLE语句建立表 在建立表的同时 必须定义表名 列 以及列的数据类型和大小 例如

CREATE TABLE products  ( PROD_ID NUMBER( )    PROD_NAME VAECHAR ( )    STOCK_QTY NUMBER( )  );  这样我们就建立了一个名为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中表名或列名最长可以达 个字符串 表名应该以字母开始 可以在表名中包含数字 下划线 # $等    从其它表中建立表   可以使用查询从基于一个或多个表中建立表 表的列的数据类型和大小有查询结果决定 建立这种形式的表的查询可以选择其他表中所有的列或者只选择部分列 在CREATE TABLE语句中使用关键字AS 例如: SQL>CREATE TABLE emp AS SELECT * FROM employeeTABLE CREATEDSQL> CREATE TABLE Y AS SELECT * FROM X WHERE no=   需要注意的是如果查询涉及LONG数据类型 那么CREATE TABLE AS SELECT 将不会工作    更改表定义   在建立表后 有时候我们可能需要修改表 比如更改列的定义 更改缺省值 增加新列 删除列等等 ORACLE使用ALTER TABLE语句来更改表的定义   增加列   语法 ALTER TABLE [schema ] table_name ADD column_definition  例 ALTER TABLE orders ADD order_date DATE;TABLE ALTER  对于已经存在的数据行 新列的值将是NULL 更改列   语法 ALTER TABLE [schema ] table_name MODIFY column_name new_attributes;  例 ALTER TABLE orders MODITY (quantity number( ) status varchar ( ));  这个例子中我们修改了表orders 将STATUS列的长度增加到 将QUANTITY列减小到 ;  修改列的规则如下     可以增加字符串数据类型的列的长度 数字数据类型列的精度     减少列的长度时 该列应该不包含任何值 所有数据行都为NULL     改变数据类型时 该列的值必须是NULL     对于十进制数字 可以增加或减少但不能降低他的精度   删除数据列   优化ORACLE数据库 唯一的方法是删除列 重新建立数据库 在ORACLE i中有很多方法删除列 你可以删除未用数据列或者可以标示该列为未用数据列然后删除   删除数据列的语法是 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} lishixinzhi/Article/program/Oracle/201311/17225

相似回答