《2022年详细讲解MySQL数据库之UPDATE更新语句.docx》由会员分享,可在线阅读,更多相关《2022年详细讲解MySQL数据库之UPDATE更新语句.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年详细讲解MySQL数据库之UPDATE更新语句一、INSERT和REPLACEINSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区分是如何处理重复的数据。1. INSERT的一般用法MySQL中的INSERT语句和标准的INSERT不太一样,在标准的SQL语句中,一次插入一条记录的INSERT语句只有一种形式。INSERT INTO tablename(列名) VALUES(列值);而在MySQL中还有另外一种形式。INSERT INTO tablename SET column_name1 = value1, column_name2 =
2、 value2,;第一种方法将列名和列值分开了,在运用时,列名必需和列值的数一样。如下面的语句向users表中插入了一条记录:INSERT INTO users(id, name, age) VALUES(123, 姚明, 25);其次种方法允许列名和列值成对出现和运用,如下面的语句将产生中样的效果。INSERT INTO users SET id = 123, name = 姚明, age = 25;假如运用了SET方式,必需至少为一列赋值。假如某一个字段运用了省缺值(如默认或自增值),这两种方法都可以省略这些字段。如id字段上运用了自增值,上面两条语句可以写成如下形式:INSERT INT
3、O 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 IN
4、TO users VALUES(姚明,25);2. 运用INSERT插入多条记录看到这个标题或许大家会问,这有什么好说的,调用多次INSERT语句不就可以插入多条记录了吗!但运用这种方法要增加服务器的负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析、优化等操作。幸好MySQL供应了另一种解决方案,就是运用一条INSERT语句来插入多条记录。这并不是标准的SQL语法,因此只能在MySQL中运用。INSERT INTO users(name, age) VALUES(姚明, 25), (比尔.盖茨, 50), (火星人, 600);上面的INSERT 语句向users表中连续插入了3条记
5、录。值得留意的是,上面的INSERT语句中的VALUES后必需每一条记录的值放到一对()中,中间运用,分割。假设有一个表table1CREATE 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 table1(i) VALUES(1),(2),(3),(4),(5);当然,这种写法
6、也可以省略列名,这样每一对括号里的值的数目必需一样,而且这个数目必需和列数一样。如:INSERT INTO table1 VALUES(1),(2),(3),(4),(5);3. REPLACE语句我们在运用数据库时可能会常常遇到这种状况。假如一个表在一个字段上建立了唯一索引,当我们再向这个表中运用已经存在的键值插入一条记录,那将会抛出一个主键冲突的错误。当然,我们可能想用新记录的值来覆盖原来的记录值。假如运用传统的做法,必需先运用 DELETE语句删除原先的记录,然后再运用INSERT插入新的记录。而在MySQL中为我们供应了一种新的解决方案,这就是REPLACE语句。运用 REPLACE插
7、入一条记录时,假如不重复,REPLACE就和INSERT的功能一样,假如有重复记录,REPLACE就运用新记录的值来替换原来的记录值。运用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑在同时运用DELETE和INSERT时添加事务等困难操作了。在运用REPLACE时,表中必需有唯一索引,而且这个索引所在的字段不能允许空值,否则REPLACE就和INSERT完全一样的。在执行REPLACE后,系统返回了所影响的行数,假如返回1,说明在表中并没有重复的记录,假如返回2,说明有一条重复记录,系统自动先调用了 DELETE删除这条记录,然后再
8、记录用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;上
9、面曾提到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);假设table1中已经有了3条记录a b c1 1 12 2 23 3 3下面我们运用REPLACE语句向table1中插入一条记录。REPLACE INTO ta
10、ble1(a, b, c) VALUES(1,2,3);返回的结果如下Query OK, 4 rows affected (0.00 sec)在table1中的记录如下a b c1 2 3我们可以看到,REPLACE将原先的3条记录都删除了,然后将(1, 2, 3)插入。二、UPDATEUPDATE的功能是更新表中的数据。这的语法和INSERT的其次种用法相像。必需供应表名以及SET表达式,在后面可以加WHERE以限制更新的记录范围。UPDATE table_anem SET column_name1 = value1, column_name2 = value2, WHERE ;如下面的语句将users表中id等于123的记录的age改为24UPDATE users SET age = 24 WHERE id = 123;同样,可以运用UPDATE更新多个字段的值 UPDATE users SET age = 24, name = Mike WHERE id = 123;12下一页