SQL应用与开发:(二)数据操作 · 增

简介:

表是用来存储数据和操作数据的逻辑结构,关系数据库中的所有数据都表现为表格的形式,并且关系数据库是由表、查询等对象组成,而查询等对象又是通过表来显示的。因此,表是数据库的基础。只有创建了表,才能存储数据库记录信息。

当数据库中的表被创建后,必然要将数据添加到表中。这些数据可以是从其他应用程序来的,需要存储到数据库中;也可能是新数据要被添加到新创建的表中,或已存在的表中。

在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的相关知识的总结。





目录
相关文章
|
2天前
|
SQL 关系型数据库 MySQL
|
3天前
|
SQL 关系型数据库 MySQL
|
4天前
|
SQL 数据库
Sql中如何添加数据
Sql中如何添加数据
9 0
|
8天前
|
SQL API 数据库
在Python中获取筛选后的SQL数据行数
在Python中获取筛选后的SQL数据行数
19 1
|
8天前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
14天前
|
SQL 机器学习/深度学习 数据采集
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
|
15天前
|
SQL 安全 PHP
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
|
15天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
|
8月前
|
SQL
Sql去重查询数据
Sql去重查询数据
63 0
|
3月前
|
SQL 关系型数据库 MySQL
mysql 中sql 语句查询今天、昨天、近7天、近30天、一个月内、上一月数据
mysql 中sql 语句查询今天、昨天、近7天、近30天、一个月内、上一月数据