oracle修改表结构大小语句,CSS_oracle语句速查(2),3修改表结构 修 - phpStudy
发布日期:2021-10-27 15:17:55 浏览次数:13 分类:技术文章

本文共 3414 字,大约阅读时间需要 11 分钟。

oracle语句速查(2)

3修改表结构

修改表结构是对已经创建完成(实际是存放在数据库字典里)的表的结构进行修改。不同的Oracle版本允许对表的修改也不一样。新版的Oracle8i可以对表中的列进行删除。

3.1 修改表结构命令修改表结构的命令由ALTER TABLE来完成。该命令的参数较多,下面仅给出一些基本的部分。详细请参考《ORACLE8i SQL REFERENCE》 。

ALTER   TABLE   [user.]   table

[ADD ({colum_element|table_constraint}

[,{column_element|table_constraint}]...)] [MODIFY(column_element[,column_element]...)] [DROP   CONSTRAINT   constraint]...

[PCTFREE integer][PCTUSED integer]

[INITRANS integer][MAXTRANS integer]

[STORAGE storage]

[BACKUP]

ALTER TABLE可以作的操作有:

l增加一个列(字段)宽度;

l减少一个列(字段)宽度(该列必须无数据);

l增加一个列(字段);

l修改列的定义;

l      或一个限制;(如数据类型,NOT NULL);仅当某列的值为空时才能修改其类型;

l去掉限制;

l修改存储分配;

l记录表已作过BACKUP;

l删除已存在的列(仅Oracle8i及以后版本);

l重新定位和组织表(仅Oracle8i及以后版本);

l      将表标识为不可用(仅Oracle8i及以后版本)。

3.2  修改表结构例子

例1:对已经存在的表增加一新的列:

SQL>alter table dept add ( headcount number(3) );

例2:对表的列修改其大小:

SQL>alter table dept modify( Dname char(20) );

如果被修改的列没有空(已有数据),则被提示:

ORA-01439: Column to be modified must be empty to change

datatype

ORA-01441: Column to be modified must be empty to decrease

column length

例3:复制一个表:

CREATE TABLE HOLD_TANK AS SELECT TANK_NO, CHIEF_CARETAKER_NAME

FROM TANK;

例4:参照某个已存在的表建立一个表结构(不需要数据)

create table emp2 as select * from emp where rownum<1;

例5:修改已存在表存储参数:

Alter table emp2 storage( next 256k pctincrease 0 );

例6:删除表中的列:

这是Oracle8i的新功能,它的基本语法为:ALTER TABLE . . . . . . DROP COLUMN [ CASCADE CONSTRAINTS ];

如:

Alter table emp drop column comm ;

例7:重新定位和组织表:

这是Oracle8i的新功能,可以实现:

l将未分区的表从一个表空间移到另一个表空间;

l      重新组织一个未分区表的存储。

它的基本语法为:

ALTER TABLE . . . . . . MOVE TABLESPACE ;

如:

Alter table emp move tablespace users;

例8:将表标识为不可用:

这是Oracle8i的新功能,可以实现对空间的收回等。

基本语法为:

ALTER TABLE . . . . . . SET UNUSED COLUMN;

如:

Alter table emp set UNUSED COLUMN xyz;

提示:虽然Oracle允许用户对表的结构进行修改。但建议你在工作中不要采用方式。因为表结构被多次修改会影响应用系统的性能。

3.3 删除表结构Oracle提供DROP TABLE命令可以实现删除表数据和结构。提醒初学者,不要轻易使用DROP TABLE命令。DROP TABLE 命令语法:DROP TABLE [user.]table_name[CASCADE CONSTRAINTS] CASCADE CONSTRAINTS表示所有指向本表的主键,外部键被删掉。当删除一个表时,下面的对象也随之被删掉。

l表的索引;

l指向本表的外部键;

l本表的触发器;

l本表中的分区;

l本表的快照;

l本表的角色和用户权限;

l      加在本表的所有限制。

提示:如果你在定义表结构时,采用了主键、外部键来定义了一序列表。则在删除表结构时要小心。不要轻易用CASCADE子句。

3.4 使用CHECK作限制约束Oracle提供了一个很有用的子句CHECK,它可以实现对数据的自动检查。它的用法是在创建表结构时使用。如:

本文出自 51CTO.COM技术博客

