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





目录
相关文章
|
5天前
|
SQL 存储 Oracle
Oracle的PL/SQL定义变量和常量:数据的稳定与灵动
【4月更文挑战第19天】在Oracle PL/SQL中,变量和常量扮演着数据存储的关键角色。变量是可变的“魔术盒”,用于存储程序运行时的动态数据,通过`DECLARE`定义,可在循环和条件判断中体现其灵活性。常量则是不可变的“固定牌”,一旦设定值便保持不变,用`CONSTANT`声明,提供程序稳定性和易维护性。通过 `%TYPE`、`NOT NULL`等特性,可以更高效地管理和控制变量与常量,提升代码质量。善用两者,能优化PL/SQL程序的结构和性能。
|
24天前
|
SQL 存储 关系型数据库
一文搞懂SQL优化——如何高效添加数据
**SQL优化关键点:** 1. **批量插入**提高效率,一次性建议不超过500条。 2. **手动事务**减少开销,多条插入语句用一个事务。 3. **主键顺序插入**避免页分裂,提升性能。 4. **使用`LOAD DATA INFILE`**大批量导入快速。 5. **避免主键乱序**,减少不必要的磁盘操作。 6. **选择合适主键类型**,避免UUID或长主键导致的性能问题。 7. **避免主键修改**,保持索引稳定。 这些技巧能优化数据库操作,提升系统性能。
220 4
一文搞懂SQL优化——如何高效添加数据
|
1月前
|
SQL 数据可视化 数据处理
使用SQL和Python处理Excel文件数据
使用SQL和Python处理Excel文件数据
54 0
|
5天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL游标属性:数据的“导航仪”与“仪表盘”
【4月更文挑战第19天】Oracle PL/SQL游标属性如同车辆的导航仪和仪表盘,提供丰富信息和控制。 `%FOUND`和`%NOTFOUND`指示数据读取状态,`%ROWCOUNT`记录处理行数,`%ISOPEN`显示游标状态。还有`%BULK_ROWCOUNT`和`%BULK_EXCEPTIONS`增强处理灵活性。通过实例展示了如何在数据处理中利用这些属性监控和控制流程,提高效率和准确性。掌握游标属性是提升数据处理能力的关键。
|
5天前
|
SQL Oracle 安全
Oracle的PL/SQL循环语句:数据的“旋转木马”与“无限之旅”
【4月更文挑战第19天】Oracle PL/SQL中的循环语句(LOOP、EXIT WHEN、FOR、WHILE)是处理数据的关键工具,用于批量操作、报表生成和复杂业务逻辑。LOOP提供无限循环,可通过EXIT WHEN设定退出条件;FOR循环适用于固定次数迭代,WHILE循环基于条件判断执行。有效使用循环能提高效率,但需注意避免无限循环和优化大数据处理性能。掌握循环语句,将使数据处理更加高效和便捷。
|
5天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL条件控制:数据的“红绿灯”与“分岔路”
【4月更文挑战第19天】在Oracle PL/SQL中,IF语句与CASE语句扮演着数据流程控制的关键角色。IF语句如红绿灯,依据条件决定程序执行路径;ELSE和ELSIF提供多分支逻辑。CASE语句则是分岔路,按表达式值选择执行路径。这些条件控制语句在数据验证、错误处理和业务逻辑中不可或缺,通过巧妙运用能实现高效程序逻辑,保障数据正确流转,支持企业业务发展。理解并熟练掌握这些语句的使用是成为合格数据管理员的重要一环。
|
5天前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL表达式:数据的魔法公式
【4月更文挑战第19天】探索Oracle PL/SQL表达式,体验数据的魔法公式。表达式结合常量、变量、运算符和函数,用于数据运算与转换。算术运算符处理数值计算,比较运算符执行数据比较,内置函数如TO_CHAR、ROUND和SUBSTR提供多样化操作。条件表达式如CASE和NULLIF实现灵活逻辑判断。广泛应用于SQL查询和PL/SQL程序,助你驾驭数据,揭示其背后的规律与秘密,成为数据魔法师。
|
12天前
|
SQL 人工智能 自然语言处理
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
NL2SQL进阶系列(2):DAIL-SQL、DB-GPT开源应用实践详解Text2SQL
|
27天前
|
SQL 关系型数据库 MySQL
SQL INSERT INTO order_record SELECT * FROM 从一张表查出数据插入到另一张表
SQL INSERT INTO order_record SELECT * FROM 从一张表查出数据插入到另一张表
14 0
|
1月前
|
SQL 安全 数据库
第三章用sql语句操作数据
第三章用sql语句操作数据
10 0