待整理--Oracle修改表结构常用语句
2012-12-26 17:51
155 查看
增加一列或者多列
alter table 表名 add(column_name datatype[,..]);
修改一列或者多列(修改列的类型或者是长度)
alter table 表名 modify(column_name datatype[,..]);
删除一列
alter table 表名 drop column column_name;
删除多列
alter table 表名 drop(column_name[,..])
建表阶段添加约束(字段级|表级)
非空约束(not null)
1)确保其所在字段值不能为空
2)非空约束只能定义为字段级别
基本语法:column_name datatype not null
唯一约束(unique)
1)确保其所在字段值不能重复
2)允许空值
3)既可以定义为字段级别也可以定义到表级别
4)可以在一个字段上建立唯一约束
(此字段值不能重复,既可以是表级别也可以是字段级别),
也可以在几个字段上建立唯一约束(这几个字段的组合值不能重复,只能是表级别的)
5)Oracle会自动为建立唯一约束的字段创建索引
字段级别:column_name datatype unique
表级别:
constraint uni_name unique(column_name[,..])自定义约束名
或者
unique(column_name[,..]) 系统自动分配约束名
删除约束:alter table 表名 drop constraint 约束名;
主键约束(primary key)
1)确保所在字段值非空且唯一
2)一个表最多只允许一个主键,当然这个主键可以基于一个字段也可以基于多个字段
3)非联合主键既可以是字段级别的也可以是表级别的,联合主键只能是表级别的
4)oracle会自动为其建立索引
字段级别:column_name datatype primary key
表级别:
constraint p_k primary key(column_name[,..])自定义约束名
或者
primary key(column_name[,..])系统自动分配约束名
一般情况下我们选择通过序列让系统去帮我们确保不违反主键约束
create table 表名(column_name datatype primary key,column_name2 datatype[,..]);
create sequence 序列名;
insert into 表名 values(序列名.nextval,值[,..])
删除主键:
alter table 表名 drop constraint 约束名;
或者
alter table 表名 drop primary key;
外键约束(foreign Key)
1)确保所在字段的值与另一个表中的字段值有一定的关联关系
2)既可以定义为字段级别也可以定义为表级别
3)被外键关联上的另一个表的字段必须唯一(即此字段必须是
unique或者primary key)
字段级别:column_name datatype reference 父表名(字段名)
表级别:
constraint f_k foreign key(column_name) references 父表名(字段名) --自定义约束名
或者
foreign key(column_name) references 父表名(字段名) --系统自动分配约束名
删除父表(主表):
方式一:先删除子表或者只删除子表的外键约束
然后使用drop table 表名删父表
方式二:drop table 父表名 cascade constraints;
检查约束(check)
1)确保所在字段的值在check所给的范围里面
2)既可以定义为字段级别也可以定义为表级别
字段级别:column_name datatype check(值1,值2)
表级别:constraint c_k check(条件)--自定义约束名
或者check(条件)--系统自动分配约束名
建完表后添加约束
alter table 表名 add constraint 约束名 unique(column_name[,..])--自定义约束名
alter table 表名 add unique(column_name[,..]);--系统自动分配约束名
主键约束、外键约束、检查约束的添加形如唯一约束
非空约束的添加
alter table 表名 modify(column_name not null);
禁用约束:
alter table 表名 disable constraint 约束名;
启用约束
alter table 表名 enable constraint 约束名;
删除约束
SQL> alter table dept drop unique (dname,loc) //指定约束的定义内容
SQL> alter table dept drop constraint dept_dname_loc_uk //指定约束名
【重要】删除约束时,默认将同时删除约束所对应的索引,如果要保留索引,用KEEP INDEX关键字
SQL> alter table employees drop primary key keep index
【重要】如果要删除的约束正在被其它约束引用,通过ALTER TABLE..DROP语句中指定CASCADE关键字能够同时删除引用它的约束
【重要】利用下面的语句在删除DEPT表中的PRIMARY KEY约束时,同时将删除其它表中引用这个约束的FOREIGN KEY约束:
SQL> alter table dept drop primary key cascade
禁用/激活约束(禁用/激活约束会引起删除和重建索引的操作)
方法1:
SQL> alter table bkeep3 disable constraint bkeep3_pk;
Table altered.
SQL> alter table bkeep3 enable constraint bkeep3_pk;
Table altered.
SQL> alter table employees disable/enable unique email
方法2:
SQL> alter table bkeep3 modify constraint bkeep3_pk disable;
Table altered.
SQL> alter table bkeep3 modify constraint bkeep3_pk enable;
Table altered.
【重要】
如果有FOREIGN KEY约束正在引用UNIQUE或PRIMARY KEY约束,则无法禁用这些UNIQUE或PRIMARY KEY约束,
这时可以先禁用FOREIGN KEY约束,然后再禁用UNIQUE或PRIMARY KEY约束;或者可以在ALTER TABLE...DISABLE 语句中指定CASCADE关键字,这样将在禁用UNIQUE或PRIMARY KEY约束的同时禁用那些引用它们的FOREIGN KEY约束,如:
SQL> alter table employees disable primary key cascade
14,约束数据字典
·all_constraints/dba_constraints/user_constraints
约束的基本信息,包括约束的名称,类型,状态
(约束类型:C(CHECK约束),P(主码约束),R(外部码约束),U(唯一码约束))
·all_cons_columns/dba/user 约束对应的字段信息
SQL> desc user_cons_columns;
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
CONSTRAINT_NAME NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME VARCHAR2(4000)
POSITION NUMBER
SQL> col constraint_name format a24
SQL> col column_name format a30
SQL> select constraint_name,column_name from user_cons_columns;
CONSTRAINT_NAME COLUMN_NAME
------------------------ ------------------------------
SYS_C0017219 LAST_NAME
SYS_C0017221 HIRE_DATE
SYS_C0017222 JOB_ID
EMP_ENAME_PHONE_UK ENAME
EMP_ENAME_PHONE_UK PHONE
alter table 表名 add(column_name datatype[,..]);
修改一列或者多列(修改列的类型或者是长度)
alter table 表名 modify(column_name datatype[,..]);
删除一列
alter table 表名 drop column column_name;
删除多列
alter table 表名 drop(column_name[,..])
建表阶段添加约束(字段级|表级)
非空约束(not null)
1)确保其所在字段值不能为空
2)非空约束只能定义为字段级别
基本语法:column_name datatype not null
唯一约束(unique)
1)确保其所在字段值不能重复
2)允许空值
3)既可以定义为字段级别也可以定义到表级别
4)可以在一个字段上建立唯一约束
(此字段值不能重复,既可以是表级别也可以是字段级别),
也可以在几个字段上建立唯一约束(这几个字段的组合值不能重复,只能是表级别的)
5)Oracle会自动为建立唯一约束的字段创建索引
字段级别:column_name datatype unique
表级别:
constraint uni_name unique(column_name[,..])自定义约束名
或者
unique(column_name[,..]) 系统自动分配约束名
删除约束:alter table 表名 drop constraint 约束名;
主键约束(primary key)
1)确保所在字段值非空且唯一
2)一个表最多只允许一个主键,当然这个主键可以基于一个字段也可以基于多个字段
3)非联合主键既可以是字段级别的也可以是表级别的,联合主键只能是表级别的
4)oracle会自动为其建立索引
字段级别:column_name datatype primary key
表级别:
constraint p_k primary key(column_name[,..])自定义约束名
或者
primary key(column_name[,..])系统自动分配约束名
一般情况下我们选择通过序列让系统去帮我们确保不违反主键约束
create table 表名(column_name datatype primary key,column_name2 datatype[,..]);
create sequence 序列名;
insert into 表名 values(序列名.nextval,值[,..])
删除主键:
alter table 表名 drop constraint 约束名;
或者
alter table 表名 drop primary key;
外键约束(foreign Key)
1)确保所在字段的值与另一个表中的字段值有一定的关联关系
2)既可以定义为字段级别也可以定义为表级别
3)被外键关联上的另一个表的字段必须唯一(即此字段必须是
unique或者primary key)
字段级别:column_name datatype reference 父表名(字段名)
表级别:
constraint f_k foreign key(column_name) references 父表名(字段名) --自定义约束名
或者
foreign key(column_name) references 父表名(字段名) --系统自动分配约束名
删除父表(主表):
方式一:先删除子表或者只删除子表的外键约束
然后使用drop table 表名删父表
方式二:drop table 父表名 cascade constraints;
检查约束(check)
1)确保所在字段的值在check所给的范围里面
2)既可以定义为字段级别也可以定义为表级别
字段级别:column_name datatype check(值1,值2)
表级别:constraint c_k check(条件)--自定义约束名
或者check(条件)--系统自动分配约束名
建完表后添加约束
alter table 表名 add constraint 约束名 unique(column_name[,..])--自定义约束名
alter table 表名 add unique(column_name[,..]);--系统自动分配约束名
主键约束、外键约束、检查约束的添加形如唯一约束
非空约束的添加
alter table 表名 modify(column_name not null);
禁用约束:
alter table 表名 disable constraint 约束名;
启用约束
alter table 表名 enable constraint 约束名;
删除约束
SQL> alter table dept drop unique (dname,loc) //指定约束的定义内容
SQL> alter table dept drop constraint dept_dname_loc_uk //指定约束名
【重要】删除约束时,默认将同时删除约束所对应的索引,如果要保留索引,用KEEP INDEX关键字
SQL> alter table employees drop primary key keep index
【重要】如果要删除的约束正在被其它约束引用,通过ALTER TABLE..DROP语句中指定CASCADE关键字能够同时删除引用它的约束
【重要】利用下面的语句在删除DEPT表中的PRIMARY KEY约束时,同时将删除其它表中引用这个约束的FOREIGN KEY约束:
SQL> alter table dept drop primary key cascade
禁用/激活约束(禁用/激活约束会引起删除和重建索引的操作)
方法1:
SQL> alter table bkeep3 disable constraint bkeep3_pk;
Table altered.
SQL> alter table bkeep3 enable constraint bkeep3_pk;
Table altered.
SQL> alter table employees disable/enable unique email
方法2:
SQL> alter table bkeep3 modify constraint bkeep3_pk disable;
Table altered.
SQL> alter table bkeep3 modify constraint bkeep3_pk enable;
Table altered.
【重要】
如果有FOREIGN KEY约束正在引用UNIQUE或PRIMARY KEY约束,则无法禁用这些UNIQUE或PRIMARY KEY约束,
这时可以先禁用FOREIGN KEY约束,然后再禁用UNIQUE或PRIMARY KEY约束;或者可以在ALTER TABLE...DISABLE 语句中指定CASCADE关键字,这样将在禁用UNIQUE或PRIMARY KEY约束的同时禁用那些引用它们的FOREIGN KEY约束,如:
SQL> alter table employees disable primary key cascade
14,约束数据字典
·all_constraints/dba_constraints/user_constraints
约束的基本信息,包括约束的名称,类型,状态
(约束类型:C(CHECK约束),P(主码约束),R(外部码约束),U(唯一码约束))
·all_cons_columns/dba/user 约束对应的字段信息
SQL> desc user_cons_columns;
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
CONSTRAINT_NAME NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME VARCHAR2(4000)
POSITION NUMBER
SQL> col constraint_name format a24
SQL> col column_name format a30
SQL> select constraint_name,column_name from user_cons_columns;
CONSTRAINT_NAME COLUMN_NAME
------------------------ ------------------------------
SYS_C0017219 LAST_NAME
SYS_C0017221 HIRE_DATE
SYS_C0017222 JOB_ID
EMP_ENAME_PHONE_UK ENAME
EMP_ENAME_PHONE_UK PHONE
相关文章推荐
- 常用数据表结构修改sql语句(oracle)
- Oracle修改表结构语句
- 在Oracle 9i中修改表的结构的相关sql语句
- Oracle维护常用SQL语句整理一
- MySql表结构修改常用语句
- Oracle中常用的修改表操作的sql语句
- Oracle维护常用SQL语句整理二
- 关于oracle常用语句的一些整理
- Oracle中常用的修改表操作的sql语句
- oracle常用语句整理
- 在SQLPLUS中oracle查看表结构SQL语句 oracle修改表字段SQL语句 修改表字段SQL语句
- ORACLE修改数据结构语句
- Oracle系统表整理+常用SQL语句收集
- MySql表结构修改常用语句
- MySQL、SqlServer、ORACLE三大数据库常用语句之间的区别整理
- 修改Sql Server表结构时,常用到的Alter语句
- Oracle系统表整理+常用SQL语句收集
- Oracle系统表整理+常用SQL语句收集
- oracle 修改数据表结构常用sql
- 常用数据表结构修改sql语句