oracle对表授权修改表结构,Oracle-08-修改表结构(对已有的表增删改查)

一、在创建表的时候加上主键的例子:

create table stu(

id number(5)primary key,

name varchar2(20)

);

以上是一种主键约束。简单了解下。约束表中id列中的数据,要求不为空且不能重复。

二、修改表结构常用的3种操作:

1.在一个表中加入一个新的列

语法格式:

alter table

表名 add

(列名 数据类型 [default默认值] [, 列名…])

如果加一列不够,可以逗号之后再加一列。

【注意】alter是DDL语句,一旦改动就永久改动。

例:为A表加入“age”一列,该列的数据类型为“number”,且默认值为23。

alter table A add agenumber(2) default 23

下面具体操作:

Step1:首先用lisi登录数据库,因为原sys用户下面的表太多,查询起来麻烦,换个自定义用户lisi登录数据库,查询方便,如下图:

A231133325-216758.png_small.png

Step2:查询当前用户下的表数量,注意下图中的命令:

A231135435-216758.png_small.png

Step3:发现lisi用户下没有表,那么创建一个表,如下图:

A231137529-216758.png_small.png

Step4:再次用步骤2的方法查询,如下图:

A231139638-216758.png_small.png

接着用desc A查询A表的结构,如下图:

A231141716-216758.png_small.png

发现lisi用户下已有表A。

Step5:为A表增加age列,如下图:

A231143841-216758.png_small.png

Step6:再次用desc A查看A表结构,如下图:

A231145935-216758.png_small.png

2.修改在一个表中已存在的列

语法格式:

alter table

表名 modify

(列名 数据类型 [default默认值] [,列名…])

【注意】alter语句一旦执行,就永久修改。

例:将A表中的age这列的数据类型改为varchar2(2)

alter table A modify agevarchar2(2)

下面具体操作:

Step1:为了说明报错信息,首先给空的A表中添加一行数据,如下图:

A231148044-216758.png_small.png

查询表结构和表内容,如下图:

A231150138-216758.png_small.png

说明数据内容添加成功。

Step2:这时候将表age列修改为varchar2(2),如下图:

A231152310-216758.png_small.png

发现报错,因为被修改的age列已经存在数据,所以被修改的列必须是空的才能修改

Step3:将表A的age列清空,注意下图中的命令,如下图所示:

A231154403-216758.png_small.png

查询表结构和表内容:

A231156497-216758.png_small.png

Step4:将表A中的age列修改为varchar2(2),如下图:

A231158607-216758.png_small.png

【注意】修改一个表中已经存在的列要注意以下事项:

(1)可以增加字符类型的列的宽度,简单说,比如原来该列是varchar2(2)类型,在不改变类型情况下,不管该列是否为空,都可以增加长度,比如把2加到10,即varchar(10);

(2)可以增加数字类型的列的宽度和精度,数字类型比如number类型;

(3)只有当所有列的值都为空或者表中没有数据时,才可以减少列的宽度;

(4)只有当所有列的值都为空时,才可以改变某一列的数据类型,如上面示例说明;

(5)如果改变某一列的默认值,该默认值只能影响以后的操作,如以下操作,在将A表age列的默认值改为23后,原来张三数据依然为空,之后添加的张四数据age默认值为23,所以只影响以后的操作:

表中原数据查询:

A231200732-216758.png_small.png

修改age列的默认值为23:

A231202872-216758.png_small.png

再次查询A表内容,发现原来数据的age列没改:

A231204997-216758.png_small.png

插入新数据张四:

A231207122-216758.png_small.png

查询发现新数据张四的age是新设置的默认值23:

A231209231-216758.png_small.png

所以修改某一列的默认值,不影响原数据,只影响后数据;

(6)只有当某一列没有改变该列的大小的情况下,才可以把char类型的列改变成varchar2类型的列,或者把varchar2类型的列改变成char类型的列,因为char类型如果数据长度不够,会自动补空格,所以如果把varchar2类型改为char类型,长度会改变,不安全。

3.从一个表中删除一列

语法格式:

alter table

表名 drop column列名

例:将A表中的age列删除

alter table A drop column age

实战操作:

Step1:先看下现在的A表,如下图:

A231211435-216758.png_small.png

Step2:删除age列,如下图:

A231213575-216758.png_small.png

Step3:查询是否删除成功,如下图:

A231215669-216758.png_small.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值