首页 > 其他分享 >openGauss学习笔记-35 openGauss 高级数据管理-ALTER TABLE语句

openGauss学习笔记-35 openGauss 高级数据管理-ALTER TABLE语句

时间:2023-08-09 22:33:15浏览次数:42  
标签:customer name character 35 t1 TABLE openGauss ALTER

openGauss学习笔记-35 openGauss 高级数据管理-ALTER TABLE语句

修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。

35.1 语法格式

  • 在一张已经存在的表上添加列。

    ALTER TABLE table_name
        ADD column_name data_type;
    
  • 在一张已经存在的表上删除列。

    ALTER TABLE table_name DROP COLUMN column_name;
    
  • 修改表的字段类型。

    ALTER TABLE table_name
     MODIFY column_name data_type;
    
  • 为一张已经存在表的列增加/删除非空约束(NOT NULL)。

    ALTER TABLE table_name
       ALTER column_name { SET | DROP } NOT NULL;
    
  • 重命名表中指定的列。

    ALTER TABLE table_name RENAME  column_name TO new_column_name;
    
  • 更新多个列。

    ALTER TABLE table_name 
        MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] );
    
  • 对名称的修改不会影响所存储的数据。

    ALTER TABLE table_name 
        RENAME TO new_table_name;
    

35.2 参数说明

  • table_name

    table_name是需要修改的表名。

    若声明了ONLY选项,则只有那个表被更改。若未声明ONLY,该表及其所有子表都将会被更改。另外,可以在表名称后面显示地增加*选项来指定包括子表,即表示所有后代表都被扫描,这是默认行为。

  • column_name

    现存的或新字段的名称。

  • data_type

    新字段的类型,或者现存字段的新类型。

  • new_table_name

    修改后新的表名称。

  • new_column_name

    表中指定列修改后新的列名称。

  • constraint_name

    约束的名称。

35.3 示例

表customer_t1的数据如下。

openGauss=# SELECT * FROM customer_t1;
 c_customer_sk | c_customer_id | c_first_name | c_last_name | amount
---------------+---------------+--------------+-------------+--------
          3869 | hello         | Grace        |             |   1000
          3869 | hello         | Grace        |             |   1000
          3869 |               | Grace        |             |
          3869 | hello         |              |             |
          3869 | hello         |              |             |
               |               |              |             |
          6985 | maps          | Joes         |             |   2200
          9976 | world         | James        |             |   5000
          4421 | Admin         | Local        |             |   3000
          6881 | maps          | Lily         |             |   1000
          4320 | tpcds         | Lily         |             |   2000
(11 rows)
  • 新增列

    在上面的表中添加新的列。

    openGauss=# ALTER TABLE customer_t1 ADD date time;
    

    查询表customer_t1的结构如下,新增列date成功。

    openGauss=# \d customer_t1
                 Table "public.customer_t1"
        Column     |          Type          | Modifiers
    ---------------+------------------------+-----------
     c_customer_sk | integer                |
     c_customer_id | character(5)           |
     c_first_name  | character(6)           |
     c_last_name   | character(8)           |
     amount        | integer                |
     date          | time without time zone |
    
  • 修改列数据类型

    修改列c的数据类型character(8) 为character(12)。

    openGauss=# ALTER TABLE customer_t1 MODIFY c_last_name character(12);
    

    查询表customer_t1结构,列c_last_name修改数据类型成功。

    openGauss=# \d customer_t1
                 Table "public.customer_t1"
        Column     |          Type          | Modifiers
    ---------------+------------------------+-----------
     c_customer_sk | integer                |
     c_customer_id | character(5)           |
     c_first_name  | character(6)           |
     c_last_name   | character(12)          |
     amount        | integer                |
     date          | time without time zone |
    
  • 新增列约束

    删除列c_customer_sk为空的行。

    openGauss=# DELETE FROM customer_t1 WHERE c_customer_sk is NULL;
    

    为列c_customer_sk增加非空约束。

    openGauss=# ALTER TABLE customer_t1 ALTER c_customer_sk SET NOT NULL;
    

    查询表customer_t1结构,列c_customer_sk新增约束成功。

    openGauss=# \d customer_t1
                 Table "public.customer_t1"
        Column     |          Type          | Modifiers
    ---------------+------------------------+-----------
     c_customer_sk | integer                | not null
     c_customer_id | character(5)           |
     c_first_name  | character(6)           |
     c_last_name   | character(12)          |
     amount        | integer                |
     date          | time without time zone |
    
  • 修改列名称

    修改列date名称为purchase date。

    openGauss=# ALTER TABLE customer_t1  RENAME  date TO purchase_date;
    

    查询表customer_t1结构,列date名称修改成功。

    openGauss=# \d customer_t1
                 Table "public.customer_t1"
        Column     |          Type          | Modifiers
    ---------------+------------------------+-----------
     c_customer_sk | integer                | not null
     c_customer_id | character(5)           |
     c_first_name  | character(6)           |
     c_last_name   | character(12)          |
     amount        | integer                |
     purchase_date | time without time zone |
    
  • 删除列

    删除列purchase_date。

    openGauss=# ALTER TABLE customer_t1 DROP purchase_date;
    

    删除后,表customer_t1的数据如下。

    openGauss=# SELECT * FROM customer_t1;
     c_customer_sk | c_customer_id | c_first_name | c_last_name | amount
    ---------------+---------------+--------------+-------------+--------
              3869 | hello         | Grace        |             |   1000
              3869 | hello         | Grace        |             |   1000
              3869 |               | Grace        |             |
              3869 | hello         |              |             |
              3869 | hello         |              |             |
              6985 | maps          | Joes         |             |   2200
              9976 | world         | James        |             |   5000
              4421 | Admin         | Local        |             |   3000
              6881 | maps          | Lily         |             |   1000
              4320 | tpcds         | Lily         |             |   2000
    (10 rows)
    

