云数据库 GAUSSDB-CREATE TABLE:建表示例

时间:2024-11-13 14:46:37

建表示例

  • 创建普通表
    gaussdb=# CREATE TABLE tbl_test1(
        id       int,
        name     varchar(50),
        province varchar (60), --省
        country  varchar (60) DEFAULT 'China' --国籍
    );
    
    gaussdb=# DROP TABLE tbl_test1;
  • WITH子句为表或者索引设置存储参数
    --建表指定填充因子。
    gaussdb=# CREATE TABLE tbl_test2(
        id       int,
        name     varchar(50),
        province varchar (60), --省
        country  varchar (60) DEFAULT 'China' --国籍
    ) WITH (FILLFACTOR = 70);
    
    --建表指定存储引擎。
    gaussdb=# CREATE TABLE tbl_test3(
        id       int,
        name     varchar(50),
        province varchar (60), --省
        country  varchar (60) DEFAULT 'China' --国籍
    ) WITH (STORAGE_TYPE = ASTORE);
    
    --删除。
    gaussdb=# DROP TABLE tbl_test2;
    gaussdb=# DROP TABLE tbl_test3;
  • 加密表

    使用该参数前,请确保已通过GUC参数enable_tde开启透明加密功能,并通过GUC参数tde_key_info设置访问密钥服务的信息,在《特性指南》中《透明 数据加密 》章节可获取该参数的详细使用方法。

    gaussdb=# CREATE TABLE  t1 (c1 TEXT) WITH (enable_tde=on);
    
    --删除表。
    gaussdb=# DROP TABLE t1;
  • 临时表
    --创建临时表。
    gaussdb=# CREATE GLOBAL TEMP TABLE test_t1(
        id       CHAR(7),
        name     VARCHAR(20),
        province VARCHAR(60),                     
        country   VARCHAR(30) DEFAULT 'China' 
    );
    
    --在当前会话中插入数据。
    gaussdb=# INSERT INTO test_t1 VALUES ('0000009','Jack','Guangzhou','China');
    
    --临时表里面的数据只在当前会话中可见,所以在另一个会话中查看该表中没有数据。
    gaussdb=# SELECT * FROM test_t1;
     id | name | province | country 
    ----+------+----------+---------
    (0 rows)
    --创建临时表,并指定提交事务时删除该临时表数据。
    gaussdb=# CREATE TEMPORARY TABLE test_t2(
        id       CHAR(7),
        name     VARCHAR(20),
        province VARCHAR(60),                       --省
        country   VARCHAR(30) DEFAULT 'China'        --国籍
    ) ON COMMIT DELETE ROWS;
    --删除表。
    gaussdb=# DROP TABLE test_t1;
    gaussdb=# DROP TABLE test_t2;
  • 建表时指定字符集字符序
    --创建前置数据库。
    gaussdb=# CREATE DATABASE testdb1 DBCOMPATIBILITY = 'B' ENCODING = 'UTF8';
    gaussdb=# \c testdb1
    
    
    --创建t1表,设置t1的默认字符集为utf8mb4,默认字符序为utf8mb4_bin,设置c1字段为表的默认字符集字符序,设置c2字段的字符集为utf8mb4,字符序为utf8mb4_unicode_ci。
    testdb1=# CREATE TABLE t1(c1 text, c2 text charset utf8mb4 collate utf8mb4_unicode_ci) charset utf8mb4 collate utf8mb4_bin;
    
    --删除。
    testdb1=# DROP TABLE t1;
    testdb1=# \c postgres
    gaussdb=# DROP DATABASE testdb1;
  • IF NOT EXISTS关键字

    使用该关键字,表不存在时报NOTICE;如不用该关键字,则报ERROR。两种情况下表都不会创建成功。

    gaussdb=# CREATE TABLE test_t3(id INT);
    
    --创建一个已经存在同名的表test_t3。
    gaussdb=# CREATE TABLE test_t3(id INT);
    ERROR:  Relation test_t3 already exists in schema public.
    DETAIL:  Creating new table with existing name in the same schema.
    
    --使用IF NOT EXISTS关键字。
    gaussdb=# CREATE TABLE IF NOT EXISTS test_t3(id INT);
    NOTICE:  Relation test_t3 already exists, skipping.
    CREATE TABLE
    
    --删除表。
    gaussdb=# DROP TABLE test_t3;
  • 建表时指定表空间
    --创建表空间。
    gaussdb=# CREATE TABLESPACE ds_tbs1 RELATIVE LOCATION 'tablespace/tablespace_1';
    
    --创建表时,指定表空间。
    gaussdb=# CREATE TABLE test(id CHAR(7), name VARCHAR(20)) TABLESPACE ds_tbs1;
    
    --删除表和表空间。
    gaussdb=# DROP TABLE test;
    gaussdb=# DROP TABLESPACE ds_tbs1;
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0573.html