yuan-er

导航

 

操作步骤

向表中插入数据前,意味着表已创建成功。创建表的步骤请参见创建和管理表

  • 向表customer_t1中插入一行数据。
    数据值是按照这些字段在表中出现的顺序列出的,并且用逗号分隔。通常数据值是文本(常量),但也允许使用标量表达式。
    gaussdb=# INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name) VALUES (3769, 'hello', 'Grace');
    
     
     
    如果用户已经知道表中字段的顺序,也可无需列出表中的字段。例如以下命令与上面的命令效果相同。
    gaussdb=# INSERT INTO customer_t1 VALUES (3769, 'hello', 'Grace');
    
     
     
    如果用户不知道所有字段的数值,可以忽略其中的一些。如果INSERT语句中,用户没有显示指定目标表的字段名字,那么VALUES子句中待插入的多个值,将按照列号和目标表的字段一一对应,即VALUES子句的第一个值对应目标表的第一列,VALUES子句的第二个值对应目标表的第二列,以此类推,没有VALUES数值对应的列自动填充缺省值或NULL。没有数值的字段将被填充为字段的缺省值。例如:
    gaussdb=# INSERT INTO customer_t1 (c_customer_sk, c_first_name) VALUES (3769, 'Grace');
    
    gaussdb=# INSERT INTO customer_t1 VALUES (3769, 'hello');
    
     
     
    用户也可以对独立的字段或者整个行明确缺省值:
    gaussdb=# INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES (3769, 'hello', DEFAULT);
    
    gaussdb=# INSERT INTO customer_t1 DEFAULT VALUES;
    
     
     
  • 如果需要在表中插入多行,请执行如下命令:
    gaussdb=# INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES 
        (6885, 'maps', 'Joes'),
        (4321, 'tpcds', 'Lily'),
        (9527, 'world', 'James');
    
     
     

    如果需要向表中插入多条数据,除此命令外,也可以多次执行插入一行数据命令实现。但是建议使用此命令以提升效率。

  • 如果从指定表插入数据到当前表,例如在数据库中创建了一个表customer_t1的备份表customer_t2,现在需要将表customer_t1中的数据插入到表customer_t2中,则可以执行如下命令:
    gaussdb=# CREATE TABLE customer_t2
    (
        c_customer_sk             integer,
        c_customer_id             char(5),
        c_first_name              char(6),
        c_last_name               char(8)
    );
    
    gaussdb=# INSERT INTO customer_t2 SELECT * FROM customer_t1;
    
     
     
    说明:

    从指定表插入数据到当前表时,若指定表与当前表对应的字段数据类型之间不存在隐式转换,则这两种数据类型必须相同。

  • 使用不带AS的表别名向表中插入数据。
    gaussdb=#  CREATE TABLE table_name(a int,b text,c timestamp,d float);
    gaussdb=#  INSERT INTO table_name alias_name VALUES(1,'ha','1997-01-01 10:00:00'::timestamp,1.234);
    gaussdb=#  INSERT INTO table_name alias_name(b,c,d) VALUES('ha','1997-01-01 10:00:00'::timestamp,1.234);
    
     
     
    说明:
    1. INSERT不带AS的表别名不能为关键字(如SELECT、VALUE)或者表达式,别名要求符合标识符命名规则。
    2. INSERT不带AS的表别名不支持INSERT INTO table_name alias_name(alias_name.col1,...,alias_name.coln) VALUES(xxx)格式。
    3. INSERT的分区表不带AS的表别名不支持指定分区插入操作。
  • 删除备份表
    gaussdb=# DROP TABLE customer_t2 CASCADE;
    
     
     
    说明:

    在删除表的时候,若当前需删除的表与其他表有依赖关系,需先删除关联的表,然后再删除当前表。

更多详情请参考GaussDB 文档中心:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html

 

posted on 2025-05-27 09:32  数据库笔记  阅读(5)  评论(0)    收藏  举报