云数据库 GAUSSDB-ALTER TABLE:修改列示例

时间:2025-01-06 11:07:36

修改列示例

  • 修改列名
    --建表。
    gaussdb=# CREATE TABLE test_alt2(c1 INT,c2 INT);
    
    --修改列名。
    gaussdb=# ALTER TABLE test_alt2 RENAME c1 TO id;
    gaussdb=# ALTER TABLE test_alt2 RENAME COLUMN c2 to areaid; 
    
    --查看。
    gaussdb=# \d test_alt2
       Table "public.test_alt2"
     Column |  Type   | Modifiers 
    --------+---------+-----------
     id     | integer | 
     areaid | integer | 
  • 增加列。
    --表test_alt2增加列。
    gaussdb=# ALTER TABLE IF EXISTS test_alt2 ADD COLUMN name VARCHAR(20);
    
    --查看。
    gaussdb=# \d test_alt2
               Table "public.test_alt2"
      Column  |         Type          | Modifiers 
    ----------+-----------------------+-----------
     id       | integer               | 
     areaid   | integer               | 
     name     | character varying(20) |
  • 增加AUTO_INCREMENT自增列
    --建表,新增自增列。
    gaussdb=# CREATE DATABASE test DBCOMPATIBILITY = 'B';
    gaussdb=# \c test
    test=# CREATE TABLE test_autoinc(col1 int);
    
    --插入一条数据。
    test=# INSERT INTO test_autoinc(col1) VALUES(1);
    
    --添加一个本地自增列,从1开始自增。
    test=# ALTER TABLE test_autoinc ADD COLUMN col int primary key AUTO_INCREMENT;
    test=# SELECT col,col1 FROM test_autoinc ORDER BY 2,1;
     col | col1
    -----+------
       1 |    1
    (1 row)
    
    --将下一个自增值设为10。
    test=# ALTER TABLE test_autoinc AUTO_INCREMENT = 10;
    
    --NULL触发自增,自增值为10。
    test=# INSERT INTO test_autoinc(col, col1) VALUES(NULL,2);
    
    --0触发自增,自增值为11。
    test=# INSERT INTO test_autoinc(col, col1) VALUES(0,3);
    
    test=# SELECT col,col1 FROM test_autoinc ORDER BY 2,1;
     col | col1
    -----+------
       1 |    1
      10 |    2
      11 |    3
    (3 rows)
    
    --删除。
    test=# DROP TABLE test_autoinc;
    
    --切换至默认数据库(请根据实际情况修改数据库名)。
    test=# \c postgres;
    gaussdb=# DROP DATABASE test;
  • 修改列的数据类型
    --修改test_alt2表中name字段的类型。
    gaussdb=# ALTER TABLE test_alt2 MODIFY name VARCHAR(50);
    
    --查看。
    gaussdb=# \d test_alt2
              Table "public.test_alt2"
     Column |         Type          | Modifiers 
    --------+-----------------------+-----------
     id     | integer               | 
     areaid | integer               | 
     name   | character varying(50) | 
    
    --在线修改test_alt2表中name字段的类型。
    gaussdb=# ALTER TABLE ONLINE test_alt2 MODIFY name VARCHAR(60);
    
    --查看。
    gaussdb=# \d test_alt2
              Table "public.test_alt2"
     Column |         Type          | Modifiers 
    --------+-----------------------+-----------
     id     | integer               | 
     areaid | integer               | 
     name   | character varying(60) | 
    --修改test_alt2表中name字段的类型。
    gaussdb=# ALTER TABLE test_alt2 ALTER COLUMN name TYPE VARCHAR(25);
    
    --查看。
    gaussdb=# \d test_alt2
              Table "public.test_alt2"
     Column |         Type          | Modifiers 
    --------+-----------------------+-----------
     id     | integer               | 
     areaid | integer               | 
     name   | character varying(25) | 
    
    --在线修改test_alt2表中name字段的类型。
    gaussdb=# ALTER TABLE ONLINE test_alt2 ALTER COLUMN name TYPE VARCHAR(35);
    
    --查看。
    gaussdb=# \d test_alt2
              Table "public.test_alt2"
     Column |         Type          | Modifiers 
    --------+-----------------------+-----------
     id     | integer               | 
     areaid | integer               | 
     name   | character varying(35) | 
  • 删除列
    --删除test_alt2中areaid字段。
    gaussdb=# ALTER TABLE test_alt2 DROP COLUMN areaid;
    
    --查看。
    gaussdb=# \d test_alt2
              Table "public.test_alt2"
     Column |         Type          | Modifiers 
    --------+-----------------------+-----------
     id     | integer               | 
     name   | character varying(25) | 
  • 修改列的存储模式
    --查看表详细信息。
    gaussdb=# \d+ test_alt2
                                  Table "public.test_alt2"
     Column |         Type          | Modifiers | Storage  | Stats target | Description 
    --------+-----------------------+-----------+----------+--------------+-------------
     id     | integer               |           | plain    |              | 
     name   | character varying(25) |           | extended |              | 
    Has OIDs: no
    Options: orientation=row, compression=no, storage_type=USTORE, segment=off
    
    --修改test_alt2表中name字段的存储模式。
    gaussdb=# ALTER TABLE test_alt2 ALTER COLUMN name SET STORAGE PLAIN;
    
    --查看。
    gaussdb=# \d+ test_alt2
                                 Table "public.test_alt2"
     Column |         Type          | Modifiers | Storage | Stats target | Description 
    --------+-----------------------+-----------+---------+--------------+-------------
     id     | integer               |           | plain   |              | 
     name   | character varying(25) |           | plain   |              | 
    Has OIDs: no
    Options: orientation=row, compression=no, storage_type=USTORE, segment=off
    
    --删除。
    gaussdb=# DROP TABLE test_alt2;
  • 修改字段到指定位置
    --创建B模式数据库。
    gaussdb=# CREATE DATABASE test DBCOMPATIBILITY 'B';
    
    --连接至test数据库并创建表tbl_test。
    gaussdb=# \c test
    test=# CREATE TABLE tbl_test(id int, name varchar(20));
    
    --修改tbl_test表中字段name类型,并指定位置到最前面。
    test=# ALTER TABLE tbl_test MODIFY COLUMN name varchar(25) FIRST;
    
    --查看。
    test=# \d tbl_test;
              Table "public.tbl_test"
     Column |         Type          | Modifiers 
    --------+-----------------------+-----------
     name   | character varying(25) | 
     id     | integer               | 
    
    --修改tbl_test字段name的类型,并指定位置在id字段的后面。
    test=# ALTER TABLE tbl_test MODIFY COLUMN name varchar(10) AFTER id;
    
    --查看。
    test=# \d tbl_test;
              Table "public.tbl_test"
     Column |         Type          | Modifiers 
    --------+-----------------------+-----------
     id     | integer               | 
     name   | character varying(10) | 
    
    --删除表tbl_test。
    test=# DROP TABLE tbl_test;
    
    --切换至默认数据库删除数据库test(根据实际情况切换至相应的数据库)。
    test=# \c postgres
    gaussdb=# DROP DATABASE test;
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0511.html