操纵数据表(DML)之INSERT

一、DML语言
DML语言的英文全称是Data Manipulation Language ,中文全称是数据操作语言,它是SQL语言中的一个重要的组成部分。当需要完成对数据库中的数据的新增、修改和删除时,实际上使用的就是DML语言。主要包括如下几个核心语句:
1、INSERT 语句,想表中添加新的行。
2、UPDATE 语句,更新已经存储在表中的数据。
3、DELETE语句,删除行。
4、MERGE语句,插入所有行到另一个已经存在的表,如果要插入的行的键已匹配已经存在行,测更新已经存在的行而不是插入一个新行。

DML操作后,使用COMMIT显示提交事务,才会保存更改到数据库。可以使用ROLLBACK撤销更改。

--提交事务
COMMIT;
--回滚事务
ROLLBACK;

二、使用子查询插入多行数据
复制表。这样会把数据也复制过去。

CREATE TABLE AUSER AS SELECT * FROM BUSER;

在这里插入图片描述

先复制表不复制数据,然后复制数据
复制表
CREATE TABLE AUSER AS SELECT * FROM BUSER;
在这里插入图片描述
三、插入多表数据
INSERT语句可以一次向多个表中插入数据,这个特性通常用于在数据仓库系统红从一个或多个操作源转移数据到一组目的表中,分为为条件多表插入和条件多表插入俩类,区别如下
1、无条件插入,服务器会将用户指定的对多个表的插入子句同时进行插入。
2、按条件插入,服务器会将用户指定的对多个表的插入子句同时进行插入。

无条件插入子句语法如下

INSERT ALL 
insert_into_clause vlaues_clause_1 					--指定插入子句
[insert_into_clause vlaues_clause_2]				--可选的多个插入子句
SUBQUERY;											--subquery是必须的,它的米一行数据都会导致INTO语句被执行一次,
													--返回多少次就执行多少次

insert_into_clause 指定into语句
vlaues_clause指定要插入的值列表
使用SUBQUERY指定一个子查询进行插入,子查询返回的每一行都会导致它上面定义的多个insert_into_clause被执行一次
INSERT ALL
INTO auser(id) VALUES (id)
INTO cuser(account) VALUES (account)
INTO duser(name) VALUES (name)
SELECT id,account,name FROM buser WHERE ID = ‘1’;

有条件语句,必须满足指定的条件才执行插入,他有分为INSERT ALL 和INSERT FIRST 这俩种插入类型,语法如下

INSERT ALL
WHEN condition THEN  insert_into_clause vlaues_clause_1
[WHEN condition THEN ] [insert_into_clause vlaues_clause_1]
......
[ELSE]  [insert_into_clause vlaues_clause_1]
SUBQUERY;
INSERT ALL 
WHEN id=1 INTO auser(id) VALUES (id)
WHEN id=2 INTO cuser(account) VALUES (account)
WHEN id=3 INTO duser(name) VALUES (name)
SELECT id,account,name FROM buser;

INSERT FIRST和INSERT ALL最大的区别就是如果第一个WHEN子句的值为true,就会执行该WHEN子句后面的INSERT 语句,并且跳过后面其余的WHEN 子句,也就是说INSERT FIRST只会考虑第一个条件为true的WHEN子句,语法如下:

INSERT FIRST
WHEN condition THEN  insert_into_clause vlaues_clause_1
[WHEN condition THEN ] [insert_into_clause vlaues_clause_1]
......
[ELSE]  [insert_into_clause vlaues_clause_1]
SUBQUERY;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值