数据库insert详细用法

news2024/10/6 6:52:06

数据库版本: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年的随机日期
);

结果如下: 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hubspot 2023年推荐使用的11个AI视频生成器

视频是任何营销活动不可或缺的一部分&#xff1b;然而&#xff0c;如果你不懂编辑或时间紧迫&#xff0c;它们可能会很乏味&#xff0c;很难创建。一只手从电脑里伸出来&#xff0c;拳头碰到另一只手&#xff1b;代表AI视频生成器。 幸运的是&#xff0c;你可以利用许多人工智能…

2024蓝桥杯每日一题(时间日期)

一、第一题&#xff1a;日期差值 解题思路&#xff1a;模拟 写一个计算时间的板子两者相减 【Python程序代码】 mon [0,31,28,31,30,31,30,31,31,30,31,30,31] def pd(x):if x%4000 or (x%40 and x%100!0):return Truereturn False def get_day(y,m,d):res 0for i …

【空投】Blast交互

L2 Blast今早宣布获得paradigm领投的2kw美金融资&#xff0c;项目由blur创始人pacman发起&#xff0c;主打native yield&#xff0c;即跨链到blast的资产自动获得收益&#xff0c;目前还是邀请制&#xff0c;并且有积分机制&#xff0c;目前进开放充值和积分获取功能&#xff0…

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

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

12、MongoDB -- 通过 SpringBoot 整合 Spring Data MongoDB 操作 MongoDB 数据库(传统的同步API编程)

目录 通过 SpringBoot 整合 Spring Data MongoDB 操作 MongoDB 数据库&#xff08;传统的同步API编程&#xff09;演示前提&#xff1a;登录单机模式的 mongodb 服务器命令登录【test】数据库的 mongodb 客户端命令登录【admin】数据库的 mongodb 客户端命令 代码演示同步API编…

antv L7结合高德地图使用dome1

antv L7结合高德地图使用 一、设置底图二 、添加antv L7 中要使用的dome1. 安装L7 依赖2. 使用的dome 、以下使用的是浮动功能3. 运行后显示 自定义样式修改1. 设置整个中国地图浮动起来 自定义标注点1. 静态标注点2. 动态标注点&#xff08;点位置需要自己改&#xff09;3. 完…

现代DevOps如何改变软件开发格局

在软件开发的早期&#xff0c;该过程通常是开发人员编写代码&#xff0c;再将其交给质量保证&#xff08;QA&#xff09;进行测试。这种瀑布开发方法可能会导致质量问题和延迟&#xff0c;因为问题是在周期后期发现的。 一、了解DevOps和测试左移 DevOps是Development和Opera…

【强化学习中alpha和gamma0】

在强化学习中&#xff0c;alpha&#xff08;α&#xff09;和gamma&#xff08;γ&#xff09;分别代表学习率和折扣因子&#xff0c;它们是强化学习算法中的两个重要的超参数。 1. **学习率 (alpha)&#xff1a;** - alpha 是一个控制在学习过程中对新观测值的权重的参数。…

【工具】Git的介绍与安装

目录 前言 1W&#xff1a;什么是Git&#xff1f; 2W&#xff1a;为什么使用Git&#xff1f; 3W&#xff1a;如何使用Git&#xff1f; Git的安装步骤 测试 3.1 桌面空白部分鼠标右击 3.2 选择 Open Git Bash here 3.3 输入 git -v 命令查看版本 Git区域分布 Git的工作…

基于springboot的厨艺交流平台

采用技术 基于springboot的厨艺交流平台的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示 食材分类管理 用户信息管理 菜谱分类管理 菜谱信息管理 食材信息…

AHU 汇编 实验四

实验名称&#xff1a;实验四 两个数的相乘 实验内容&#xff1a; 用子程序形式编写&#xff1a; A*B&#xff1a;从键盘输入a和b&#xff0c;计算A*B&#xff0c;其中乘法采用移位和累加完成 实验过程&#xff1a; 源代码&#xff1a; data segmentmul1 db 16,?,16 dup(?…

