数据库insert详细用法


数据库版本:KingbaseES V008R006C008B0014


简介

    INSERT 语句用于将数据插入表中,向指定表格添加1行或多行数据,本篇文章主要以kingbase介绍insert的一些技巧。

        

文章目录如下

1. 基本语法

2. 实用技巧

2.1. 插入其他表数据

2.2. 快速插入万行数据

2.3. 插入随机数

2.4. 插入随机字符

2.5. 插入随机日期

2.6. 插入随机指定字符

3. 应用案例


        

1. 基本语法

insert 的基本语法如下:

INSERT INTO
    表名(列1, 列2...)
VALUES
    (数据1, 数据2...);

        

比如创建一张简单表(3列数据):

CREATE TABLE t1(
    id int default 1,
    name text,
    avg int
);

【案例一】指定列名插入数据

INSERT INTO
    t1(id, name)
VALUES
    (1, '小李');

如果是全部插入则可以不指定列名(默认全部)

INSERT INTO
    t1
VALUES
    (1, '小李', 18);

        

【案例二】插入多行数据

INSERT INTO
    t1
VALUES
    (1, '小李', 18),
    (2, '小王', 19),
    (3, '小张', 16);

        

【案例三】使用默认值

INSERT INTO
    t1
VALUES
    (1, '小李', DEFAULT),  --使用默认值
    (2, '小王', 19),
    (3, '小张', DEFAULT);  --使用默认值

        

2. 实用技巧

介绍几种实用的技巧,包括快速插入大量数据、随机数、随机字符、随机日期、随机指定字符等。

2.1. 插入其他表数据

查询其他表数据,插入到指定表中

INSERT INTO
    表1(列名1, 列名2)  --插入数据到表1
SELECT                --查询表2的数据,将其插入到表1
    表2列1, 表2列2
FROM
    表2
WHERE
    条件;

【案例一】将 t1 中 id 和 name 数据插入到 t2

INSERT INTO
    t2(id,name)
SELECT
    id,name
FROM
    t1;

  • 仅查询t1表2列数据插入,所以另外2列为空

        

【案例二】手动增加另2列数据

INSERT INTO
    t2
SELECT
    id,
    name,
    19,            --手动指定数据
    '2000-01-01'   --手动指定数据
FROM
    t1;

        

【案例三】插入连接查询的数据

INSERT INTO t3 (id, name, dept, id_number)
SELECT * FROM t1,t2;

  • 直接查询2张表会将所有数据合并,根据实际情况利用连接查询的方法插入即可。

        

2.2. 快速插入万行数据

使用函数 generate_series 可以快速插入上万行,语法如下:

generate_series(起始大小, 结束大小, 步进)

        

【案例一】插入整数1~10(共10行)

INSERT INTO
    t1
VALUES(
    generate_series(1, 10)
);

        

【案例二】插入整数10~15(共6行)

INSERT INTO
    t1
VALUES(
    generate_series(10, 15)
);

        

【案例三】插入1~10的奇数

INSERT INTO
    t1
VALUES(
    generate_series(1, 10, 2)
);

        

如果存在多列,将该函数带入某列即可

INSERT INTO
    t3
VALUES(
    generate_series(1, 100000),  --插入1~10w
    '小李',
    '502385199003092375',
    '综合部');

        

2.3. 插入随机数

内置函数 random 用于生成一个0~1的随机小数

        

通过 random * N 来实现生成随机数,比如生成100~1000的随机数

random() * 901 + 100

        

如果需要取整则使用 TRUNC 函数

TRUNC (random() * 901 + 100)

        

通过上述的方法,我们可以直接生成6位随机数

TRUNC(random()*1000000)

这种方法不太稳定,如果前面数字为0则会被自动屏蔽,所以需要使用 LPAD 函数

/*将左侧用0填充6位数*/
LPAD(TRUNC(random()*1000000), 6, 0)

        

将该函数应用到 insert

INSERT INTO t1 VALUES(LPAD(TRUNC(random()*1000000), 6, 0));

        

2.4. 插入随机字符

随机字符也通过随机数 random 来生成,将随机数转换为32位的哈希值

MD5(RANDOM())

        

同样可以通过 SUBSTRING 函数来截取前6位

SUBSTRING(MD5(RANDOM()), 1, 6)

        

2.5. 插入随机日期

生成 2020 年之内的随机日期

to_char(
    (date '2020-01-01' + TRUNC(random()*365+1)), 
    'YYYY-MM-DD'
)
  • 通过 TRUNC(random()*365+1) 生成一个1~365的随机数;
  • 再通过date日期相加(得到一个随机天数偏移量);
  • 最后通过to_char将日期转换为YYYY-MM-DD格式。

        

