详解MySQL数据库之更新语句

2019-08-08 03:47栏目:网站首页

图片 1

  用于操作数据库的SQL一般分为三种,一种是询问语句,也正是大家所说的 SELECT语句,另外一种正是创新语句,也称为数据操作语句。言外之 意,便是对数码举办修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及DELETE。在MySQL中又多了贰个REPLACE语句,由此,本文以MySQL为背景来谈谈怎么样使有SQL中的更新语句。

 

  一、INSERT和REPLACE

1.基本INSERT语句,单行插入

  若无列出列,则使各种对应。

图片 2

 

  INSERT和REPLACE语句的效果与利益都以向表中插入新的数目。这两条语句的语法类似。它们的显要分裂是哪些管理重复的数额。

2.多行插入

图片 3

  1. INSERT的貌似用法

3.INSERT INTO ... SELECT 语句

  要插入的讲话是从别的表中查询出来的。

  图片 4

  图片 5

       注意:数据类型得同样可能能够隐式转变!不然会报错!

 

  MySQL中的INSERT语句和正规的INSERT不太雷同,在专门的学业的SQL语句中,三回插入一条记下的INSERT语句独有一种情势。

  INSERT INTO tablename(列名…) VALUES(列值);

  而在MySQL中还有别的一种样式。

  INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,…;

  第一种艺术将列名和列值分开了,在动用时,列名必须和列值的数千篇一律。如上边包车型客车言语向users表中插入了一条记下:

  INSERT INTO users(id, name, age) VALUES(123, 姚明, 25);

  第三种方式允许列名和列值成对出现和平运动用,如上边包车型地铁口舌将生出中样的意义。

  INSERT INTO users SET id = 123, name = 姚明, age = 25;

  若是选用了SET方式,必须至少为一列赋值。要是某二个字段使用了省缺值(如默许或自增值),那二种方法都能够轻巧那几个字段。如id字段上使用了自增值,下边两条语句可以写成如下格局:

  INSERT INTO users (name, age) VALUES(姚明,25);

  INSERT INTO uses SET name = 姚明, age = 25;

  MySQL在VALUES上也做了些变化。倘若VALUES中什么都不写,那MySQL将采用表中每一列的暗许值来插入新记录。

  INSERT INTO users () VALUES();

  假若表名后怎样都不写,就象征向表中负有的字段赋值。使用这种格局,不止在VALUES中的值要和列数一致,而且顺序无法颠倒。 INSERT INTO users VALUES(123, 姚明(yáo míng ), 25);

  假使将INSERT语句写成如下方式MySQL将会报错。

  INSERT INTO users VALUES(姚明,25);

  2. 接纳INSERT插入多条记下

  看到那个题目或者大家会问,那有如何好说的,调用数次INSERT语句不就能够插入多条记下了啊!但使用这种措施要加进服务器的负荷,因为,实施每贰遍SQL服务器都要一致对SQL实行剖判、优化等操作。幸亏MySQL提供了另一种减轻方案,正是选拔一条INSERT语句来插入多条记下。那并非正规的SQL语法,由此只可以在MySQL中应用。

  INSERT INTO users(name, age)

  VALUES(姚明, 25), (比尔.盖茨, 50), (火星人, 600);

  下边的INSERT 语句向users表中三回九转插入了3条记下。值得注意的是,上边包车型地铁INSERT语句中的VALUES后必须每一条记下的值放到一对(…)中,中间使用","分割。假诺有一个表table1

  CREATE TABLE table1(n INT);

  假诺要向table1中插入5条记下,下边写法是错误的:

  INSERT INTO table1 (i) VALUES(1,2,3,4,5);

  MySQL将会抛出上边包车型地铁荒唐

  ERROR 1136: Column count doesnt match value count at row 1

  而科学的写法应该是那样:

  INSERT INTO t able1(i) VALUES(1),(2),(3),(4),(5);

  当然,这种写法也足以简简单单列名,那样每一对括号里的值的数额必须一律,并且以此数目必须和列数一致。如:

  INSERT INTO t able1 VALUES(1),(2),(3),(4),(5);

  3. REPLACE语句

  我们在利用数据库时或然会不经常蒙受这种状态。假如贰个表在一个字段上确立了独一索引,当大家再向这些表中使用已经存在的键值插入一条记下,那将会抛出一个主键冲突的荒唐。当然,大家恐怕想用新记录的值来覆盖原本的记录值。要是运用守旧的做法,必须先使用DELETE语句删除原先的笔录,然后再选拔INSERT插入新的记录。而在MySQL中为大家提供了一种新的解决方案,那正是REPLACE语句。使用REPLACE插入一条记下时,要是不重复,REPLACE就和INSERT的功效雷同,如若有重复记录,REPLACE就动用新记录的值来替换原本的记录值。

  使用REPLACE的最大好处正是可以将DELETE和INSERT如胶似漆,产生一个原子操作。这样就能够不需求思索在相同的时候接纳DELETE和INSERT时加上事务等复杂操作了。

  在运用REPLACE时,表中务必有独一索引,并且以此目录所在的字段不能够同意空值,不然REPLACE就和INSERT完全平等的。

  在实践REPLACE后,系统再次回到了所影响的行数,即便回去1,表明在表中并不曾重新的笔录,假诺回到2,表达有一条重复记录,系统自动先调用了 DELETE删除那条记下,然后再记录用INSERT来插入那条记下。借使回去的值大于2,那表明有八个独一索引,有多条记下被删去和插入。

  REPLACE的语法和INSERT极度的相似,如上边包车型地铁REPLACE语句是插入或更新一条记下。

  REPLACE INTO users (id,name,age) VALUES(123, 赵本山, 50);

  插入多条记下:

  REPLACE INTO users(id, name, age)

  VALUES(123, 赵本山, 50), (134,Mary,15);

  REPLACE也足以动用SET语句

  REPLACE INTO users SET id = 123, name = 赵本山, age = 50;

  上面曾涉嫌REPLACE只怕影响3条以上的记录,那是因为在表中有赶上三个的独一无二索引。在这种场所下,REPLACE将思虑每一个独一索引,并对 每八个索引对应的重复记录都剔除,然后插入那条新记录。纵然有多个table1表,有3个字段a, b, c。它们都有四个独一索引。

  CREATE TABLE table1(a INT NOT NULL UNIQUE,b INT NOT NULL UNIQUE,c INT NOT NULL UNIQUE);

  假诺table第11中学早就有了3条记下

  a b c

  1 1 1

  2 2 2

  3 3 3

  上边我们利用REPLACE语句向table第11中学插入一条记下。

  REPLACE INTO table1(a, b, c) VALUES(1,2,3);

  重返的结果如下

  Query OK, 4 rows affected (0.00 sec)

  在table第11中学的记录如下

  a b c

  1 2 3

  大家得以观望,REPLACE将本来的3条记下都剔除了,然后将(1, 2, 3)插入。

SELECT语句,另外一种正是翻新语句,也称为数据操作语句。言外之...

版权声明:本文由威尼斯人app发布于网站首页,转载请注明出处:详解MySQL数据库之更新语句