`
青春的、脚步
  • 浏览: 39576 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Oracle :alter table

 
阅读更多
主要讲述Alter table语句的用法,对表进行修改,alter table 语句可以执行以下任务:
1、添加、修改或删除列
2、添加或删除约束
3、启用或禁用约束
一、添加列(alter table table_name add 列名 类型)
⑴、向表order_status2添加一个名为modified_by的列,类型为integer
SQL>alter table order_status2 add modified_by integer;
向表order_status2添加一个名为initially_created的列,类型为date,默认为sysdate
⑵、SQL>alter table order_status2 add initially_created date default sysdate not null;
二、修改列(alter table table_name modify 列名 ….)
1、修改列的长度,条件是该列的类型的长度可以修改,如:char或varchar2
2、修改数字列的精度
3、修改列的数据类型
4、修改列的默认值
以下将一一举例说明:
⑴修改列的长度
将表order_status2中status列的长度从10增加到20(类型为varchar2)
SQL>alter table order_status2 modify status varchar2(20);
注:只有在表中还没有任何行或所有列都为空值时才可以减小列的长度
⑵修改数字列的精度
将order_status2中id列的精度从40修改为20(类型为number)
SQL>alter table order_status2 modify id number(20);
注:只有在表中还没有任何行或所有列都为空值时才可以减小数字列的精度
⑶修改列的数据类型
将order_status2表中status列的数据类型从varchar2修改为char
SQL>alter table order_status2 modify status char(20);
⑷修改列的默认值
将order_status2表中last_modified列的默认值修改为sysdate-1
SQL>alter table order_status2 modify last_modified default sysdate-1;
⑸删除列
将order_status2表中的initially_creaded列删除
SQL>alter table order_status2 drop column initially_created;
三、添加约束(CHECK、NOT NULL、PRIMARY KEY、FOREIGN KEY、UNIQUE、CHECK OPTION、READ ONLY等)
⑴添加CHECK约束
向表order_status2中status列添加一个check约束
SQL>alter table order_status2 add constraint order_status2_status_chk check (status in (‘PLACED’,’PENDING’,’SHIPPED’));
添加一个ID约束,限制ID的值大于0;
SQL>alter table order_status2 add constraint order_status2_id_chk check (id>0);
⑵添加NOT NULL约束
向order_status2表中status列添加一个NOT NULL约束
SQL>alter table order_status2 modify status constraint order_status2_status_nn not null;
对modified_by 列添加一个NOT NULL约束
SQL>alter table order_status2 modify modified_by constraint order_status2_modified_by_nn not null;
SQL>alter table order_status2 modify last_modified not null;
⑶添加FOREIGN KEY约束
使用alter table首先从order_status2中删除modified_by列,然后添加一个引用employees.employee_id列的FOREIGN KEY约束;
SQL>alter table order_status2 drop column modified_by;
SQL>alter table order_status2 add constraint order_status2_modified_by_fk modified_by references employees(employee_id);
使用一个带有FOREIGN KEY 约束的ON DELETE CASCADE子句,可以指定在父表中删除一行记录时,子表中匹配的所有行也都将被删除
SQL>alter table order_status2 drop column modified_by;
SQL>alter table order_status2 add constraint order_status2_modified_by_fk modified_by references employee(employee_id) on delete cascade;
即当employee表中删除一行记录时,在order_status2表所有匹配的行也都将被删除
SQL>alter table order_status2 add constraint order_status2_modified_by_fk modified_by references employee(employee_id) on delete set null;
即当employee表中删除一行记录时,在order_status2表所有匹配的行也都将被设置为空值
⑷添加UNIQUE约束
向order_status2表的status列添加一个UNIQUE约束
SQL>alter table order_status2 add constraint order_status2_status_uq unique(status);
⑸删除约束
使用alter table的drop constraint子句可以删除约束
SQL>alter table order_status2 drop constraint order_status2_status_uq;
⑹禁用约束
以下是添加一个UNIQUE约束并禁用
SQL>alter table order_status2 add constraint order_status2_status_uq unique(status) disable;
禁用一个现有的约束
SQL>alter table order_status2 disable constraint order_status2_status_nn;
⑺启用约束
以下是启用order_status2_status_uq约束
SQL>alter table order_status2 enble constraint order_status2_status_uq;
通过指定ENABLE NOVALIDATE,可以选择只对新数据应用某个约束
SQL>alter table order_status2 enable novalidate constraint order_status2_status_uq;
⑻延迟约束
延迟约束(deferred constraint)是在事务被提交时强制执行的约束
INITIALLY IMMEDIATE:是每次向表中添加数据、修改表的数据或删除数据时都要检查这个约束(这与约束的默认行为相同)
INITIALLY DEFERRED:在事务提交(即执行commit命令)时才会检查约束
SQL>alter table order_status2
add constraint order_status2_status_uq unique(status)
deferrable initially deferred|immediate;
获得相关约束信息
通过查询user_constraints可以获得有关约束的信息
使用all_constraints可以获得所有可以访问的约束的信息
SQL>select constraint_name,constraint_type,status,deferrable,deferred
 From user_constraints
 Where table_name=upper(‘order_status2’);
获得有关列的约束信息
通过查询user_cons_columns可以获得有关列的约束信息
使用all_con_columns可以获得所有可以访问的列的约束信息
SQL>column column_name format a15
SQL>select constraint_name,column_name
 From user_cons_columns
 Where table_name=upper(‘order_status2’);
下面是对user_constraints和user_cons_columns进行的联合查询
SQL>select ucc.column_name,ucc.constraint_name,uc.constraint_type,uc.status
 From user_constraints uc,user_cons_columns ucc
 Where uc.table_name=ucc.table_name
 And uc.constraint_name=ucc.constraint_name
 And ucc.table_name=upper(‘order_status2’);
⑼重命名表 
SQL>rename order_status2 to order_state;
⑽向表添加注释
以下是向表order_status2添加注释
SQL>comment on table order_status2 is ‘order_status2 stores the of an order’;
以下是向列order_status2.last_modified添加注释
SQL>comment on column order_status2.last_modified is ‘last_modified stores the date and time the order was modified last’;
使用user_tab_comments视图获取表的注释
SQL>select * from user_tab_comments where table_name=’ORDER_STATUS2’;
使用user_col_comments视图获取有关列的注释
SQL>select * from user_col_comments where table_name=’ORDER_STATUS2’;
⑾截断表
SQL>truncate table order_status2; (能降低高水位,回收空间,只删除表的数据,不删除此表)
SQL>drop table order_status2;

分享到:
评论

相关推荐

    ALTER TABLE table_name

    一个字段: ALTER TABLE table_name MODIFY(字段类型 数据类型)); 添加一个字段: ALTER TABLE table_name ADD(字段类型 数据类型);

    oracle学习笔记(三)

    create table 表名(column datatype [default expr][,column …]) default 约束 说明略 2、利用子查询创建表 create table 表名 as select * from u表 二、修改表 1、添加一个新列 oracle:alter table table_name ...

    oracle笔记.doc

    ALTER TABLE 学生信息 ALTER COLUMN 姓名varchar(20) NOT NULL 3)添加列: ALTER TABLE 学生信息 ADD 家庭住址nvarchar(20) NULL 4)删除列: ALTER TABLE 学生信息 DROP COLUMN 家庭住址CASCADE

    MySQL 添加、修改、删除表的列及约束等表的定义

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义。 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 删除列:alter table 表名 drop...

    oracle游标

    ALTER TABLE 学生信息 ALTER COLUMN 姓名varchar(20) NOT NULL 3)添加列: ALTER TABLE 学生信息 ADD 家庭住址nvarchar(20) NULL 4)删除列: ALTER TABLE 学生信息 DROP COLUMN 家庭住址CASCADE

    Oracle对字段的增删改方法分享

    Oracle是目前最流行的数据库之一,功能强大,性能卓越,相对的学习的难度还是不小。本文就是将自己的一些经验总结分享给大家,做个积累,方便自己和其他的学习者。...alter table table_name rename column

    Oracle表字段的增删改、表的重命名及主键的增删改

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除...

    oracle删除表字段和oracle表增加字段

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除...

    oracle使用sql语句增加字段示例(sql删除字段语句)

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除...

    Oracle数据库表中字段顺序的修改方法

    前言 前段时间,有人问我, 有一个关于...添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 实例 创建表结构: create table test1 (id varchar2(20) not null);

    ORACLE常用DBA操作语法

    ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01','YYYY-MM-DD')); 注意:以上添加的分区界限应该高于最后一个分区界限。 以下代码给SALES表的P3分区添加了一个P3SUB1子分区 ALTER ...

    某知名公司内部ORACLE培训资料(如果你看后觉得不行,可以损我,人格担保)

    某知名公司内部ORACLE培训资料,绝对不可多得。 如果你下载后觉得不行,可以损我。 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql ...

    SQL判断字段列是否存在的方法

    增加字段 代码如下:alter table docdsp add dspcode char(200)删除字段 代码如下:ALTER TABLE table_NAME DROP COLUMN column_NAME修改字段类型 代码如下:ALTER TABLE table_name ALTER COLUMN column_name new_...

    oracle数据备份

    Alter table table_name add (new_colum_name datatype [default value] [not null]) 修改列类型 Alter table…modify Alter table table_name modify column_name new_datatype 修改列名 Alter table…rename Alter...

    Oracle常用的命令如何查看表的结构

    Alter table 表名 modify(字段名 类型 约束); 1 alter table test modify (addd varchar2(10) null); alter table 表名 add(字段名 类型 约束); 2 alter table test add(age varchar2(5)); 1.登陆系统用户 在...

    Oracle数据库学习笔记

    向你介绍我的Oracle数据库学习笔记 1.SQL命令: SQL 支持4大类型命令: 数据定义语言(DDL): Create(创建), Alter(更改), Drop(删除). 数据操纵语言(DML): Select(选择), Insert(插入), ...

    Oracle 10gR2压缩(Compress)技术

    4.5 alter table … move partition … compress 8 5、分区表的压缩测试 8 5.1 分区表创建 8 5.2 分区表压缩属性查看 8 5.3 分区表压缩属性修改 9 5.4 分区索引压缩属性修改 10 5.5 分区表空间数据压缩 12 5.6 分区...

    常见的sqlserver操作

    1,增加列: 相同 alter table test add mail varchar(128); 2,删除列: oracle 与mysql相同: alter table test drop column mail; db2 : 不提供删除列功能(解决办法是删除表,重建)

    详解Oracle修改字段类型方法总结

    最近学习了Oracle修改字段类型方法,留做记录。 有一个表名为tb,字段段名为name,数据类型nchar(20)。 1、假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter table tb modify (name nvarchar2(20...

    oracle数据库安装

    Alter table table_name add (new_colum_name datatype [default value] [not null]) 修改列类型 Alter table…modify Alter table table_name modify column_name new_datatype 修改列名 Alter table…rename Alter...

Global site tag (gtag.js) - Google Analytics