如果希望插入幅度比较大的随机日期,自己计算天数,修改random*数值即可。或者使用日期相减的方式(生成2020-01-01到2030-12-31的随机日期)

to_char(
    (date '2020-01-01' + trunc(
        random() * (date '2030-12-31' - date '2020-01-01' + 1))), 
    'YYYY-MM-DD'
)

        

生成当前日期使用 now()

INSERT INTO t1 VALUES(now());

        

2.6. 插入随机指定字符

通过 case + random 的方式来生成指定的字符,比如生成 "男" 或 "女"

CASE WHEN
    random() < 0.5 THEN
        '男'
    ELSE
        '女'
END

        

再举一个例子,随机生成10、20、40、100,同样的方法:使用 random * 4 取整得到0~4的整数,再通过这四个数判断

SELECT CASE floor(random() * 4)::int  --取0~4随机值
    WHEN 0 THEN 10  --结果0生成10
    WHEN 1 THEN 20  --结果1生成20
    WHEN 2 THEN 40  --结果2生成40
    ELSE 100        --结果3生成100
END;

        

结合 insert 插入

INSERT INTO
    t1
VALUES
    (CASE WHEN random() < 0.5 THEN '男' ELSE '女' END);

        

3. 应用案例

准备一张员工表

CREATE TABLE emp(
    工号      int            primary key,
    姓名      varchar(128)   not null,
    性别      varchar(2)     default '男',
    年龄      int            not null,
    学历      varchar(32)    not null,
    薪资      decimal(10,2)  not null,
    入职日期  date           default now()
);

插入1w行随机数据

INSERT INTO
    emp
VALUES(
    GENERATE_SERIES(1, 10000),  --生成1~10000的整数
    SUBSTRING(MD5(RANDOM()), 1, 5),  --生成5位随机字符
    CASE WHEN random() < 0.5 THEN '男' ELSE '女' END,  --随机生成男或女
    TRUNC (random() * 27 + 18),    --生成18~45的随机数
    CASE floor(random() * 4)::int WHEN 0 THEN '专科' WHEN 1 THEN '本科' WHEN 2 THEN '硕士' ELSE '博士' END,
    TRUNC (random() * 15000 + 5000),  --生成5000~20000的随机数
    to_char((date '2020-01-01' + TRUNC(random()*730+1)), 'YYYY-MM-DD')  --生成2020后面2年的随机日期
);

结果如下: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/449753.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【力扣hot100】刷题笔记Day25

前言 这几天搞工作处理数据真是类似我也&#xff0c;还被老板打电话push压力有点大的&#xff0c;还好搞的差不多了&#xff0c;明天再汇报&#xff0c;赶紧偷闲再刷几道题&#xff08;可恶&#xff0c;被打破连更记录了&#xff09;这几天刷的是动态规划&#xff0c;由于很成…

HTML5七天学会基础动画网页10(2)

制作立方体 学完前面的基础内容&#xff0c;制作立方体是个不错的练习方法&#xff0c;先看成品 再分析一下&#xff0c;六个面让每个面旋转平移就可以实现一个立方体&#xff0c;来看代码: <title> 制作立方体</title> <style> *{ margin: 0; padding: 0; …

鸿蒙开发:从入门到精通的全方位学习指南

随着华为鸿蒙HarmonyOS生态系统的迅速扩展&#xff0c;越来越多的开发者渴望深入了解并掌握这一前沿技术。本文旨在为鸿蒙开发新手提供一份详尽且实用的学习教程&#xff0c;助您从零开始&#xff0c;逐步迈向鸿蒙开发的巅峰。 一、鸿蒙开发环境搭建 DevEco Studio安装&#x…

C语言--- 指针运算笔试题详解

目录 题目1&#xff1a; 题目2&#xff1a; 题目3&#xff1a; 题目4&#xff1a; 题目5&#xff1a; 题目6&#xff1a; 题目7&#xff1a; 题目1&#xff1a; #include <stdio.h> int main() {int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);print…

Open3D 利用四个点计算球心和半径 (28)

Open3D 利用四个点计算球心和半径 (28) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 给定的四个点坐标,计算球心和半径,提供验证的四个点来比较最终的结果是否准确。 二、算法实现 1.代码 代码如下(示例): import numpy as npdef calculate_sphere_center_…

课时61:流程控制_if条件控制_嵌套if实践

2.2.3 嵌套if实践 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 一个if语句仅仅能够针对一个场景的多种情况。当我们面对多场景的条件判断的时候&#xff0c;一个if结构语句无法满足需求&#xff0c;这个时候&#xff0c;我…

海格里斯HEGERLS智能托盘四向车系统为物流仓储自动化升级提供新答案

