软件信息网 移动端开发 Oracle数据添加字段

Oracle数据添加字段

 语法

复制代码
--在 ADD 之后指定要添加新列的名称,数据类型及其约束
--添加一列
ALTER TABLE table_name 
ADD column_name data_type constraint;
--添加多列,在这个语法中,用逗号分隔两列
ALTER TABLE table_name 
ADD (
    column_name_1 data_type constraint,
    column_name_2 data_type constraint,
    ...
);
复制代码

首先创建一个测试表,脚本如下:

复制代码
--我们本次使用的11g建立数据表语法(无自增)
CREATE TABLE TEST(
    ID INT, 
    NAME VARCHAR2(50),
    SEX VARCHAR2(50),
    PRIMARY KEY(ID)
);
-- 12c语法,设置ID自增,在12c以下版本会报错
CREATE TABLE TEST(
    ID NUMBER GENERATED BY DEFAULT AS IDENTITY,
    NAME VARCHAR2(50),
    SEX VARCHAR2(50),
    PRIMARY KEY(ID )
);
复制代码

以下语句将一个名为birth的新列添加到TEST表中,且不允许为空值:

ALTER TABLE TEST 
ADD birth DATE NOT NULL;

假如我们想记录一行的创建和更新的时间。那么可以再添加两列created_at和updated_at,如下所示:

ALTER TABLE
    TEST ADD(
        created_at TIMESTAMP WITH TIME ZONE NOT NULL,
        updated_at TIMESTAMP WITH TIME ZONE NOT NULL
    );

要检查表中是否存在列,可以从user_tab_cols视图查询数据。例如,以下语句将检查TEST表是否具有NAME 列。

复制代码
SELECT
    COUNT(*)
FROM
    user_tab_cols
WHERE
    column_name = 'NAME'
    AND table_name = 'TEST';
复制代码

当想在添加表之前检查列中是否存在列时,此查询就派上用场了。
例如,下面的PL/SQL块在使用PLSQL Developer工具添加之前检查TEST表是否有ADD_TMS列,如果有则输出“表中已存在要添加的列”,如果没有则直接添加。

复制代码
--需要注意的是默认pl/sql不输出,需要开启下,
--开启步骤:首选项——>Oracle——>输出——>勾选已开启

--声明变量存储要查询的表中的列是否存在
DECLARE
  v_column_exists number;  
BEGIN
  --从系统表中查询表中的列是否存在
  Select count(*) into v_column_exists
    from user_tab_cols
    where upper(column_name) = 'ADD_TMS'
      and upper(table_name) = 'TEST';
--如果不存在,使用快速执行语句添加ADD_TMS列
  if (v_column_exists = 0) then
      execute immediate 'alter table TEST add (ADD_TMS date)';
   ELSE
      dbms_output.put_line('表中已存在要添加的列');    
  end if;
end;
--oracle中斜杠(/)的含义斜杠就是让服务器执行前面所写的sql脚本
/
复制代码

 

本文来自网络,不代表软件信息网立场,转载请注明出处。软件定制开发交流:15528175269(微信同号)http://www.saasyo.com/xz/17047.html

作者: 王鹏程序员

上一篇
下一篇
联系我们

联系我们

15889726201

在线咨询: QQ交谈

邮箱: 187395037@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部