openGauss学习笔记68 openGauss 数据库管理创建和管理普通表向表中插入数据
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));