来自 首页 2019-09-25 06:27 的文章
当前位置: 澳门太阳娱乐手机登录 > 首页 > 正文

详解MySQL数据库之更新语句

图片 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, 小巨人, 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语句,别的一种正是翻新语句,也称之为数据操作语句。言外之...

本文由澳门太阳娱乐手机登录发布于首页,转载请注明出处:详解MySQL数据库之更新语句

关键词: