MySQL培训教程:MySQL修改数据命令
最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!
我要咨询MySQL培训教程:MySQL修改数据命令,你可以使用几个不同的方法修改表中的数据,最基本的、可能也是最常用的方法就是使用UPDATE语句了。使用这个语句,你能够修改所有的行或是基于WHERE子句的指定记录中的数据。回顾一下以前显示的查询结果,我们可以看到GrahamGreene的作品BrightonRock的版权年份是1937年。这是错误的,实际年份应该是1938年。我们将输入下面的SQL语句,来修改更新这个错误信息:
- UPDATE books
- SET pub_year = '1938'
- WHERE book_id = '2';
- Query OK, 1 row affected (0.00 sec)
- Rows matched: 1 Changed: 1 Warnings: 0
首先,我们要声明即将被更新的表名。接下来我们要在SET关键字后面指定将要修改的列以及相应的新值。如果想修改的列不止一列,那么应提供一个由逗号分开的列表,列表中每个列后跟随着等号操作符以及各自的新值。SET只需输入一次即可。
前面的SQL语句中通过WHERE子句指定必需的匹配条件,限定了将要更新的行。在这种情况下,限定条件是针对于不同列的特定值的,因此只修改了一行数据。查询结果显示只有一行数据受影响,一行记录符合条件,一行记录被修改,没有任何问题引发警告信息。
有时,在向表中插入数据时,如果表中已存在此数据,则会引发重复行的问题。例如,假设我们想执行SQL语句,将几本书的相关数据添加到books表中,而其中一本书的数据已存在于表中。如果我们使用INSERT语句,重复行会引发拒绝添加的警告信息。为防止这种情况发生,可以使用REPLACE语句,该语句向表中插入一行新数据,并可以用新数据替代已存在的数据。
从MySQL的角度看,一般情况下,只有在列被定义成惟一值的情况下才会发生重复数据的错误。由于book_id列的值是自动分配的,我们添加记录时不用指定它的值,所以不可能发生重复值的现象。在图书交易中,每本书的唯一性是根据它的ISBN码来区分的,ISBN码就是书后面的条形码。为了确保不会有ISBN码相同的行,我们将再次修改books表,将ISBN列设置成UNIQUE列,该列的值必须是唯一的。使用此种方式,我们就不会在不经意中多次为一本书添加数据了:
- ALTER TABLE books
- CHANGE COLUMN isbn isbn VARCHAR(20) UNIQUE;
现在我们已经准备好添加更多图书的数据,而不必担心由于ISBN码重复而带来的重复行问题。下面的例子中,我们试图将GrahamGreene的二个作品数据添加到books表中,而其中一本已经存在于表中:
- REPLACE INTO books
- (title, author_id, isbn, genre, pub_year)
- VALUES('Brighton Rock',1,'0099478471','novel','1938'),
- ('The Quiet American',1,'0099478393','novel','1955');
REPLACE语句与INSERT语句的语法是相同的。注意,我们在一条语句中添加了二行记录。如果想使用INSERT语句添加更多的记录,使用的语法和上面的相同。如上面显示的,每行数据都列在圆括号中,并且值与值间用逗号分隔。在上例中,表中已存在ISBN码为0099478471的图书数据(例如:BrightonRock),因此新数据会替代表中已存在的数据。目前表中没有Greene的作品TheQuietAmerican的记录,因此,该数据将被添加到表中。