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

2023-10-30

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

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

68.1 背景信息

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

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

操作过程 服务端和客户端编码一致 服务端和客户端编码不一致
存入和取出过程中没有对字符串进行操作 输出预期结果 输出预期结果(输入与显示的客户端编码必须一致)。
存入取出过程对字符串有做一定的操作(如字符串函数操作) 输出预期结果 根据对字符串具体操作可能产生非预期结果。
存入过程中对超长字符串有截断处理 输出预期结果 字符集中字符编码长度是否一致,如果不一致可能会产生非预期的结果。

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

img 说明:
数据库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 示例

编号 服务端字符集 客户端字符集 是否启用自动截断 示例 结果 说明
1 SQL_ASCII UTF8 openGauss=# INSERT INTO table1 VALUES(1,reverse(‘123AA78’),reverse(‘123AA78’),reverse(‘123AA78’)); `id a
2 SQL_ASCII UTF8 openGauss=# INSERT INTO table1 VALUES(2,reverse(‘123A78’),reverse(‘123A78’),reverse(‘123A78’)); `id a
3 SQL_ASCII UTF8 openGauss=# INSERT INTO table1 VALUES(3,‘87A123’,‘87A123’,‘87A123’); `id a
4 SQL_ASCII UTF8 openGauss=# INSERT INTO table2 VALUES(1,reverse(‘123AA78’),reverse(‘123AA78’),reverse(‘123AA78’)); openGauss=# INSERT INTO table2 VALUES(2,reverse(‘123A78’),reverse(‘123A78’),reverse(‘123A78’)); `id a

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;

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

68.2.4 删除备份表

openGauss=# DROP TABLE customer_t2 CASCADE;

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Linux 常用指令大全

    我是目录 1 指令格式 2 Windows 和 Linux 通用内容 3 路径的命令 1 cd 切换到某个目录 相对路径 绝对路径 2 pwd 显示当前路径 3 ls 列出目录下的所有子目录与文件 或 文件的信息 4 目录 文件的指令 1

