mysql数据库更新数据库语句_MySQL数据库之UPDATE更新语句精解(1)

一、INSERT和REPLACE

INSERT和REPLACE句子的功用都是向表中刺进新的数据。这两条句子的语法类似。它们的首要区别是怎么处置重复的数据。

1. INSERT的通常用法

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);

若是要向table1中刺进5条记载,下面写法是过错的:

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

MySQL将会抛出下面的过错

ERROR 1136: Column count doesn't match value count at row 1

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

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

当然,这种写法也能够省掉列名,这样每一对括号里的值的数目有必要共同,并且这个数目有必要和列数共同。如:

INSERT INTO table1 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。它们都有一个仅有索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值