暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T INSERT

墨天轮 2019-10-12
1804

INSERT

功能描述

在表中插入新的数据。

INSERT语句有三种形式:

  • 第一种是值插入,即构造一行记录并插入到表中。
  • 第二种形式是查询插入,它通过SELECT子句返回的结果集构造一行或多行记录插入到表中。
  • 第三种是先插入记录,如果报主键冲突错误则执行UPDATE操作,更新指定字段值。

注意事项

  • 执行该语句的用户需要有表的INSERT权限或者INSERT ANY TABLE的系统权限。普通用户不允许insert系统SYS用户对象。
  • INSERT事务提交是默认关闭的。会话退出时,需要显式COMMIT,否则记录将丢失。
  • INSERT ...SELECT形式,select_list列数必须与待插入的字段数一样。
  • INSERT中单行数据量需小于64000字节。

语法格式

  • 值插入。
    INSERT [hint_info] [IGNORE] [ INTO ] [ schema_name. ]table_name [ ( column_name [ , ... ] ) ] VALUES ( expression [ , ... ] )
  • 查询插入。
    INSERT [IGNORE] [ INTO ] [ schema_name. ]table_name [table_alais][ ( column_name [ , ... ] ) ]select_clause
    • select_clause
      SELECT [ DISTINCT ] select_list FROM table_list [ where_clause ] [ group_by_clause ] [ order_by_clause ] [ limit_clause ]
  • 主键冲突错误,执行UPDATE操作。
    INSERT [ INTO ] [ schema_name. ]table_name [ ( column_name [ , ... ] ) ] VALUES ( expression [ , ... ] ) ON DUPLICATE KEY UPDATE {column_name = expression} [ , ... ]

参数说明

  • IGNORE

    用于忽略会导致重复关键字错误的记录,不支持和ON DUPLICATE KEY UPDATE 同时使用。

  • table_name

    待插入的表名。

  • column_name

    待插入的表字段名。

    如果insert语句所指定的字段名包含表中的所有字段,则可能省略字段名。

    取值范围:已存在的字段名。

  • expression

    插入字段的值或表达式。

  • select_clause

    SELECT查询结果集作为新值插入到表中,具体参数,参考select章节。

  • select_list

    指定查询列。

  • table_list

    指定查询表,可以是表、视图、子查询。

  • DISTINCT

    关键字,表示查询结果集是否需要去重。

    取值范围:已存在的字段名,或字段表达式。

  • where_clause

    指定查询结果集要满足的条件。

  • group_by_clause

    指定查询结果集要满足的分组规则。

  • order_by_clause

    指定查询结果集要满足的排序规则。

  • limit_clause

    指定查询结果集要满足的界限。

  • ON DUPLICATE KEY UPDATE

    指定插入记录的主键和已有记录的主键冲突时执行UPDATE操作。根据索引定义的顺序遍历各列查找冲突记录。例如,表t1包含三列,列名分别为f1、f2、f3,索引建立顺序为f3->f2->f1,那么在插入记录的主键和已有记录的主键冲突时,GaussDB 100通过遍历列数据查找冲突的顺序为f3->f2->f1。

示例

向表trainning中插入数据。
--删除表training。 DROP TABLE IF EXISTS training;
--创建表training。 CREATE TABLE training(staff_id INT NOT NULL PRIMARY KEY,course_name CHAR(50),course_start_date DATETIME, course_end_date DATETIME,exam_date DATETIME,score INT);
--向表training中插入记录1。 INSERT INTO training(staff_id,course_name,course_start_date,course_end_date,exam_date,score) VALUES(10,'SQL majorization','2017-06-15 12:00:00','2017-06-20 12:00:00','2017-06-25 12:00:00',90); --向表training中插入记录2。 INSERT INTO training(staff_id,course_name,course_start_date,course_end_date,exam_date,score) VALUES(11,'information safety','2017-06-20 12:00:00','2017-06-25 12:00:00','2017-06-26 12:00:00',95); --向表training中插入记录3。 INSERT INTO training(staff_id,course_name,course_start_date,course_end_date,exam_date,score) VALUES(12,'master all kinds of thinking methonds','2017-07-15 12:00:00','2017-07-20 12:00:00','2017-07-25 12:00:00',97); --提交事务。 COMMIT;
--向表training插入记录5时,主键冲突执行update操作。 INSERT INTO TRAINING VALUES (12,'INFORMATION234','2018-06-20 12:00:00','2018-06-25 12:00:00','2018-06-26 12:00:00',94) ON DUPLICATE KEY UPDATE STAFF_ID=STAFF_ID,COURSE_NAME='INFORMATION234',COURSE_START_DATE='2018-06-20 12:00:00', COURSE_END_DATE='2018-06-25 12:00:00', EXAM_DATE='2018-06-23 12:00:00',SCORE=88; --提交事务。 COMMIT;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论