前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >oracle基础|修改表结构和约束|delete和truncate的比较

oracle基础|修改表结构和约束|delete和truncate的比较

作者头像
小小鱼儿小小林
发布2021-12-28 10:30:26
4610
发布2021-12-28 10:30:26
举报
文章被收录于专栏:灵儿的笔记灵儿的笔记

目录

一、修改语法包括哪些

二、用到的命令

三、详细说明

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';
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-12-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、修改语法包括哪些
  • 二、用到的命令
  • 三、详细说明
    • 1.增加列:
      • 2.删除列:
        • 3.修改列属性:(数据类型和约束)
          • 4.增加约束
            • 5.删除约束:
              • 6.使一个约束失效:
                • 7.使一个约束生效:
                  • 8.删除表:
                    • 9.重命名:rename
                      • 10.截断表:truncate
                        • 11.给表加注释:comments
                        • 四、查看注释
                          • 查询表的注释:
                            • 查询列的注释:
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档