读书频道 > 网站 > 网页设计 > SQL Server数据库管理与开发实用教程
3.4.1 插入数据
15-11-06    下载编辑
收藏    我要投稿   
本书通过实例循序渐进地讲解了SQL Server 2014的理论知识和基本操作。主要内容包括:数据库的基本原理、SQL Server 2014概述、数据库和表的创建与管理、表中数据的查询、Transact_SQL、索引、视图、游标、事立即去当当网订购

3.4 向表中插入、修改和删除数据

创建表的目的是利用表来存储和管理数据。实现数据存储的前提是向表中添加数据,没有数据的表只是一个空的表结构,没有任何实际意义。向表中添加数据后,可以根据需要修改和删除数据。

3.4.1 插入数据

向表中插入记录使用INSERT语句。向已建好的表中插入记录,可以一次插入一条记录,也可以一次插入多条记录。INSERT语句的语法格式为:

INSERT [ INTO ] table_name [ ( column_name [,…n] ) ]
VALUES ( expression | NULL | DEFAULT [,…n] )

其中:

INSERT:向表中插入数据时使用的关键字。

INTO:可选的关键字,使用INTO关键字可以增强语句的可读性。

table_name:要插入记录的表名。

(column_name[,…n]):指明要插入数据的字段名列表,为可选参数,当给表中所有字段插入值时,该字段名列表可以省略。

VALUES:关键字,该关键字后面指定要插入的数据列表值。

expression:与column_name对应的字段的值,插入字符型和日期型值时要加单引号。

1.插入单行数据

【例3.15】 向Category表中添加3行数据。

INSERT INTO Category(CategoryID,CategoryName,Description)

VALUES(1,'饮料','软饮料、咖啡、茶、啤酒和淡啤酒')

INSERT INTO Category(CategoryID,CategoryName,Description)

VALUES(2,'调味品','香甜可口的果酱、调料、酱汁和调味品')

INSERT INTO Category(CategoryID,CategoryName,Description)

VALUES(3,'点心','甜点、糖和面包')

表Category中有3个字段:CategoryID、CategoryName和Description,现在是对表中的所有字段插入数据,可以省略字段名列表,即上面3条INSERT语句可以简写成以下形式:

INSERT INTO Category

VALUES(1,'饮料','软饮料、咖啡、茶、啤酒和淡啤酒')

INSERT INTO Category

VALUES(2,'调味品','香甜可口的果酱、调料、酱汁和调味品')

INSERT INTO Category

VALUES(3,'点心','甜点、糖和面包')

这时需注意,必须保证VALUES后的各数据项位置同表定义时的顺序一致,否则系统会报错。

在插入数据时,对于允许为空的列,可使用NULL插入空值;对于具有默认值的列,可使用DEFAULT插入默认值。

【例3.16】 sales数据库中有一张销售员表Seller,表中包含SaleID、SaleName等8个字段。其中SaleID、SaleName字段不能为NULL,Sex字段有默认值‘男’,HireDate字段用系统当前日期作默认值,见图3-14。向Seller表中插入一行数据,性别Sex字段的默认值为“男”,HireDate、Address等字段取空值。

INSERT INTO Seller(SaleID,SaleName,Sex,Birthday,HireDate,Address,Telephone,Notes)
VALUES('s11','赵宇飞',DEFAULT,'1974-07-25',NULL,NULL,NULL,NULL)

因为是给表中的所有字段提供值,所以该INSERT语句也可简写成如下形式:

INSERT INTO Seller

VALUES('s11','赵宇飞',DEFAULT,'1974-07-25',NULL,NULL,NULL,NULL)

在插入数据时,也可以只提供部分字段的值,这时列名表不能缺省。例如:

INSERT INTO Seller(SaleID,SaleName,Birthday)
VALUES('s11','赵宇飞','1974-07-25')

Seller表中Sex、HireDate字段带有默认值,系统自动用默认值“男”以及系统当前日期来填充;Address、Telephone以及Notes没有默认值,但允许为NULL,系统自动用NULL值填充。