随着实体企业面临需求多样化、订单履行实时化、商业模式加速迭代等挑战&#xff0c;客户对物流仓储解决方案的需求也逐渐趋向于柔性化、智能化。作为近十年来发展起来的新型智能仓储设备&#xff0c;四向车系统正是弥补了先前托盘搬运领域柔性解决方案的空白。随着小车本体设计…

【AI】如何创建自己的自定义ChatGPT

如何创建自己的自定义ChatGPT 目录 如何创建自己的自定义ChatGPT大型语言模型(LLM)GPT模型ChatGPTOpenAI APILlamaIndexLangChain参考推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课本文将记录如何使用OpenAI GPT-3.5模型、LlamaIndex和LangChain创建自己的…

Grunt、Gulp 与 webpack:谁更胜一筹?

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

PWM驱动智能小车舵机运动

文章目录 一、硬件电路二、舵机初始化三、舵机控制 一、硬件电路 通过TIMER3的通道3提供PWM驱动电机 二、舵机初始化 初始化让舵机位于最左边&#xff0c;也就是0。 static int ServoInit(struct Servo *ptdev){if(NULL ptdev){LogDebug("ServoInit EINVAL \r\n&qu…

力扣题目训练(19)

2024年2月12日力扣题目训练 2024年2月12日力扣题目训练575. 分糖果589. N 叉树的前序遍历590. N 叉树的后序遍历275. H 指数 II279. 完全平方数132. 分割回文串 II 2024年2月12日力扣题目训练 2024年2月12日第十九天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;…

蓝桥杯刷题7

目录 1. 字母数 2. 列名 3. 大乘积 4. 最大连通 5. 星期几 1. 字母数 public class Main {public static void main(String[] args) {int num 2023;while(true) {String mInteger.toString(num,16);if(m.matches("^[a-f]$")){System.out.println(num);break;}n…

人生旅途:清理过往,规划未来,松弛前行

在人生的道路上&#xff0c;我们时常会遭遇各种障碍和挑战。这些障碍可能来自于外界环境的压力&#xff0c;也可能来自于内心的困惑和迷茫。然而&#xff0c;正是这些障碍和挑战&#xff0c;塑造了我们的性格&#xff0c;让我们变得更加坚强和成熟。当我们清理完上一段的障碍后…

数据治理实践——金融行业大数据治理的方向与实践

目录 一、证券数据治理服务化背景 1.1 金融数据治理发展趋势 1.2 证券行业数据治理建设背景 1.3 证券行业数据治理目标 1.4 证券行业数据治理痛点 二、证券数据治理服务化实践 2.1 国信证券数据治理建设框架 2.2 国信证券数据治理建设思路 2.3 数据模型管理 2.4 数据…

【数据分析】专栏文章索引

为了方便 快速定位 和 便于文章间的相互引用等 作为一个快速准确的导航工具 数据分析 目录&#xff1a; &#xff08;一&#xff09;数据分析介绍 &#xff08;二&#xff09;环境搭建 &#xff08;三&#xff09;matploatlib绘图 &#xff08;四&#xff09;numpy &…

VC#office ppt调用

1.打开VC#,建立控制台程序 2.引用MSOffice PPT引用 3. 主程序中引用ppt using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MSPPT Microsoft.Office.Interop.PowerPoint;//using WPSPPT PowerPoint;n…

美摄科技对抗网络数字人解决方案

在数字化浪潮的推动下&#xff0c;企业对于高效、创新且具备高度真实感的数字化解决方案的需求日益迫切。美摄科技凭借其在人工智能和计算机视觉领域的深厚积累&#xff0c;推出了一款全新的对抗网络数字人解决方案&#xff0c;该方案能够为企业构建出表情和动作都极为逼真的数…

【智慧公寓】东胜物联嵌入式硬件解决方案,为智慧公寓解决方案商降本增效,更快实现产品规模化生产

方案背景 东胜物联本次服务的客户是一家专注于提供智慧公寓解决方案的欧洲企业&#xff0c;该公司旨在为用户提供智能&#xff0c;便捷&#xff0c;安全的生活体验。其解决方案涵盖智慧公寓控制、自动化、能源管理和智能建筑&#xff0c;它的使命是通过复杂的控制系统使用户能…

20240309web前端_第一周作业_豆瓣电影

作业四&#xff1a;豆瓣电影 成果展示&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0…

开发指南006-后端配置文件

后端配置文件分为两层&#xff0c;一是部署目录中的内容如下&#xff1a; 这里最重要的是端口号&#xff0c;同一个目录下可以是一个jar包多个配置文件&#xff0c;启动批处理中&#xff0c;按一个配置文件启动一个程序的方式启动多个服务。例如上面目录里的启动批处理文件可以…