目录
一、修改语法包括哪些
二、用到的命令
三、详细说明
1.增加列:
2.删除列:
3.修改列属性:(数据类型和约束)
4.增加约束
5.删除约束:
6.使一个约束失效:
7.使一个约束生效:
8.删除表:
9.重命名:rename
10.截断表:truncate
11.给表加注释:comments
四、查看注释
查询表的注释:
查询列的注释:
一、修改语法包括哪些
1.添加和修改列
2.添加,enable,disable,或者remove约束
3.删除表
4.删除表中所有数据并回到表定义的初始状态(截断表)
5.修改对象的名字
6.给对象添加注释,从数据字典中查看注释
二、用到的命令
1.Alter table : 1.添加和修改列 2.添加和删除约束 3.enable,disable约束
2.drop table命令移除表中所有行和表结构
3.rename,truncate,comment
4.当执行以上DDL语句时,事务自动提交
三、详细说明
1.增加列:
语法:
代码语言:javascript复制alter table tb_name
add column datatype [default val] constraint .....
说明:
1.如果添加not null(primary key约束要求值也不能为null)约束,需要保证当前表中没有数据存在
2.新添加的列,相当于表定义中最后一个定义的列。
例如:
代码语言:javascript复制alter table test add name varchar2(10) default 'test' not null ;
代码语言:javascript复制alter table s_stu add (sname varchar2(20),sage number);
代码语言:javascript复制alter table husband add sage number constraint husband_sage_check check(sage<=100);
2.删除列:
语法:alter table tableName drop column column_name;
例如:
代码语言:javascript复制alter table test drop column name;
3.修改列属性:(数据类型和约束)
语法:
代码语言:javascript复制ALTER TABLE table
MODIFY (column datatype [DEFAULT expr][NOT NULL]
[, column datatype]...);
说明:
修改列的规则:
1.可以增加字段的宽度或者精度
2.如果列的值为null或者表中没有数据,可以降低宽度和精度
3.给当前列,后续添加的数据指定默认值。
4.当且仅当当前列中没有null值时,可以定义当前列为not null.
5.当前列中的值为null时,可以修改列的数据类型
6.如果需要给某个字段添加not null约束,只能使用modify。
例如:
代码语言:javascript复制alter table test modify id number constraint test_pk_id primary key;
代码语言:javascript复制 alter table test modify id char(20);
4.增加约束
语法:alter table tb_name add 约束的完整定义
说明:
1.只能增加能够使用表级约束的约束
2.不能修改约束
例如:
代码语言:javascript复制 alter table test add constraint test_pk_id primary key(id);
代码语言:javascript复制alter table test add check(gender in ('F','M'));
5.删除约束:
语法:alter table tb_name drop 约束名。
例如:
代码语言:javascript复制alter table test drop constraint test_pk_id;
删除组件约束时,同时删除和他依赖的外键约束
代码语言:javascript复制alter table test drop constraint test_pk_id cascade;
6.使一个约束失效:
语法:
代码语言:javascript复制alter table tb_name disable constraint constraint_name [cascade];
note:添加cascade表明要让所有的依赖约束都失效。
7.使一个约束生效:
语法:
代码语言:javascript复制alter table tb_name enable constraint constraint_name;
说明:
1.当启用unique和primary key约束时,会自动创建索引。
例如:
代码语言:javascript复制alter table test enable constraint test_id_pk;
8.删除表:
代码语言:javascript复制drop table tb_name [cascade constraint];
说明:
1.删除表中所有数据
2.所有的索引被删除
3.使用cascade constraint,级联删除所有的依赖完整性约束
例如:
代码语言:javascript复制drop table test cascade constraint;
删除之后,可以通过下面sql查看是否约束还在。
代码语言:javascript复制select column_name,constraint_name
from user_cons_columns;
9.重命名:rename
重命名表:
代码语言:javascript复制rename old_tb_name to new_tb_name;
重命名列:
代码语言:javascript复制alter table tb_name rename column old_col_name to new_col_name;
说明:
1.重命名可以用来修改table,view,sequence,synonym
2.只有是这个对象的拥有者,才能重命名。
例如:
代码语言:javascript复制 rename emp to emp2; --将表名重命名为emp2
代码语言:javascript复制alter table emp rename column id to eid;
10.截断表:truncate
语法:truncate table tb_name
note:
1.清空表记录
2.释放当前表所占用的表空间。返回建表初始状态
3.是一个DDL命令。
4.一旦删除,事务不能回滚。
例如:
代码语言:javascript复制truncate table emp;
delete和truncate的比较:
delete:可以指定删除某些列,也可以清空表,但是不释放表空间,在事务没有提交之前可以回滚。
truncate:只能清空表,释放表空间,不能回滚。
11.给表加注释:comments
语法:
代码语言:javascript复制 comment on table talbe_name is '注释内容'
代码语言:javascript复制comment on column table_name.column_name is '注释内容';
note:
1.添加的注释可以在如下数据字典中查看
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS
例如:
代码语言:javascript复制comment on table emp is '测试';
代码语言:javascript复制comment on column emp.eid is 'haha';
四、查看注释
查询表的注释:
1、
代码语言:javascript复制desc user_tab_comments;
2、
代码语言:javascript复制select comments
from user_tab_comments
where table_name='TEACHER';
查询列的注释:
1、
代码语言:javascript复制desc user_col_comments;
2、
代码语言:javascript复制select comments
from user_col_comments
where table_name='TEACHER';