SQL语法基础之insert

Insert语句用于插入数据到表中,其基本语法有以下三种
SQL语法基础之insert
• Insert语句三种写法的常规用法
• Insert into students5 values(1,’aaa’);
• Insert into students5 set sid=2,sname=‘bbb’;
• Insert into students5 select sid,sname from where sid=3;
SQL语法基础之insert
• 其中insert…values和insert…set两种语句都是将指定的数据插入到
现成的表中,而insert…select语句是将另外表中数据查出来并插入
到现成的表中
• Partition子句代表可以将数据插入到指定的表分区中
• Tbl_name代表将数据插入到的目标表
• Col_name代表要插入指定数据的目标表列,如果是多列则用逗号
隔开,如果目标表中的某些列没有在Insert语句中指定,则这些列
会插入默认值,当然可以使用default显视指定插入默认值
• Values中除了可以指定确定的数值之外,还可以使用表达式expr
• INSERT INTO tbl_name (col1,col2) VALUES(15,col12); ##正确
• INSERT INTO tbl_name (col1,col2) VALUES(col2
2,15); ##错误
• Insert…values语句不光可以插入一条数据,也可以插入多条数据
• INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
• Insert into students values(7,’abc’),(8,’bcd’);
• Insert…values和insert…select语句的执行结果如下
• Records: 100 Duplicates: 0 Warnings: 0
• Records代表此语句操作了多少行数据,但不一定是多少行被插入的数据,因为如果存
在相同的行数据且违反了某个唯一性,则duplicates会显示非0数值,warning代表语句执
行过程中的一些警告信息
• low_priority关键词代表如果有其他链接正在读取目标表数据,则此insert语
句需要等待读取完成
• low_priority和high_priority关键词仅在MyISAM, MEMORY, and MERGE三种存储
引擎下才生效
• Ignore关键词代表insert语句如果违反主键和唯一键的约束条件,则不报错而
只产生警告信息,违反的行被丢弃,而不是整个语句回退;在数据类型转换
有问题时如果有ignore则只产生警告信息,而不是语句回退
01
• 用于从另外的表中查出记录并插入到目标表中
• INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
• 当目标表和select语句中的表相同时,则会先将select语句的结果
存放在临时表中,再插入到目标表中(注意执行顺序)
SQL语法基础之insert
• 当insert语句中使用on duplicate key update子句时,如果碰到当前
插入的数据违反主键或唯一键的唯一性约束,则Insert会转变成
update语句修改对应的已经存在表中的这条数据。比如如果a字段
有唯一性约束且已经含有1这条记录,则以下两条语句的执行结
果相同
• INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
• UPDATE table SET c=c+1 WHERE a=1;
• On duplicate key update子句后面可以跟多个修改,用逗号隔开
• 上述例子中如果b字段也有唯一性约束,则与此语句的执行结果
相同,但一般应该避免出现对应多条的情况
• UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
• mysql> create table students2(sid int primary key,sname varchar(20),sex
int);
• Insert into students2 values(1,’aaa’,1); ##插入成功
• Insert into students2 values(1,’bbb’,0); ##插入失败
• mysql> insert into students2 values(1,'bbb',0);
• ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY‘
• insert into students2 values(1,‘bbb’,0) on duplicate key update sname=‘bbb’;
##执行成功
• +-----+-------+------+
• | sid | sname | sex |
• +-----+-------+------+
• | 1 | bbb | 1 |
• insert into students2 values(1,‘ccc’,0) on duplicate key update
sname=‘ccc’,sex=0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值