注意
为什么要用TRUNCATE TABLE 语句代替DELETE语句?当你使用TRUNCATE TABLE语句时, 记录的删除是不作记录的 。 也就是说, 这意味着TRUNCATE TABLE 要比DELETE快得多 。
更新记录
要修改表中已经存在的一条或多条记录, 应使用SQL UPDATE语句 。 同DELETE语句一样, UPDATE语句可以使用WHERE子句来选择更新特定的记录 。 请看这个例子:
UPDATE mytable SET first_column=’Updated!’ WHERE second_column=’Update Me!’
这个UPDATE 语句更新所有second_column字段的值为’Update Me!’的记录 。 对所有被选中的记录, 字段first_column的值被置为’Updated!’ 。
下面是UPDATE语句的完整句法:
UPDATE {table_name|view_name} SET [{table_name|view_name}]
{column_list|variable_list|variable_and_column_list}
[,{column_list2|variable_list2|variable_and_column_list2}…
[,{column_listN|variable_listN|variable_and_column_listN}]]
[WHERE clause]
注意
你可以对文本型字段使用UPDATE语句 。 但是, 如果你需要更新很长的字符串, 应使用UPDATETEXT语句 。 这部分内容对本书来说太高级了, 因此不加讨论 。 要了解更多的信息, 请参考Microsoft SQL Sever 的文档 。
如果你不提供WHERE子句, 表中的所有记录都将被更新 。 有时这是有用的 。 例如, 如果你想把表titles中的所有书的价格加倍, 你可以使用如下的UPDATE 语句:
你也可以同时更新多个字段 。 例如, 下面的UPDATE语句同时更新first_column,second_column,和third_column这三个字段:
UPDATE mytable SET first_column=’Updated!’
Second_column=’Updated!’
Third_column=’Updated!’
WHERE first_column=’Update Me1’
技巧
SQL忽略语句中多余的空格 。 你可以把SQL语句写成任何你最容易读的格式 。
用SELECT 创建记录和表
你也许已经注意到, INSERT 语句与DELETE语句和UPDATE语句有一点不同, 它一次只操作一个记录 。 然而, 有一个方法可以使INSERT 语句一次添加多个记录 。 要作到这一点, 你需要把INSERT 语句与SELECT 语句结合起来, 象这样:
INSERT mytable (first_column,second_column)
SELECT another_first,another_second
FROM anothertable
WHERE another_first=’Copy Me!’
这个语句从anothertable拷贝记录到mytable.只有表anothertable中字段another_first的值为’Copy Me!’的记录才被拷贝 。
当为一个表中的记录建立备份时, 这种形式的INSERT 语句是非常有用的 。 在删除一个表中的记录之前, 你可以先用这种方法把它们拷贝到另一个表中 。
如果你需要拷贝整个表, 你可以使用SELECT INTO 语句 。 例如, 下面的语句创建了一个名为newtable的新表, 该表包含表mytable的所有数据:
SELECT * INTO newtable FROM mytable
你也可以指定只有特定的字段被用来创建这个新表 。 要做到这一点, 只需在字段列表中指定你想要拷贝的字段 。 另外, 你可以使用WHERE 子句来限制拷贝到新表中的记录 。 下面的例子只拷贝字段second_columnd的值等于’Copy Me!’的记录的first_column字段 。
SELECT first_column INTO newtable
FROM mytable
WHERE second_column=’Copy Me!’
使用SQL修改已经建立的表是很困难的 。 例如, 如果你向一个表中添加了一个字段, 没有容易的办法来去除它 。 另外, 如果你不小心把一个字段的数据类型给错了, 你将没有办法改变它 。 但是, 使用本节中讲述的SQL语句, 你可以绕过这两个问题 。
例如, 假设你想从一个表中删除一个字段 。 使用SELECT INTO 语句, 你可以创建该表的一个拷贝, 但不包含要删除的字段 。 这使你既删除了该字段, 又保留了不想删除的数据 。
推荐阅读
- 学习知识|银行贷款利息怎么算,个人借款还款协议书
- 娱乐知识|梦溪笔谈作者是谁,《梦溪笔谈》是谁写的
- 娱乐知识|张大大是谁,为什么很多人喷张大大
- 娱乐知识|三国演义的作者是谁,三国演义作者是陈寿吗
- 娱乐知识|你是谁,歌曲《你是谁》
- 娱乐知识|望梅止渴的主人公是谁,梦笔生花的主人公是谁?
- 娱乐知识|负荆请罪的主人公是谁,囊萤映雪的主人公是谁?
- 娱乐知识|胎记是怎么得的,胎记什么时候去掉是最佳年龄
- 娱乐知识|白夜追凶最终boss是谁,白夜追凶2原版小说
- 历史地理知识|怎么查邮政编码,邮编363000是哪里