您当前位置:优侠库 > 资讯攻略 >
来源:未知
2021-07-07 00:39:40 浏览: 分类:资讯攻略

详解MySQL数据库之更新语句

用来操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另一种是update语句,也叫数据操作语句。言下之意是修改数据。标准SQL中有三个语句,分别是INSERT、UPDATE和DELETE。mysql中还有一个REPLACE语句。因此,本文以MySQL为背景,讨论如何在SQL中拥有update语句。

我插入并替换

INSERT和REPLACE语句的功能是向表中插入新数据。这两条语句的语法相似。它们的主要区别是如何处理重复数据。

1.插入的一般用法

MySQL中的INSERT语句不同于标准的INSERT语句。在标准的SQL语句中,只有一种形式的INSERT语句,每次插入一条记录。

插入表名(列名& hellip)值(列值);

MySQL中还有另一种形式。

INSERT INTO tablename集合column_name1 = value1,column_name2 = value2,& hellip;

第一种方法将列名与列值分开。使用时,列名必须与列值的数量一致。例如,以下语句将记录插入到users表中:

分成用户(id,姓名,年龄)值(123,'姚明',25);

第二种方法允许列名和列值成对出现和使用。例如,下面的语句将产生中性效果。

入用户集id = 123,姓名= '姚明',年龄= 25;

如果使用SET方法,则必须至少为一列赋值。如果某个字段使用了默认值(如default或self-increment ),则这两种方法中都可以省略这些字段。如果在id字段中使用自增量,上述两个语句可以写成如下形式:

转化为用户(姓名,年龄)值('姚明',25);

成用集名字= '姚明',年龄= 25;

MySQL的价值观也做了一些改变。如果VALUES中没有任何内容,MySQL将使用表中每一列的默认值来插入新记录。

插入到用户()值();

如果表名后没有写任何内容,则意味着向表中的所有字段赋值。这样,不仅VALUES中的值要与列数一致,而且顺序也不能颠倒。转化为用户价值观(123,‘姚明’,25);

如果INSERT语句以如下形式编写,MySQL将报告一个错误。

转化为用户价值观(“姚明”,25);

2.使用INSERT插入多条记录

看到这个标题,你可能会问,这有什么好说的?多次调用INSERT语句可以插入多条记录!但是,使用这种方法会增加服务器的负载,因为每次执行SQL时,服务器也会对SQL进行分析和优化。幸运的是,MySQL提供了另一种解决方案,那就是使用INSERT语句插入多条记录。这不是标准的SQL语法,所以只能在MySQL中使用。

插入用户(姓名、年龄)

价值观('姚明',25),('比尔盖茨',50),('火星人',600);

上面的INSERT语句连续向users表中插入3条记录。值得注意的是,上面INSERT语句中的值后面必须跟有一对记录中的每个记录的值(& hellip),中间用“的。,& quot分裂。假设有一个表table1。

创建表TABLE 1(n INT);

如果要在表1中插入5条记录,下面的写法是错误的:

在表1 (i)中插入值(1,2,3,4,5);

MySQL将抛出以下错误

错误1136:列计数与第1行的值计数不匹配

正确的写法应该是这样的:

将值(1)、(2)、(3)、(4)、(5)插入表1(I);

当然,这种方法也可以省略列名,这样每对括号中的值的个数必须相同,并且这个个数必须与列数相同。比如:

将值(1)、(2)、(3)、(4)、(5)插入表1;

3.替换语句

我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一的索引,当我们使用现有的键值向表中插入一条记录时,它将抛出一个主键冲突错误。当然,我们可能希望用新的记录值覆盖原始记录值。如果使用传统方法,必须使用DELETE语句删除原始记录,然后使用INSERT插入新记录。而MySQL给我们提供了一个新的解决方案,就是REPLACE语句。当使用REPLACE插入记录时,如果它不是重复的,REPLACE的功能与INSERT相同。如果有重复记录,REPLACE将使用新记录值替换原始记录值。

使用REPLACE的最大好处是可以将DELETE和INSERT结合起来形成一个原子操作。这样在同时使用DELETE和INSERT时就不用考虑添加事务等复杂操作了。

使用REPLACE时,表中必须有一个唯一的索引,并且这个索引所在的字段不能有空的值,否则REPLACE将和INSERT完全一样。

执行替换后,系统返回受影响的行数。如果返回1,则表示表中没有重复的记录。如果返回2,则表示存在重复记录。系统自动调用DELETE先删除该记录,然后记录该记录用INSERT插入。如果返回值大于2,则意味着存在多个唯一索引,并且删除和插入了多个记录。

