在A**课程中S1中的使用SQL SERVER查询和管理数据一书中,主要介绍以下几种插入数据的方法
一、使用Insert语句插入单行数据
语法:Insert [into] 表名[列名] values(值,值)
注意:以上语句,into关键字可以省略,列名可以省略,但若有多个列名,以逗号(,)分隔,多个值也以逗号(,)分隔。表名必须要填写。
例:Insert into Hamber(Id,Name,Score) values(1,'Hamber',100)
注意:(1)不能违反某列的非空约束,每次要插入一整行数据,不能插入半行或者几列数据.
(2)数据值的个数要与列数相同,插入的数据要与每列的数据类型相匹配.
(3)Insert语句不能为标识列插入数据
(4)对于字符类型的列,其数据最好要被单引号括起来。
(5)虽然可以不指定列名,但最好将列名填写完整
(6)若在设计表时,指定某列非空,必须为该列赋值.
(7)插入的每一列数据必须符合该列的检查约束
(8)在设置了某列的默认值后,并且还指定了列名的话,如何使用其默认值为该列
赋值。就是使用Default关键字。注意,该用法只能在Insert Into Values()语句中
使用。
二、一次插入多行数据 包含三种方法
<1>使用Insert Select语句将现有表中的数据添加到新表中
Insert into Table1 (姓名,地址,电子邮件)
Select Sname,Saddress,Semail
From Table2
注意:从Table2中查询得到的列的个数,顺序,数据类型必须与要插入Table1中的一致.
并且Table1中要含有姓名、地址、电子邮件三列.
并且Table1要预先创建好!
<2>使用Select Into 语句将现有表中的数据添加到新表中
与上面的Insert Select语句类似,Select Into 语句也是从表中查询数据插入到新表中的。
所不同的是,这个新表是执行查询语句的时候创建的,不能够预先存在的。
例:Select Sname,Saddress,Semail
into Table2
From Table1
按照以上方式,向新表中插入数据时,怎么样才能插入标识列呢
因为标识列的数据是不允许指定的,因此我们可以创建一个标识列
语法 :
Select Identity(数据类型,标识种子,标识增量) AS 列名
INTO 新表
From 原始表
这样,将以上语法和以上例子结合在一起,就可以向新表中添加标识列了.
<3>通过Union关键字合并数据进行插入
Union语句用于将两个不同的数据或查询结果组合成一个新的结果集
当向表中重复添加多行数据时,可以使用Select Union语句来简化操作.
例:
Insert into Table1(Sname,Saddress,Semail)
Select 'hamber','中国北京','[email protected]' Union
Select '李彦宏','中国北京','[email protected]' Union
Select '史玉柱','中国上海','脑白金@.com'
这样的效果和上面的Insert Select语句是类似的,只不过多行数据是手写的,然后通过Union关键字合并组成多行数据.