标签:customer,name,character,35,t1,TABLE,openGauss,ALTER
From: https://blog.51cto.com/shuchaoyang/7026600

相关文章

  • 七月学习之Iptables自定义链
    9、Iptables自定义链9.1、为什么要使用自定义链iptables的默认链就已经能够满足我们了,为什么还需要自定义链呢当默认链中的规则非常多时,不便于管理1、假设INPUT链中存放了100条规则,这100条规则有针对80端口的,有针对22端口的2、如果想修改22端口的规则,则需要将所有规则都看一遍,......
  • 聚焦智慧医疗-RK3566智能主板助力POCT领域
    POCT又称即时检验,是IVD(体外诊断)行业的一个细分领域,是指在采样现场即刻进行的快速诊断,省去了标本在实验室检验的复杂处,利用便携式分析仪器及配套试剂快速得到检测结果的一种检测方式。常见的POCT设备有生化分析仪、免疫分析仪、PCR仪等,采用干化学、免疫分析、化学发光、生物传感......
  • 【我和openGauss的故事】在vm中安装openEuler及使用yum安装openGauss
    【我和openGauss的故事】在vm中安装openEuler及使用yum安装openGauss手机用户0951[openGauss](javascript:void(0);)2023-08-0316:49发表于四川1.前言随着互联网时代对数据库的新要求,以PostgreSQL为基础的开源数据库openGauss应运而生。openGauss在保持PostgreSQL接口兼容的前......
  • 【我和openGauss的故事】openEuler20.03上编译安装opengauss-5.0.0
    【我和openGauss的故事】openEuler20.03上编译安装opengauss-5.0.0ziyoo0830[openGauss](javascript:void(0);)2023-08-0316:49发表于四川为了更好地学习openGauss数据库知识,有时候需要去调试源代码来深入了解一些东西。以下记录了在openEuler20.03上编译最新的openGauss-serve......
  • openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA
    openGauss学习笔记-34openGauss高级数据管理-SCHEMASCHEMA又称作模式。通过管理SCHEMA,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的SCHEMA下而不引起冲突。每个数据库包含一个或多个SCHEMA。数据库中的每个......
  • mysql中 You can’t specify target table for update in FROM clause 解决方案
    在mysql中更新数据,出现Youcan'tspecifytargettableforupdateinFROMclause错误,这句话意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。updatetablesetdel_flag='2'whereid=#{id}ORdept_idIN(SELECTt.idFROMtabletWHEREfind_......
  • element中两个table表格和已选数据联动
    element中table表格和已选数据联动需求:1.根据条件查询表格,多选框选中项移到已选择表格,取消选择,已选项表格也取消该调数据数据2.已选项增加删除按钮,删除之后,查询数据的表格也取消勾选3.重新查询新数据,已选择数据不会改变,新选中的数据添加到已选择表格//......
  • Linux防火墙firewalld&iptables(2)iptables开放指定端口开放指定端口
    一、CentOs6iptables基本操作#chkconfig--list|grepiptables 查看防火墙的服务#chkconfigiptablesoff 永久关闭防火墙#chkconfigiptableson 永久开启防火墙#servicestatusiptables 查看防火墙状态#servicestartiptables 启动防火墙#servicestopiptab......
  • PPT| 智能工厂建设的顶层设计P35
    PPT共35页,由于篇幅有限,以下为部分资料.......
  • java mybatisplus @Table(typerHadler)的坑
    在使用JavaMyBatis-Plus的@Table注解时,如果使用了typerHadler属性,可能会遇到一些问题和坑。下面是一些常见的问题及其解决方案:1.设置了typerHadler属性但不起作用:如果在@Table注解中设置了typerHadler属性,但在实际使用中没有生效,可能是因为配置的类型处理器没有正确注册。请确保......