中国唯一一家专业只做ARACLE认证和BDA实训的甲骨文金牌合作企业

网络授课

技术沙龙

MySQL培训教程:MySQL修改数据命令

MySQL培训教程:MySQL修改数据命令,你可以使用几个不同的方法修改表中的数据,最基本的、可能也是最常用的方法就是使用UPDATE语句了。使用这个语句,你能够修改所有的行或是基于WHERE子句的指定记录中的数据。回顾一下以前显示的查询结果,我们可以看到GrahamGreene的作品BrightonRock的版权年份是1937年。这是错误的,实际年份应该是1938年。我们将输入下面的SQL语句,来修改更新这个错误信息:

  1. UPDATE books  
  2. SET pub_year = '1938' 
  3. WHERE book_id = '2';  
  4.  
  5. Query OK, 1 row affected (0.00 sec)  
  6. Rows matched: 1 Changed: 1 Warnings: 0 

首先,我们要声明即将被更新的表名。接下来我们要在SET关键字后面指定将要修改的列以及相应的新值。如果想修改的列不止一列,那么应提供一个由逗号分开的列表,列表中每个列后跟随着等号操作符以及各自的新值。SET只需输入一次即可。

前面的SQL语句中通过WHERE子句指定必需的匹配条件,限定了将要更新的行。在这种情况下,限定条件是针对于不同列的特定值的,因此只修改了一行数据。查询结果显示只有一行数据受影响,一行记录符合条件,一行记录被修改,没有任何问题引发警告信息。

有时,在向表中插入数据时,如果表中已存在此数据,则会引发重复行的问题。例如,假设我们想执行SQL语句,将几本书的相关数据添加到books表中,而其中一本书的数据已存在于表中。如果我们使用INSERT语句,重复行会引发拒绝添加的警告信息。为防止这种情况发生,可以使用REPLACE语句,该语句向表中插入一行新数据,并可以用新数据替代已存在的数据。

从MySQL的角度看,一般情况下,只有在列被定义成惟一值的情况下才会发生重复数据的错误。由于book_id列的值是自动分配的,我们添加记录时不用指定它的值,所以不可能发生重复值的现象。在图书交易中,每本书的唯一性是根据它的ISBN码来区分的,ISBN码就是书后面的条形码。为了确保不会有ISBN码相同的行,我们将再次修改books表,将ISBN列设置成UNIQUE列,该列的值必须是唯一的。使用此种方式,我们就不会在不经意中多次为一本书添加数据了:

  1. ALTER TABLE books  
  2. CHANGE COLUMN isbn isbn VARCHAR(20) UNIQUE

现在我们已经准备好添加更多图书的数据,而不必担心由于ISBN码重复而带来的重复行问题。下面的例子中,我们试图将GrahamGreene的二个作品数据添加到books表中,而其中一本已经存在于表中:

  1. REPLACE INTO books  
  2. (title, author_id, isbn, genre, pub_year)  
  3. VALUES('Brighton Rock',1,'0099478471','novel','1938'),  
  4. ('The Quiet American',1,'0099478393','novel','1955'); 

REPLACE语句与INSERT语句的语法是相同的。注意,我们在一条语句中添加了二行记录。如果想使用INSERT语句添加更多的记录,使用的语法和上面的相同。如上面显示的,每行数据都列在圆括号中,并且值与值间用逗号分隔。在上例中,表中已存在ISBN码为0099478471的图书数据(例如:BrightonRock),因此新数据会替代表中已存在的数据。目前表中没有Greene的作品TheQuietAmerican的记录,因此,该数据将被添加到表中。

CUUG 优技培训

中国Oracle培训领航专家

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。

金牌讲师

行业资深实战专家 让学习就像在就业
展开

实操环境

让每一个DBA课程学员有真正的实操练习

让每一个DBA课程学员有真正的实操练习

让每一个DBA课程学员有真正的实操练习

让每一个DBA课程学员有真正的实操练习

院校合作

学校新闻

行业新闻

在线预约 抢先报名 获取课程排期

请输入您的手机号

申请试听
版权所有:北京神脑资讯科技有限公司
地址:北京市海淀区紫竹花园4号楼D座703
全国免费咨询电话:400-0909-964
电话:010-59426307 ,邮政编码:100089
E-mail:cuug_bj@cuug.com
拨打电话
在线咨询
首页