MySQL gh-ost DDL 变更工具

文章目录 1. MDL 锁介绍2. 变更工具3. gh-ost 原理解析4. 安装部署5. 操作演示5.1. 重点参数介绍5.2. 执行变更5.3. 动态控制 6. 风险提示 1. MDL 锁介绍 MySQL 的锁可以分为四类&#xff1a;MDL 锁、表锁、行锁、GAP 锁&#xff0c;其中除了 MDL 锁是在 Server 层加的之外&am…

解决达梦集成 JPA 时表和字段注释注解不生效的问题

前言 最近在做达梦数据库集成 JPA 时&#xff0c;发现使用的表注解和字段注解均未生效&#xff08;MySQL、Oracle、PostgreSQL中均可以在建表时正常生成相应的注释&#xff09;&#xff0c;经过调试发现解决办法也很简单&#xff1a; 自定义方言类继承自org.hibernate.dialect…

Ubuntu 14.04:安装PaddlePaddle(Conda安装)

目录 一、PaddlePaddle 概要 二、PaddlePaddle安装要求 三、PaddlePaddle安装 3.1 安装 Anaconda3 3.2 创建Anaconda虚拟环境&#xff08;python 3.8&#xff09; 3.3 进入Anaconda虚拟环境 3.4 检测 Anaconda 虚拟环境配置是否符合PaddlePaddle安装要求 3.4.1 确认 py…

用链表实现顺序表的插入和删除操作(操作封装在函数中)

#include <iostream> using namespace std; struct node{int val;node * next; }; void print(node * head){if(headNULL ||head->nextNULL){cout<<"链表中已经无元素";return;}cout<<"打印列表:";node * phead->next;while(p){co…

开源好用的所见即所得(WYSIWYG)编辑器:Editor.js

文章目录 特点基于区块干净的数据 界面与交互插件标题和文本图片列表Todo表格 使用安装创建编辑器实例配置工具本地化自定义样式 今天介绍一个开源好用的Web所见即所得(WYSIWYG)编辑器&#xff1a; Editor.js Editor.js 是一个基于 Web 的所见即所得富文本编辑器&#xff0c;它…

FTP,SFTP,FTPS,SSL,TSL简介,区别,联系,使用场景说明

文章目录 简介FTPFTPSSFTP加密场景选择FTPS还是SFTPFTP、SFTP、FTPS区别、联系和具体使用场景如何使用FTP、SFTP和FTPSSSLTLSSSL和TLS区别和联系&#xff0c;以及使用场景SSL和TLS技术上的区别一些问题隐式的TLS&#xff08;FTPS/SSL&#xff09;或者显式的TLS&#xff08;FTPS…

【Datawhale学习笔记】从大模型到AgentScope

从大模型到AgentScope AgentScope是一款全新的Multi-Agent框架&#xff0c;专为应用开发者打造&#xff0c;旨在提供高易用、高可靠的编程体验&#xff01; 高易用&#xff1a;AgentScope支持纯Python编程&#xff0c;提供多种语法工具实现灵活的应用流程编排&#xff0c;内置…

蓝桥·算法双周赛|第七场分级赛——小白入门赛

&#x1f525;博客介绍&#xff1a; 27dCnc &#x1f3a5;系列专栏&#xff1a; <<数据结构与算法>> << 算法入门>> << C项目>> &#x1f3a5; 当前专栏: << 算法入门>> 专题 : 数据结构帮助小白快速入门算法 &#x1f4…

【全志H616】1 --用orangepi控制硬件

【全志H616】1 --用orangepi控制硬件 本文介绍了如歌用orangepi 控制蜂鸣器&超声波模块&#xff0c;通过键盘输入1、2、3、4来控制转动角度舵机模块&#xff1b;同时还介绍了利用全志如何配置定时器&#xff1b;以及查看H616引脚状态的命令等… 超声波模块和舵机模块的讲解…