上一篇 138端口解析  下一篇 java: cannot execute binary file 如果遇到这..

类别:数据库系列┆技术圈(0)┆阅读(9)┆评论(1)┆推送到技术圈┆返回首页

文章评论

[1楼] jxwpx

2009-11-05 10:06:21

Create table worker

(     empno     number(4)   primary   key,

name       varchar2(10),

age       number(2)   CHECK(age   between 18   and   65 ),

/* age number(2) CHECK( age >=18 and age<=65 ) */

lodging char(15) References LODGING(lodging)

);

Create table emp3

(   empno       number(4) constraint abc   primary   key,

ename       varchar2(10),

job       varchar2(10),

sex       char(2) check ( sex=‘男’ or sex=‘女’),

mgr       number(4),

hiredate     date,

sal       number(7,2), /*工资 */

comm       number(7,2), /*奖金 */

deptno     number(2),

CHECK ( sal+comm >0 and sal+comm<=5000 )

);

建议:在设计数据库表结构时,建议你分析用户的数据的取值范围,从而将那些取值范围一定的字段用CHECK进行描述。以保证以后数据的正确性。

3.5 使用UNRECOVERABLE创建表

对于特殊的需要,可以考虑将表创建成为不需恢复(UNRECOVERABLE)的表。如复制一个已存在的表就可以采用这种方法以减少系统的开销。如:

例:参考emp表创建一个新的emp_new表:

SQL> create table new_emp as select * from emp UNRECOVERABLE;

表已创建。

CREATE TABLE new_emp AS select * from emp NOLOGGING;

注:虽然上面提到UNRECOVERABLE,但是Oracle推荐你使用NOLOGGING或LOGGING;相关阅读:

CSS3模块的目前的状况分析

windows 下修改网卡MAC地址

Mysql5.0 触发器

CSS3属性选择符介绍

最常用的SQL语句

javascript实例教程(20-14)

asp.net 安全的截取指定长度的html或者ubb字符串

javascript web页面刷新的方法收集

技巧:用ASP在线创建Word与Excel文档

如何部署Exchange 2000路由和存储(1)

什么是phpDocumentor

jQuery1.6 使用方法二

FreeBSD的历史演绎

DEDE给自定义模型的字段加上链接

转载地址:https://blog.csdn.net/weixin_35172279/article/details/116392346 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:php cms相对路径,PHPCMS V9采集地址中有相对路径的问题及解决方法
下一篇:备份oracle_home,ORACLE_数据库全备份+归档异地恢复

发表评论

最新留言

不错!
[***.144.177.141]2024年03月26日 01时19分02秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

matlab 50hzquchu,新手求消除50HZ工频干扰陷波滤波器源程序 2019-04-21
laravel没有route.php,Laravel中的RouteCollection.php中的NotFoundHttpException 2019-04-21
php服务端开启socket,php socket服务端能不能在网页端开启?而不是只能用CLI模式开启... 2019-04-21
php不需要也能输出,php 如何只输出最后生成的那个值?? 2019-04-21
php正则过滤sql关键字,使用正则表达式屏蔽关键字的方法 2019-04-21
php取整v,php取整方式分享 2019-04-21
php写模糊搜索api接口,php通过sphinxapi接口实现全文搜索 2019-04-21
oracle安装出现2932,【案例】Oracle报错ORA-19815 fast_recovery_area无剩余空间解决办法... 2019-04-21
rac数据库下oracle打小补丁,Oracle 11g RAC 环境打PSU补丁的详细步骤 2019-04-21
form表单属性名相同java_form表单提交时候有多个相同name 的input如何处理? 2019-04-21
java图片加气泡文字_图片加气泡文字 2019-04-21
java总结i o流_14.java总结I/O流 2019-04-21
java和历转为西历_日期转西暦,和暦 2019-04-21
java 远程 yarn jar_再论Yarn Client和Yarn cluster 2019-04-21
java单元测试断言_单元测试+断言 2019-04-21
java 创建压缩包_用Java创建ZIP压缩文件 2019-04-21
java typedarray_TintTypedArray.java 2019-04-21
java字符字面量_java – 字符串字面量的行为是令人困惑的 2019-04-21
php判断数组的值是否为空,PHP判断数组是否为空的常用方法(五种方法) 2019-04-21
php 读数据库,PHP数据库 2019-04-21