随机推荐

  • 技术干货:解密最受欢迎的开源 Serverless 框架弹性技术实现

    Knative 是一款基于 Kubernetes 的开源 Serverless 应用编排框架 其目标是制定云原生 跨平台的 Serverless 应用编排标准 Knative 主要功能包括基于请求的自动弹性 缩容到 0 多版本管理 基于流量
  • 前端面试实习生(基础题)

    前言 经过一年的学习 我对vue框架有了清楚的认识 我就想着去找实习工作 这些天我投了100多份简历 接到了两个线上笔试 第一个面试题使用vue完成一个网页的模块 有要有分页与传输数据 这不重要 很容易写出来了 关键是第二个线上笔试题 很基
  • [iOS]深入浅出 iOS 之多线程 NSThread

    线程专题 http www cocoachina com bbs read php tid 43852 OS 支持多个层次的多线程 编程 层次越高的抽象程度越高 使用起来也越方便 也是苹果最推荐使用的方法 下面简要说明这三种不同范式 Thr
  • Netjs框架基础

    一 框架介绍 Nestjs 是以用于构建高可用可伸缩的后端应用框架 并且全面支持 Typescript 在背后 Nestjs 使用了强大的 http 框架 默认是 express 并且可以配置选择其他的 Http 服务框架 二 Contro
  • simswap安装过程中遇到的一些问题

    simswap与deepfacelab很像 但是simswap的泛用性远强于deepfacelab 个人认为simswap名气不如deepfacelab的原因有以下几点 1 缺乏发行版 2 缺乏文档 3 最终训练效果不一定好 本文旨在记录一
  • 它们把色情版 “微信” 的底裤都给挖出来了,网友: 草率了。。。

    作者 暗影安全实验室 来源 anquanke com post id 219729 背景 近日 恒安嘉新暗影安全实验室平台监测到一款名为 乐宝 的仿冒应用 安全研究人员第一时间对该应用进行了研究分析 发现该应用表面上是一款与微信具有相似页面
  • wireshark 导出指定tcp流的数据包

    数据包回放时 如果我们只想将pcap包中的部分数据进行回放 怎么办呢 首先使用wireshark打开文件 在过滤器中进行过滤 比如我只想要tcp stream eq 0的数据 可以如下操作 过滤好数据 然后依次操作 文件 gt 导出特定分组
  • 离散余弦变换

    离散余弦变换 DCT for Discrete Cosine Transform 是与傅里叶变换相关的一种变换 它类似于离散傅里叶变换 DFT for Discrete Fourier Transform 但是只使用实数 离散余弦变换相当于
  • 三、PCL点云处理滤波器----(1)直通滤波器

    一 为什么要进行滤波 在获取点云数据时 由于设备精度 操作者经验 环境因素等带来的影响 以及电磁波衍射特性 被测物体表面性质变化和数据拼接配准操作过程的影响 点云数据中将不可避免地出现一些噪声点 实际应用中除了这些测量随机误差产生的噪声点之
  • ImportError: No module named cv2的完美解决方法!!!(不能太赞)

    此刻是2018年1月21日晚10点13分 我怀着激动的心情 从Ubuntu系统上登上我的CSDN博客然后发来贺电 祝贺我自己解决了ImportError No module named cv2的问题 这仿佛是从另一个世界 Ubuntu世界
  • L1-043 阅览室(java)

    1 题目描述 天梯图书阅览室请你编写一个简单的图书借阅统计程序 当读者借书时 管理员输入书号并按下S键 程序开始计时 当读者还书时 管理员输入书号并按下E键 程序结束计时 书号为不超过1000的正整数 当管理员将0作为书号输入时 表示一天工
  • 【系统函数】2. 系统的因果性、稳定性

    1 系统的因果性 系统的因果性 非因果性 连续因果系统的充要条件 离散因果系统的充要条件 2 系统的稳定性 系统稳定的必要性 稳定系统 连续系统 是 稳定系统 的充要条件 离散系统 是 稳定系统 的充要条件 因果系统 是 稳定系统 的充要条
  • 2012,改变AGI命运的180天

    2012年12月初的一天 一场秘密竞拍正在美国滑雪胜地太浩湖 Lake Tahoe 的一家赌场酒店里进行 太浩湖位于加州和内华达州交界处 是北美最大的高山湖泊 拥有蓝宝石般的湖面和顶级雪道 教父2 曾在这里取景 马克吐温曾在此地流连忘返 而
  • 关于ESD静电测试以及实际案例的修改(怎么让你的PCB更加好过ESD)

    背景 最近楼主的两个项目客户要求要过ESD测试 分别是4KV和8KV的空气放电和4KV的接触放电 其中一个MCU的ESD保护做得比较好 还有就是产品设计比较简单 没有USB 蓝牙这些 所以ESD过也是稳稳的 不加TVS管也是过了 另外一个就
  • Python使用tkinter开发一个简单的参数计算软件模板,可用于设计估算,制造业算料,各种包含参数变量的简单计算

    一 开发前因 最近在制造业转了一圈 发现很多传统制造业在设计或者加工下料过程中 需要根据一些固定参数和现场实际的变量 去估算出设计的范围值或者所需要的材料用量 这种计算当然都会有固定的参数和变量组成的公式 但是现场的计算方式感人 要么用计算
  • C#:复制文件显示进度条

    1 窗口界面 主要是文本框textBox 按钮button 进度条prograssBar三大组件所组成的 2 完整代码 using System using System IO using System Windows Forms usin
  • [JAVAee]Linux上的javax.mail报错

    我们把在window写的项目部署到Linux上的Tomcat时 如果发现使用不了了 该如何找到错误呢 找到报错的地方在哪呢 在Linux环境下来到Tomcat目录下的logs目录 输入 tail f catalina out n 500 t
  • JDK安装步骤

    安装过程 新建文件夹 新建文件夹 首先新建两个路径 D java jdk和D java jre 代表我把Java安装到D盘下的java路径下 在该路径下要新建两个路径 一会儿放jdk和jre 安装过程 安装过程 1 默认是这个路径 更改一下
  • Linux与Windows操作系统之间的技术差异与迁移

    引言 操作系统是计算机领域中的核心组成部分 为我们提供了统一且可靠的计算环境 Linux和Windows作为最广泛使用的操作系统之一 在技术层面存在着显著的差异 当我们从一个操作系统迁移到另一个操作系统时 可能会面临一些技术挑战 本文将着重
  • openGauss学习笔记-68 openGauss 数据库管理-创建和管理普通表-向表中插入数据

    文章目录 openGauss学习笔记 68 openGauss 数据库管理 创建和管理普通表 向表中插入数据 68 1 背景信息 68 2 操作步骤 68 2 1 向表customer t1中插入一行 68 2 2 向表中插入多行 68 2