INSERT语句执行成功后,在“对象资源管理器”窗口中,用鼠标右键单击表Seller,在弹出的快捷菜单中选择“选择前1000行”命令,可以看到插入的数据,如图3-23所示。


 

该INSERT语句如果写成如下形式,即缺省了字段名列表,但是又没有给所有字段提供值,则系统会报错,如图3-24所示。


 

INSERT INTO Seller
VALUES('s11','赵宇飞','1974-07-25')

【例3.17】 sales数据库中有表OrderDetail,表结构如图3-25所示。向OrderDetail表中插入一行数据。


 

向OrderDetail表中插入数据的INSERT语句为:

INSERT INTO OrderDetail
VALUES(10254,'P01003',NULL)

或者

INSERT INTO OrderDetail (OrderID,ProductID)
VALUES(10254,'P01003')

这时,系统自动用NULL值填充Quan-tity字段。如果将INSERT语句写成如下形式,即缺省了字段名列表,但又没有给表中的所有字段提供值,则系统会报错。

INSERT INTO OrderDetail
VALUES(10254,'P01003')    --系统报错

【例3.18】 向sales数据库的Orders表中插入一行数据。Orders表的结构如图3-26所示。其中,OrderID是标识列,OrderDate是带有默认值的列。


 

向Orders表中插入数据的INSERT语句为:

INSERT INTO Orders(CustomerID,SaleID)
VALUES('c01','s05')

这时,没有给字段OrderDate提供值,系统调用getdate()函数获取系统当前日期来填充该字段;而OrderID字段是标识列,其值由系统根据标识增量以及标识种子的值自动提供,用户在插入记录时不必提供该字段的值。

因此,使用INSERT语句时需注意:

不要向标识列中插入值。

若字段不允许为空,且未设置默认值,则必须为该字段提供数据值。

VALUES子句中给出的值的数据类型必须和列的数据类型相对应。

2.插入多行数据

使用INSERT语句也可以同时向数据表中插入多行记录,插入时指定多个值列表,每个值列表之间用逗号分隔开即可。

【例3.19】 sales数据库中有表Customer,表结构如图3-18所示。向Customer表中插入多行数据。

INSERT INTO Customer
VALUES

('c01','三川实业有限公司','刘小姐','大崇明路50号','343567','(030)30074321'),

('c02','东南实业','王先生','承德西路80号','234575','(030)35554729'),

('c03','坦森行贸易','王炫皓','黄台北路780号','985060','(0321)5553932');

语句执行之后的结果如图3-27所示。

还有一种非常有用的方法可以一次向数据表中插入多行记录,那就是在INSERT INTO语句中加入查询子句SELECT,通过SELECT子句从其他表中选出符合条件的数据,再将其插入指定的表中。其语法格式如下:

INSERT [ INTO ] dest_table_name [ ( column_name [,…n] ) ]
SELECT column_name [,…n]
FROM source_table_name
[ WHERE search_conditions ]


 

功能:先从source_table_name表中找出符合条件的所有数据,从中选择所需的列,将其插入dest_table_name表中。

注意

要插入数据的表dest_table_name必须是已经存在的,不能向不存在的表中插入数据。

要插入数据的表dest_table_name中的列和SELECT子句中列的数量、顺序和数据类型都要相同。

【例3.20】 创建Employee表,包含3个字段EmployeeID、EmployeeName和Address。将Seller表中的女销售人员的ID、姓名以及地址插入Employee表中。

CREATE TABLE Employee
(EmployeeID char(3),EmployeeName char(8),Address char(60))
GO
INSERT INTO Employee
SELECT SaleID,SaleName,Address
FROM Seller
WHERE Sex='女'

语句执行的结果如图3-28所示。


 

由结果可以看到,INSERT语句执行后,Employee表中多了2条记录,这两条记录和Seller表中女销售员的信息完全相同。

需注意,在该例中,由于是对Employee表中的所有列插入数据,因此可省略字段名列表。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站