数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

SQL实战新手入门:更新数据-UPDATE语句(1)


发布日期:2023年12月13日
 
SQL实战新手入门:更新数据-UPDATE语句(1)

更新数据UPDATE语句(

电子数据存储的一个主要优势就是它的灵活性没有任何数据刻在石头上写在羊皮卷甚至纸上根据需要可以创建删除或修改电子化存储的数据到目前为止已经学习了如何插入数据或者选取数据以及如何删除数据UPDATE语句可以修改列中已有的值从而对数据进行修改如果突然发现某本图书录入的页数是错误的可以运行下面的语句进行更正

UPDATE myLibrary SET pages = ;

由于该列的数据类型是数值类型(INTEGER)因此无须将数值用单引号括起来(该规则适用于所有RDBMS中的全部数值类型)

上面这个UPDATE语句的问题在于数值将会更新表中每一条记录的PAGES列显然这并不是我们想要的结果与DELETE语句一样在修改数据时还可以对要修改的数据进行筛选只更新那些需要更新的记录而保持其他记录不变筛选记录是WHERE子句的功能要筛选记录同样需要某个可以唯一标识一条记录的标志

UPDATE myLibrary SET pages =

WHERE isbn=;

如果要更新记录中的多个列只需要在UPDATE语句中添加这些要更新的列并以逗号进行分隔

UPDATE myLibrary SET

pages =

title = SQL Bible nd Edition

WHERE isbn=;

UPDATE操作以这样一种方式来实现允许使用已有的数据作为筛选标准例如在同一个查询中可以通过图书的名称来查找该图书并修改图书的名称

UPDATE myLibrary SET title = SQL Bible nd Edition

WHERE title = SQL Bible;

当然在修改了数据之后如果使用相同的WHERE子句和筛选条件上面这个查询将无法再次查找到相同的记录当使用已有数据作为新值的一部分并用新值更新记录时相同的原则也适用例如要在SQL Bible之后添加限定符nd Edition时无须提供整个字符串只需要使用原来的列值并提供nd Edition字符串作为第二部分然后使用一个连接操作符将其连接起来

UPDATE myLibrary SET titletitle = title + nd Edition

WHERE title = SQL Bible;

上面的语法使用加号(+)作为字符串的连接操作符但这仅在Microsoft SQL Server中有效Oracle和PostgreSQL使用||操作符Microsoft Access使用&操作符IBM DBMySQL和HSQLDB则使用SQL函数CONCAT来连接字符串关于SQL操作符和SQL函数的更多内容请参考第章的内容

到目前为止的例子都隐含了一层含义即列都是使用与列具有相同数据类型的值进行更新用字符串更新字符串用数值更新数值当混合了数据类型并试图用其插入或更新表时会发生什么样的情况呢?答案还是视情况而定某些RDBMS无法接受不兼容的数据并抛出一个错误消息另外一些RDBMS则在兼容性的范围内尽最大的努力将数据转换为与列的数据类型相兼容的数据后面这种方式被称为隐式数据类型转换章将讨论其利弊

试一试使用ALTER语句修改表结构使用UPDATE语句更新数据

为了练习一下上面介绍的情形请在MYLIBRARY表中添加一个数值列并向该列中添加数据下面的练习使用Microsoft SQL Server 数据库

首先确保准备工作已经到达可以输入和执行SQL命令的阶段重复本章第一个试一试练习中步骤()到步骤()的操作像练习和练习一样重新创建并填充MYLIBRARY表然后执行下面这些指令

) 要在MYLIBRARY表中添加一个新列可输入下面的SQL命令

USE library;

ALTER TABLE myLibrary

ADD book_id INTEGER;

) 单击上方工具栏中的Execute按钮如图所示

) 注意观察下方窗格的Messages选项卡中的消息Command(s) completed successfully

) 查询MYLIBRARY表中的数据确保新添加的BOOK_ID列出现在数据集的最后一列该列的值为空(NULL值)如图所示

返回目录SQL实战新手入门

编辑推荐

Oracle索引技术

高性能MySQL

数据仓库与数据挖掘培训视频教程

上一篇:SQL实战新手入门:删除数据-DELETE语句(2)

下一篇:SQL实战新手入门:更新数据-UPDATE语句(2)