ITPub博客

首页 > 数据库 > 数据库开发技术 > openGauss学习笔记-68 openGauss 数据库管理-创建和管理普通表-向表中插入数据

openGauss学习笔记-68 openGauss 数据库管理-创建和管理普通表-向表中插入数据

原创 数据库开发技术 作者:shuchaoyang 时间:2023-06-07 07:00:00 0 删除 编辑

openGauss学习笔记-68 openGauss 数据库管理-创建和管理普通表-向表中插入数据68.1 背景信息68.2 操作步骤68.2.1 向表customer_t1中插入一行68.2.2 向表中插入多行68.2.3 从指定表插入数据到当前表68.2.4 删除备份表

openGauss学习笔记-68 openGauss 数据库管理-创建和管理普通表-向表中插入数据

在创建一个表后,表中并没有数据,在使用这个表之前,需要向表中插入数据。本小节介绍如何使用INSERT命令插入一行或多行数据,及从指定表插入数据。如果有大量数据需要批量导入表中,请参考导入数据。

68.1 背景信息

服务端与客户端使用不同的字符集时,两者字符集中单个字符的长度也会不同,客户端输入的字符串会以服务端字符集的格式进行处理,所以产生的最终结果可能会与预期不一致。

表 1 客户端和服务端设置字符集的输出结果对比

上述字符串函数操作和自动截断产生的效果会有叠加效果,例如:在客户端与服务端字符集不一致的场景下,如果既有字符串操作,又有字符串截断,在字符串被处理完以后的情况下继续截断,这样也会产生非预期的效果。详细的示例请参见表2。

说明:数据库DBCOMPATIBILITY设为兼容TD模式,且td_compatible_truncation参数设置为on的情况下,才会对超长字符串进行截断。

执行如下命令建立示例中需要使用的表table1、table2。

openGauss=# CREATE TABLE table1(id int, a char(6), b varchar(6),c varchar(6));
openGauss=# CREATE TABLE table2(id int, a char(20), b varchar(20),c varchar(20));

表 2 示例

68.2 操作步骤

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

68.2.1 向表customer_t1中插入一行

数据值是按照这些字段在表中出现的顺序列出的,并且用逗号分隔。通常数据值是文本(常量),但也允许使用标量表达式。

openGauss=# INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name) VALUES (3769, 'hello', 'Grace');

如果用户已经知道表中字段的顺序,也可无需列出表中的字段。例如以下命令与上面的命令效果相同。

openGauss=# INSERT INTO customer_t1 VALUES (3769, 'hello', 'Grace');

如果用户不知道所有字段的数值,可以忽略其中的一些。没有数值的字段将被填充为字段的缺省值。例如:

openGauss=# INSERT INTO customer_t1 (c_customer_sk, c_first_name) VALUES (3769, 'Grace');

openGauss=# INSERT INTO customer_t1 VALUES (3769, 'hello');

用户也可以对独立的字段或者整个行明确缺省值:

openGauss=# INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES (3769, 'hello', DEFAULT);

openGauss=# INSERT INTO customer_t1 DEFAULT VALUES;

68.2.2 向表中插入多行

如果需要在表中插入多行,请使用以下命令:

openGauss=# INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES 
  (6885, 'maps', 'Joes'),
  (4321, 'tpcds', 'Lily'),
  (9527, 'world', 'James');

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

68.2.3 从指定表插入数据到当前表

如果从指定表插入数据到当前表,例如在数据库中创建了一个表customer_t1的备份表customer_t2,现在需要将表customer_t1中的数据插入到表customer_t2中,则可以执行如下命令。

openGauss=# CREATE TABLE customer_t2
(
  c_customer_sk             integer,
  c_customer_id             char(5),
  c_first_name             char(6),
  c_last_name               char(8)
);

openGauss=# INSERT INTO customer_t2 SELECT * FROM customer_t1;

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

68.2.4 删除备份表

openGauss=# DROP TABLE customer_t2 CASCADE;

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


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!


有什么吐槽或反馈意见,直接告诉我!

温馨提示:如出现二维码失效也可直接添加微信号:ysc13803862469。



原文作者:超哥的IT私房菜;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303683