《oracle从入门到精通(PDF格式)》第17章


新增加的字段一定是放在表的最后。
*、修改表字段的类型和长度
ALTER TABLE table modify (col datatype 'default';。。。;。。。。);
对默认值的修改只会影响到新插入的行。
如果字段下有值的话,类型的修改成功率很小(要修改数据类型,要修改的列必须为空,即没 
有数据项)。
CHAR 类型不能修改长度。
*、删除表字段
ALTER TABLE table DROP COLUMN (COLUMN_NAME_LIST);
9I2 版可以修改列名
*、SET UNUSED 设置字段为不可用。
原理:清楚掉字典信息(撤消存储空间),不可恢复。
可以使用 SET UNUSED 选项标记一列或者多列不可用。
使用 DROP SET UNUSED 选项删除被被标记为不可用的列。
语法:
ALTER TABLE table SET UNUSED (COLlist 多个) 或者 ALTER TABLE table SET UNUSED COLUMN
col 单个;
ALTER TABLE table DROP UNUSED COLUMNS;
删除表:
删除关联:drop table table_name cascade;
改对象名:
RENAME 对象原名 TO 要改的对象名;
注: 必须是对象的所有者才能进行改名的操作。
4、截取:
不能回滚;
删除表中所有数据;
第 35 页,共 106 页 
…………………………………………………………Page 36……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通 
释放存储空间;
语法:
TRUNCATE TABLE 表名称;
DELETE 也可以删除所有行,但:
可以回滚。
不释放存储空间。
5、给表加注释:MENT
ment on table table_name is "注释内容";
6、约束条件:
如果经常用到约束条件的话,最好自己命名。
当定义约束的时候可以将定义的语句作为 CREATE TABLE 中的参数的一部分来完成。
表级别约束定义:
CONSTRAINT 约束名 约束条件(字段名)
约束在表上强制了规则。
如果有参照的花,约束防止表的删除。
ORACLE 支持的约束条件:
1。NOT NULL 非空
特点:唯一一个只能在列级定义的约束条件。
2。UNIQUE 唯一
允许有空值(空值不做比较);
特点:当创建约束的时候,系统会自动创建对应其的索引。
3。PRIMARY KEY 主键
特点:当创建约束的时候,系统会自动创建对应其的索引。
在一个表中只允许一个主键。
4。FOREIGN KEY 外键
外键参照的一定是主表的主键或唯一键;
保证子表外键字段的值一定是主表中的被参照字段值的真子集;
当主表字段被参照的时候,其值不允许被直接删除。
5。CONSTRAINT 约束名 FOREIGN KEY (外键字段名) REFERENCES 主表名(主表字段名);
如果在字段列表中定义外键就可以不写 FOREIGN KEY 关键字。
如下格式:CONSTRAINT 约束名 REFERENCES 主表名(主表字段名);
6。ON DELETE CASCADE 当主表的行被删除的时候,要删除子表中参照主表的行。
ALTER TABLE TABLE_NAME DROP (PK) CASCADE CONSTRAINTS;把作为主键的字段也同时删除了。
7。ON DELETE SET NULL 当主表的行被删除的时候,转换子表中的参照值为空。
CHECK
定义一个每行都必须满足的条件。
CREATE TABLE table_name
( 。。。。
第 36 页,共 106 页 
…………………………………………………………Page 37……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通 
salary number(10;2);
CONSTRAINT 约束名 CHECK(SALARY》0);
。。。。
);
约束的使用:
约束的命名:给约束命名或者 ORACLE 服务器将使用 SYS_Cn 的格式为约束命名。
创建时期:在创建表的同时或者在建表之后。
定义级别:
可以在表级定义或列级定义。
在数据字典中可以查看约束。
使用 ALTER TABLE 语句:
*、添加或者删除约束条件,但是不能修改约束条件。 就算列名上已经有约束条件,还可以 
继续添加约束条件的。
添加:ALTER TABLE table_name ADD 'CONSTRAINT ' 约束名 约束条件(column);
删除:ALTER TABLE table_name drop constraint 约束名;
ALTER TABLE table_name PRIMARY KEY CASCADE;删除主键的时候,不用约束名。
*、启动或禁用约束条件
ALTER TABLE table_name Disable constraint 约束名; 禁用
ALTER TABLE table_name ENABLE constraint 约束名; 启用
*、通过 MODIFY 添加 NOT NULL 约束条件(因为 NOT NULL 为列级约束,只能用 MODIFY 添加)。
ALTER TABLE table_name MODIFY(col type NOT NULL);
查看约束条件:
//desc user_constraints
OWNER 拥有者;
CONSTRAINT_NAME 约束名称
CONSTRAINT_TYPE 约束类型
SEARCH_CONDITION check 的条件
select constraint_name; constraint_type;search_condition;status
from user_constraint where table_name="b";
2。5。视图 (VIEW)
一个或多个表的数据集的逻辑表示(虚表,不存储数据)
视图不能提高查询的性能。
分类:
简单
数目:一个
函数:不包含
分组数据:不包含
可以做 DML操作
复杂
第 37 页,共 106 页 
…………………………………………………………Page 38……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通 
数目:一个或多个
函数:包含
分组数据:包含
不一定能做 DML 操作
视图也可以用 DESC 描述。
创建视图:
CREATE 'or replace(修改视图)' 'force/noforce' VIEW view_name(col coltype ;。。。。。。)
as
subquery
'WITH CHECK OPTION 'CONSTRAINT constraint''
'WITH READ ONLY'CONSTRAINT constraint'';
USER_VIEWS 关于视图的字典
修改视图:
CREATE OR REPLACE 原视图名 (字段列表)
AS 子查询;
包含:
GROUP BY 、DISTINCT、ROWNUM
不能对视图进行删除操作;
包含:
GROUP BY
DISTINCT
ROWNUM
通过表达式定义的列不能对视图进行修改操作;
包含:
GROUP BY
DISTINCT
ROWNUM
通过表达式定义的列
在视图中没有包含基表中的 NOT NULL 列,不能对视图进行插入操作;
使用视图的原因;
为了限制对数据的访问;
为了使复杂的查询变得简单;
提供了数据的独立性;
提供了对相同数据的不同显示;
使用 WITH CHECK OPTION 子句创建视图
创建视图时通过 WITH CHECK OPTION 子句确保执行的 DML 语句不会引起数据不出现在视图上。
小说推荐
返回首页返回目录