数据库系统原理:数据插入

yumo6664周前 (04-05)技术文章17

SQL命令包括数据定义、查询、操纵和控制四大类。SQL数据操纵包括数据插入、数据删除和数据修改。数据操作即SQL的数据更新命令。也就是说要完成向表中添加若干行数据、修改表中的数据和删除表中的若干行数据这样的功能。

首先学习数据插入命令的用法。

SQL的数据插入命令有两种形式:一种是用Values子句向表中插入一行数据;一种是用子查询向表中插入多行数据。

一、用Values子句向表中插入数据(一次插入一行数据)

语法:

Insert into<基本表名>[(列名表)]

Values(元组值);

将VALUES后面的元组值依次插入到基本表中,即将元组值依次赋值给表名后面给出的各个列。

以学生表S(sno,sname,age,sex)为例。

例1:Insert into S(sno,sname,age)

Values('s1’,'李涛’,19);

例1的插入命令是将“'s1’,'李涛’,19”这三个数,依次地赋给S表中的学号列、姓名列和年龄列。

可以看到S表实际是有四个属性列的。那么如果没有给性别列赋值的话,性别列将自动置空。这也要求当建S表时,性别列是允许为空的,否则就会出错。

例2:Insert into S

Values('s1','李涛’,19,'男’);

例2的插入命令是将“'s1’,'李涛’,19,'男’”这四个数,依次地赋给S表中的各个列。但是S表后面没有给出这四个列的名字,意味着这四个属性值将依次地赋给建表时S表的四个列,也就是说“s1”赋给学号、 “李涛”赋给姓名、 “19”赋给年龄、 “男”赋给性别,与建表时这四个列是顺序的一致的。这样的话,可以省略表名后面各个列的名字。

二、用子查询向表中插入数据(一次可插入多行数据)

语法:

Insert into<表名>(<列名表>)

Select 查询语句

可以将子查询的结果插入到另一个已知表中。

子查询的结果是一个集合,将集合的数据插入到“into”后面的表名,依次地赋给表名后面的各个属性列名。

例3:把成绩不及格的学生的学号、姓名、课程号和成绩存入另一个已知基本表NoPass(sno,sname,cno,grade)中。

Insert into NoPass

Select S.sno,sname ,cno, grade

From S,SC

Where S.sno =SC.sno and grade <60;

在例3中,首先要把成绩不及格的学生的学号、姓名、课程号和成绩这四列的数值获取出来,因此需要一个子查询。

因为姓名列只能在S表中出现,而成绩列又只能在SC表中出现,所以子查询中是一个连接查询,S表和SC表做连接查询,连接条件是“S表的学号等于SC表的学号”,选择条件是“成绩小于60” ,获得的就是成绩不及格的学生的学号、姓名、课程号和成绩这四列信息。(S表和SC表的共有属性需要前面加表名。)

需要将获得的结果插入到一个已知基本表NoPass,这就要求已知基本表NoPass事先已经建成了,CREATE语句已经创建好基本表NoPass了、基本表NoPass已经存在,才能够用子查询向表中插入数据的方式插入数据。假设该表不存在,例3的SQL语句也是错误的语句。

三、总结

SQL的数据插入是用INSERT命令来实现的,它既可以一次插入一行数据,也可以使用子查询插入多行数据。

需要注意的是,在数据插入的时候,DBMS会控制它的操作使之符合完整性约束条件。无论增加、删除、修改,只要是更新操作,DBMS就会有一个控制的策略。

例如向子表SC插入数据时,当用户执行:

Insert into SC Values( 's1'' c1',90)

在插入之前,系统会检查主表S和主表C,因为在SC表创建的时候,定义了它的学号和课程号是外键,要引用基本表S和基本表C的取值;因此,当系统检查若表S中没有学号为s1的学生,或者表C中没有课程号为c1的课程,则系统默认的处理策略是拒绝用户插入。

相关文章

数据库系统原理:数据独立性

数据库系统的三级模式和两级映像使数据具有独立性。数据库系统三个抽象级间通过两级映像进行相互转换,使得数据库的三级模式形成一个统一整体,从而保证了数据的独立性。数据独立性是指应用程序与数据间相互独立,不...

数据库的存储原理

1. 数据存取在数据库管理系统中,数据的存取过程为:应用程序通过 DML 向 DBMS 发出存取请求,如 SELECT 语句;对命令进行语法检查,正确后检查语义和用户权限(通过数据字典 DD),并决定...

DeepSeek本地RAG知识库(17):向量数据库原理讲解(小白也能懂)

大家好!我是程序员寒山。近日很多小伙伴问,为什么要用向量数据库?它到底是怎么存储数据的?今天就给大家揭秘一下向量数据库,看看它有什么神奇的地方?一、什么是向量数据?——菜谱变"坐标"说向量数据库前,首...

面试官:说一下数据库事务的实现原理

#数据库事务的实现原理是什么样的?#什么是数据库事务?数据库事务的四大特性?数据库事务隔离级别?数据库事务的实现原理?一、什么是数据库事务?数据库事务是指作为一个不可分割的操作单元执行的一系列数据库操...

数据库加密技术原理与实践

1、数据库加密概述数据库加密是指对存储在数据库中的敏感数据进行编码处理的过程,目的是防止未经授权的访问和数据泄露。加密后的数据即使被未授权的第三方获取,也无法理解其原始含义,从而保护数据的机密性数据库...