表是用来存储数据和操作数据的逻辑结构,关系数据库中的所有数据都表现为表格的形式,并且关系数据库是由表、查询等对象组成,而查询等对象又是通过表来显示的。因此,表是数据库的基础。只有创建了表,才能存储数据库记录信息。
当数据库中的表被创建后,必然要将数据添加到表中。这些数据可以是从其他应用程序来的,需要存储到数据库中;也可能是新数据要被添加到新创建的表中,或已存在的表中。
在SQL语句中,最常用的向表中添加的数据的方法是使用INSERT语句。基本的INSERT语句的语法相当的简单,下面列出了INSERT语法的结构:
INSERT INTO <table_name>
[(<column_name>[{,<column_name>}...])]
VALUES(<value>[{,<value>}...])
其中,尖括号“<>”为必选项;方括号“[ ]”为可选项;大括号“{ }”为可重复出现选项。
下面具体 说明语句中个参数的含义:
INSERT INTO子句:用于指定要向其中添加数据的表,表明跟在后面。
column_name :要修改数据的表中的列名,可以指定一列或多列,所有这些列都必须放在圆括号“()”中。如果要指定多个列,则必须用逗号隔开。如果制定了列名,那么在目标表中所有未指定的列必须支持空值或者默认值。
VALUES子句:提供要向表中插入的值。这些值也必须放在圆括号内;如果指定的值为多个,这些值之间必须用逗号隔开。
下面给出一些例子,这些实例都是基于“销售管理系统”的。
1.例如项数据表“业务员信息”插入一行:
INSERT INTO 业务员信息
(业务员编号,业务员姓名,电话,家庭住址,备注)
VALUES(1010,'赵光亮','0212278099','教师小区','为人乐观,工作认真')
在SQL Sever查询分析器中执行后,返回结果便是,先前加入的一行数据。
2.省略INSERT INTO后的列名
从INSERT语句的语法结构中可以看出,INSERT INTO 子句后可不带列名。如果在INSERT INTO子句中只包括表名,而没有指定任何一列,则SQL默认为向表中所有列赋值。这种情况下,VALUES子句中所提供的值得次序、数量必须与列表中定义的次序、数量相同。
下面通过具体的实例来说明不指定列名的INSERT语句的用法。例如,向数据库“销售管理系统”中,添加一个人新业务员的信息。该信息业务员的信息如下:
业务员编号 业务员姓名 家庭住址 电话号码 备注
1012 黄枝 南苑新区 13058239908 工作热情积极向上
在SQL Server的查询分析器中输入下属语句:
INSERT INTO 业务员信息
VALUES(1012,'黄枝','南苑新区','13058239908','工作热情积极向上')
在查询分析器中执行后,返回结果便是添加的一行数据。
若在VALUES子句中省略“备注”列的值,尽管该列允许为NULL值,但SQL会返回一个报错信息其正确做法是,在指定的列上指定一个NULL值,如下所示:
INSERT INTO
VALUES(1013,'黄枝','南苑新区',' 13058239908',NULL)
如果备注列不允许为NULL值,那么VALUES子句就必须为其提供一个值。
3.使用SELECT语句插入值
SQL提供了方便而灵活的数据库操作形式,SELECT语句代替VALUES子句,可把一个表中的大量数据插入到另一个表中。使用SELECT语句时,必须保证SELECT语句返回值得数量、次序与所需值的数量、次序相同,并且这些添加的数据要符合目标上的约束限制。
例如,创建一个临时的业务员信息表,该表只包含三个列,分别为“业务员姓名”、“家庭住址”、“联系电话”。该表用于保存数据库“销售管理系统”中“业务员信息”表的简明数据。
创建临时表:
CREATE TABLE 业务员简明信息 注:创建表需要使用CREATE TABLE 格式。
(姓名 nVarchar(50) not null,
家庭住址 nVarchar(50),
联系电话 char(15)),
该表中的“姓名”、“家庭住址”、“联系电话”等列与表“业务员信息”中相应列具有相同的数据类型。因此,可直接从“业务员信息”中提取值插入到新创建表的对应列。
向临时表插入数据:
INSERT INTO 业务员简明信息(姓名,家庭住址,联系电话)
SELECT 业务员姓名,家庭住址,联系电话
FROM 业务员信息
执行改INSERT 语句后,业务员信息简明信息的内容便是从业务员信息表的复制的数据。
在INSERT 语句中使用SELECT语句也可以包括WHERE子句。例如,在数据库“销售管理系统”中,根据“供应商信息”表,从中提取“供应商地址”为北京的信息并保存。
首先创建一个临时表:
CREATE TABLE 北京供应商
(供应商名称 nVarchar(20),
所在城市 nVarchar(20),
联系人姓名 nVarchar(20),
联系电话 char(15))
然后,向临时表中插入符合条件的行:
INSERT INTO 北京供应商
SELECT 供应商名称,供应商所在城市,联系人姓名,联系电话
FROM 供应商信息
WHERE 供应商所在城市 like '北京%'
//若修改为 WHERE 供应商所在城市='南京市' or 供应商所在城市='上海市'
结果便是发生相应的变化,提取南京市或者上海市的供应商信息。
该语句执行后,在新创建的“北京供应商”中添加若干行数据,而不是上例中的全部数据。只要“供应商所在城市”列的值中包含“北京”字样,就把该行相关信息提取出来,然后存放到“北京供应商”表中。
4.SELECT语句在INSERT语句中的嵌套使用
在数据库“销售管理系统”中,单独列出业务员“杨凌”所联系的客户,然后,将该业务员所属的客户信息保存到一个临时表中。
首先创建一个临时表:
CREATE TABLE 杨凌的业务
(客户姓名 nVarchar(20) not null,
客户地址 nVarchar(20) not null ,
联系电话 char(15) not null)
查询相关的数据表,并把符合条件的行插入到新表中。
INSERT INTO 杨凌的业务
SELECT 客户姓名,客户地址,联系电话
FROM 客户信息
WHERE 所属业务员编号 IN
(SELECT 业务员编号
FROM 业务员信息
WHERE 业务员姓名='杨凌')
学习小结:在学习数据操作这几章的时候,感觉就是在玩数据,而这个“玩法”便是我们要遵循的数据操作的规则,算起来这个 增操作 还是蛮好理解的,亲自去做一做这方面的习题,两三道足以,用起来也很是顺手。
在接下来的博客中,还会有数据操作的 删 改 查 相应的操作,以及更多的关于SQL的相关知识的总结。