首页 > 数据库 >怎么样给Oracle数据库中的表添加列?

怎么样给Oracle数据库中的表添加列?

时间:2022-12-14 10:58:19浏览次数:74  
标签:name -- 数据库 TEST ADD 添加 Oracle TABLE

首发微信公众号:SQL数据库运维

原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1&sn=450e9e94fa709b5eeff0de371c62072b&chksm=ea37536cdd40da7a94e165ce4b4c6e70fb1360d51bed4b3566eee438b587fa231315d0a5a5b3&token=1491694448&lang=zh_CN#rd


之前总结了ALTER TABLE的五种用法:Oracle中ALTER TABLE的五种用法(点击文字可跳转),现在以实例的方式详细讲解下ALTER TABLE ADD语句向表中添加一列或多列的用法。

 语法

--在 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脚本
/

 

 打开微信搜索“SQL数据库运维”,点击关注“SQL数据库运维”,后台或浏览至公众号文章底部点击“发消息”回复关键字:进群,带你进入高手如云的技术交流群。后台回复关键字:SQL,获取学习资料。

 

标签:name,--,数据库,TEST,ADD,添加,Oracle,TABLE
From: https://www.cnblogs.com/since-1995/p/16981463.html

相关文章

  • DTCC2022预告 | 玖章算术叶正盛:程序员必须掌握的数据库原理
    12月15日,玖章算术CEO叶正盛受邀将参加第13届中国数据库技术大会(DTCC2022),带来《程序员必须掌握的数据库原理》的主题演讲,将于15日下午16点50在「云原生数据库场开发与实践......
  • HANA 数据库
    增加或删除字段ALTERTABLE"SCHEMA1"."TABLE1"DROP(COL1);修改字段类型ALTERTABLE"SCHEMA1"."TABLE1"ALTER("TYPE"NVARCHAR(10)NULL);修改字段名称REN......
  • Oracle 复制表
    在oracle中复制表结构和表数据:1、复制表结构及数据:createtablenew_tableasselect*fromold_table2、只复制表结构:createtablenew_tableasselec......
  • sqlserver添加修改表备注信息
    添加表说明:EXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'表说明',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1na......
  • 操作数据库
    命令行连接数据库mysql-uroot-p  基本命令showdatabases; --查询所有数据库use[数据库名字];  --使用数据库showtables; --查看所有表describe[表......
  • 云函数添加外部依赖
    以华为云函数为例,使用python添加依赖需要先知道项目的层级结构Python项目结构:|---Project|---index.py比如该项目需要用到requests依赖,但云函数默认环境......
  • 2:数据库的基本操作-MySQL
    (目录)2.1数据库的显示讲解information_schema:信息图式,存储服务器管理数据库的信息mysql:存放系统信息,用户名密码等performance_schema:性能图式sys:系统文件showdat......
  • flask-session、数据库连接池、wtfroms、信号
    g对象1.g:global缩写,是关键字,不能用,就写成了g-g是一个全局对象,当此请求过程中,一直有效-其实是请求的上下文,从请求进来,就有,到请求走了,一直存在,所以在当次请求过程中,如果......
  • 数据库国产化替代之后,补坑之路从未止步……
      “天底下没有完美的数据库,也许Oracle是个例外”,前阵子几个DBA在讨论国产化替代时,有人就这么说。确实是的,Oracle算是比较完美的数据库产品了,不过现在很多用户都在面......
  • 数据库国产化替代之后,补坑之路从未止步……
      “天底下没有完美的数据库,也许Oracle是个例外”,前阵子几个DBA在讨论国产化替代时,有人就这么说。确实是的,Oracle算是比较完美的数据库产品了,不过现在很多用户都在面......