首页 > 其他分享 >openGauss ALTER-TABLE语句

openGauss ALTER-TABLE语句

时间:2024-04-26 11:49:04浏览次数:21  
标签:customer name character t1 TABLE openGauss ALTER

ALTER TABLE语句

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

语法格式

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

    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;
    

参数说明

  • table_name

    table_name是需要修改的表名。

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

  • column_name

    现存的或新字段的名称。

  • data_type

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

  • new_table_name

    修改后新的表名称。

  • new_column_name

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

  • constraint_name

    约束的名称。

示例

表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_last_name的数据类型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,t1,TABLE,openGauss,ALTER
From: https://www.cnblogs.com/renxyz/p/18159574

相关文章

  • openGauss WHERE子句
    WHERE子句当我们需要根据指定条件从表中查询数据时,就可以在SELECT语句中添加WHERE子句,从而过滤掉我们不需要数据。WHERE子句构成一个行选择表达式,用于获取满足指定条件的数据,如果给定的条件满足,才返回从表中提取到的具体数值。语法格式SELECT{*|[column,...]}[FROMfr......
  • openGauss 表达式
    表达式表达式类似一个公式,我们可以将其应用在查询语句中,用来查找数据库中指定条件的结果集。简单表达式逻辑表达式逻辑表达式的操作符和运算规则,详情请参见逻辑操作符。比较表达式常用的比较操作符,请参见操作符。除比较操作符外,还可以使用以下句式结构:BETWEEN操作符......
  • openGauss 查看对象
    查看对象gsql工具提供了若干高级特性,便于用户使用。常见用法如下:查看命令帮助信息\h[NAME]例如,查询ABORT的所有语法。openGauss=#\hABORTCommand:ABORTDescription:abortthecurrenttransactionSyntax:ABORT[WORK|TRANSACTION];切换数据库\cdb......
  • openGauss 触发器
    触发器触发器会在指定的数据库事件发生时自动执行函数。语法格式创建触发器CREATETRIGGERtrigger_name{BEFORE|AFTER|INSTEADOF}{event[OR...]}ONtable_name[FOR[EACH]{ROW|STATEMENT}][WHEN(condition)]EXECUTEPROC......
  • openGauss TRUNCATE-TABLE语句
    TRUNCATETABLE语句清理表数据,TRUNCATETABLE用于删除表的数据,但不删除表结构。也可以用DROPTABLE删除表,但是这个命令会连表的结构一起删除,如果想插入数据,需要重新建立这张表。它和在目标表上进行无条件的DELETE有同样的效果,但由于TRUNCATE不做表扫描,因而快得多。在大表上操作......
  • openGauss UNION子句
    UNION子句UNION计算多个SELECT语句返回行集合的并集。UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。语法格式UNION:结果中如果出现相同的值,仅保留一个。SELECTcolumn_name(s)FROMtable_name1UNIONSE......
  • openGauss UPDATE语句
    UPDATE语句修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。UPDATE修改满足条件的所有行中指定的字段值,WHERE子句声明条件,SET子句指定的字段会被修改,没有出现的字段则保持它们的原值。语......
  • openGauss SCHEMA
    SCHEMASCHEMA又称作模式。通过管理SCHEMA,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的SCHEMA下而不引起冲突。每个数据库包含一个或多个SCHEMA。数据库中的每个SCHEMA包含表和其他类型的对象。数据库创建初......
  • openGauss SELECT语句
    SELECT语句SELECT语句用于从表或视图中取出数据,结果被存储在一个结果表中,称为结果集。SELECT语句就像叠加在数据库表上的过滤器,利用SQL关键字从数据表中过滤出用户需要的数据。语法格式SELECT{*|[column,...]}[FROMfrom_item[,...]];参数说明SELECT列表指......
  • openGauss JOIN
    JOINJOIN子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。在openGauss中,JOIN有五种连接类型:CROSSJOIN:交叉连接INNERJOIN:内连接LEFTOUTERJOIN:左外连接RIGHTOUTERJOIN:右外连接FULLOUTERJOIN:全外连接以表table1和表table2为例说明不同连接类型,......