REPLACE的语法与INSERT非常相似。例如,下面的REPLACE语句用于插入或更新记录。

替换成用户(ID,姓名,年龄)值(123,'赵本山',50);

插入多条记录:

替换成用户(id、姓名、年龄)

价值观(123,'赵本山',50),(134,'玛丽',15);

REPLACE也可以使用SET语句

替换成用户集id = 123,姓名= '赵本山',年龄= 50;

上面提到,REPLACE可能会影响3个以上的记录,因为表中有多个唯一索引。在这种情况下,REPLACE将考虑每个唯一索引,删除对应于每个索引的重复记录,然后插入这个新记录。假设有一个包含3个字段A、B和c的table1表,它们都有一个唯一的索引。

创建表table1(a INT NOT NULL UNIQUE,b INT NOT NULL UNIQUE,c INT NOT NULL UNIQUE);

假设表1中已经有三条记录。

公元前

1 1 1

2 2 2

3 3 3

让我们使用REPLACE语句向table1中插入一条记录。

代入表1(a,b,c)值(1,2,3);

返回的结果如下

查询正常,4行受影响(0.00秒)

表1中的记录如下

公元前

1 2 3

我们可以看到,REPLACE删除了所有最初的3条记录,然后插入(1,2,3)。

二。更新

UPDATE的功能是更新表中的数据。该语法类似于INSERT的第二种用法。必须提供表名和集表达式,并且可以在其后添加WHERE以限制更新的记录范围。

UPDATE table _ anem SET column _ name 1 = value 1,column_name2 = value2,...

在哪里...;

例如,以下语句将users表中id等于123的记录的年龄更改为24。

更新用户设置年龄= 24,其中id = 123

同样,可以使用UPDATE来更新多个字段的值:update users set age = 24,name = ' Mike ' where id = 123

上面的UPDATE语句指定了一个条件,否则UPDATE将通过该条件更新表中所有记录的值。

当使用UPDATE更新记录时,如果更新字段的类型与分配的值不匹配,MySQL会将该值转换为相应的类型值。如果该字段是数值类型,并且赋值超过了该数据类型的最大范围,MySQL会将该值转换为该范围的最大值或最小值。如果字符串太长,MySQL会截断多余的字符串。如果非空字段被设置为空,那么这个字段被设置为它们的默认值,数字的默认值是0,字符串的默认值是空 string(不是null,而是" & quot)。

在两种情况下,更新不会影响表中的数据。

1.当WHERE中的条件在表中没有与之匹配的记录时。

2.当我们给一个字段赋相同的值时,比如把字段abc赋给' 123 ',abc的原始值就是' 123 '。

与INSERT和REPLACE一样,UPDATE也返回更新记录的数量。但是,这些记录不包括满足WHERE条件但尚未更新的记录。下面的UPDATE语句不会更新任何记录。

更新用户设置年龄= 30,其中id = 12

查询正常,0行受影响(0.00秒)

如有必要,如果一个字段的类型是时间戳,当其他字段更新时,该字段将自动更新。

有时我们需要获取UPDATE选择的行数,而不是更新的行数。我们可以通过一些API来实现这个目标。比如MySQL提供的C API,提供了一个选项,可以得到你想要的记录数。MySQL的JDBC驱动获得的默认记录数也是匹配记录数。

更新和替换基本相似,但两者有两个区别。

1.当没有匹配记录时,UPDATE不做任何事情,而REPLACE在有重复记录时更新,在没有重复记录时插入。

2.更新可以有选择地更新记录的某些字段。当REPLACE找到重复记录时,它会完全删除该记录并插入一条新记录。也就是说,所有字段都会更新。

第三,删除和截断表

MySQL中删除数据有两种方式,一种是DELETE语句,另一种是TRUNCATE TABLE语句。DELETE语句可以通过WHERE选择要删除的记录。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更加灵活。

如果要清除空表中的所有记录,可以使用以下两种方法:

从表1中删除

截断表table1

第二条记录中的表是可选的。

如果要删除表中的一些记录,只能使用DELETE语句。

从表1中删除,其中...;

如果DELETE不添加WHERE子句,则与TRUNCATE TABLE相同,但它们的不同之处在于DELETE可以返回被删除记录的数量,而TRUNC关键字标签:MySQL,database

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227442.html

攻略资讯
安卓软件