一个数据库能否保持信息的正确性、及时性、很大程度上依赖于数据库的更新功能的强弱与实时。数据库的更新包括插入、删除、修改(也称为更新)三种操作。本章将分别讲述如何使用这些操作,以便有效地更新数据库。
在SQL Server 中可以在Enterprise Manager 中查看数据库表的数据时添加数据,但这种方式不能应付数据的大量插入,需要使用INSERT 语句来解决这个问题。
11.1.1 INSERT 语法
数据库的信息时常需要改变用户需要添加数据,INSERT 语句提供了此功能。INSERT语句通常有两种形式。一种是插入一条记录;另一种是插入子查询的结果。后者可以一次插入多条记录。
注意:当插入VARBINARY类型的数据时,其尾部的“0”将被去掉。
当插入VARCHAR或TEXT类型的数据时,其后的空格将被去掉,如果插入一个只含空格的字符串,则会被认为插入了一个长度为零的字符串。
IDENTITY列不能指定数据,在VALUES列表中应跳过此列。
对字符类型的列,当插入数据,特别是插入字符串中含有数字字符以外的字符时,最好用引号将其括起来,否则容易出错。
column_list中列的顺序可以与表结构中的顺序不同,但VALUES中的值必须与COLUMN_list中的列相对应。
11.1.2 插入单行
以下举例说明如何插入单行数据:
例11-1: 插入数据到订购商信息表中。
use pangu
insert firms
(firm_id, f_name, f_intro)
values(10070001, 'SQL', '制作数据库软件的公司')
运行结果如下:
(1 row(s) affected)
例11-2: 插入数据到订购商信息表中。
use pangu
insert firms
/* 当表中所有的列均被指定时可以省略column_list */
values(10070001, 'SQL', '制作数据库软件的公司', 100700010007, '00-12345678', 234325, 'chengdu')
11.1.3 插入子查询结果
子查询不仅可以嵌套在SELECT 语句中,用以构造父查询的条件,也可以嵌套在
INSERT 语句中,用以生成要插入的数据。插入子查询的INSERT 语句语法如下:
INSERT [INTO]
{ table_name WITH ( <table_hint_limited> [...n])
| view_name
| rowset_function_limited }
{ [(column_list)]
subquery }
其功能是以批量插入,一次将子查询的结果全部插入指定表中。
11.1.4 用存储过程插入数据
在INSERT 语句中可以通过执行存储过程来取得要插入的数据。所插入的数据是存储
过程中SELECT 语句所检索的结果集。使用存储过程插入数据的语法如下:
INSERT [INTO]
{ table_name WITH ( <table_hint_limited> [...n])
| view_name
| rowset_function_limited }
{ [(column_list)]
EXECUTE procedure
其中procedure 既可以是一个已经存在的系统存储过程或用户自定义的存储过程,也
可以在INSERT 语句中直接编写存储过程。
查看全套"MS SQL入门基础教程"