SQL alter

本文介绍了Oracle数据库中表约束的管理和字段类型的调整方法。包括查看、添加、删除约束的操作命令,以及两种修改字段类型的方法及其优缺点。适用于需要进行数据库表结构调整的Oracle数据库管理员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 查表约束

  select * from user_constraints

 

2. 删除约束

  alter table TABLE_NAME drop constraint CONSTRAINT_NAME;

 

3. 添加约束

  alter table TABLE_NAME add constraint CONSTR_NAME primary key(column1,...);

 

4. 建表时指定主键名称

  create table employee

  (

    emp_no varchar2(5),

    emp_name varchar2(10),

    birthday timestamp(6),

    salary number(9,2),

    constraint employee_pk primary key(emp_no));

 

5. 修改字段类型

  (1) 有精度改变或者改变数据类型,所改字段的列必须为空。但char与varchar2可以直接修改。

    alter table employee modify emp_name varchar2(30); ---

    alter table employee modify salary number(10,2); ---salary列必须为空才能执行

  (2) 有数据时可以用以下两种方法:方法一

    alter table employee add salary_temp number(10,2);

    update employee set salary_temp = salary;

    commit;

    alter table employee drop column salary;

    alter table employee rename column salary_temp to salary;

   这种方法会使列名发生变化,而且字段顺序增加 有可能发生行迁移,对应用程序会产生影响

  (3) 方法二:

    alter table employee add salary_temp number(9); ---首先新增一列,与salary一致

    alter table employee modify salary null;

    update employee set salary_temp=salary,salary=null;

    commit;

    alter table employee modify salary number(10,2);

    update employee set salary=salary_temp,salary_temp=null;

    commit;

    alter table employee drop column salary_temp;

    alter table employee modify salary is not null;

    select * form employee;

这种方法不用使列名发生变化 也不会发生表迁移,但这个有个缺点是表要更新两次,

如果数据量较大的话 产生的undo和redo更多 ,前提也是要停机做;要是不停机的话 ,也可以采用在线重定义方式来做。

 

 

### SQL `ALTER TABLE` 语句概述 SQL中的`ALTER TABLE`语句用于修改现有的表定义,可以用来添加、删除或改变列以及添加或删除各种类型的约束。对于不同的数据库管理系统(DBMS),虽然基本语法相似,但在某些细节方面可能存在差异。 #### 添加新列到表中 当需要向已有表中增加新的字段时,可采用如下方式: ```sql ALTER TABLE table_name ADD column_name datatype; ``` 这条命令会在指定的表里新增加一个具有特定数据类型的列[^1]。 #### 修改列的数据类型 如果要变更某列的数据类型,则可以根据具体的需求执行相应的操作,在一些情况下可能还需要考虑迁移旧数据以适应新的类型限制。不过需要注意的是,并不是所有的DBMS都支持直接更改列的数据类型,这取决于具体的实现环境。 #### 删除列 移除不再使用的列可以通过下面的方式完成: ```sql ALTER TABLE table_name DROP COLUMN column_name; ``` 此指令会彻底清除表格内的某一列及其所有记录值[^2]。 #### 更改列名称 部分版本的SQL还允许用户重命名已经存在的列名,例如在MySQL中有这样的做法: ```sql ALTER TABLE table_name CHANGE old_column_name new_column_name datatype; ``` 这里不仅改变了名字同时也指定了该列的新数据类型[^4]。 #### 添加约束条件 为了确保数据的一致性和完整性,可以在创建或者更新表的时候加入必要的约束规则,比如主键、外键或者是唯一性等属性设置。 ```sql -- 添加主键约束 ALTER TABLE table_name ADD PRIMARY KEY (column_list); -- 添加外键约束 ALTER TABLE table_name ADD FOREIGN KEY (local_columns) REFERENCES referenced_table(referenced_columns); ``` 以上就是有关于`ALTER TABLE`的一些常见用途介绍及实例演示[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值