金沙澳门唯一官网详解MySQL数据库之更新语句

2019-10-09 03:52 来源:未知

金沙澳门唯一官网 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);

  假使要向table第11中学插入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语句,别的一种正是翻新语句,也叫做数据操作语句。言外之...

TAG标签:
版权声明:本文由金沙澳门唯一官网发布于数据库管理,转载请注明出处:金沙澳门唯一官网详解MySQL数据库之更新语句