版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5.3 SQL的数据更新功能,数据更新是指对数据的操作功能,主要包括数据的插入、更新、删除三个方面的操作。 5.3.1 数据插入 SQL的数据插入语句有两种使用形式:一种是使用常量,一次插入一条记录;另一种是插入子查询的结果,一次插入多条记录。 1、使用常量插入一条记录 2、在表中插入子查询的结果,1、使用常量插入一条记录,语句格式: INSERT INTO (,) VALUES(常量1), 常量2,) 语句功能:将新记录插入指定表中。 说 明: (1)新记录的值为的值。 (2)如果INTO子句中有属性列选项,则没有出现在子句中的属性将取空值。 (3)如果INTO子句中没有指明任何列名,则新插
2、入的记录必须在每个列上均有值。,例如:将一新生记录(学号:20050110,姓名: 张亮,年龄: 20,所在系: 数学)插入到学生表中。 INSERT INTO 学生 VALUES(20050110, 张亮, 20, 数学); 例如:在选课表中插入一条记录(学号: 20030211,课程号: C10,成绩不详)。 INSERT INTO 选课 VALUES(20030211, C10);,2、在表中插入子查询的结果,语句格式:INSERT INTO (,); 例如:求每个系学生的平均年龄,并把结果存入数据表中。 CREATE TABLE 系平均年龄(系名 CHAR(20),平均年龄 SMALL
3、INT); INSERT INTO 系平均年龄 SELECT 所在系,AVG(ALL 年龄) FROM 学生 GROUP BY 所在系;,5.3.2 数据更新,语句格式:UPDATE表名 SET=,= WHERE ; 语句功能:将表中符合条件的记录的某些列用表达式的值替代。 说 明: (1)指定要更新数据的记录所在的表名及该表所在的数据库名。 (2)SET=指定被更新的字段及该字段的新值。 (3)WHERE条件表达式指明将要更新符合条件表达式的记录。并且一次可以更新多个字段;如果不使用WHERE子句,则更新全部记录。,例如:将学生表中全部学生的年龄加上2岁。 UPDATE 学生 SET 年龄=
4、年龄+2 例如:将选课表中的VB课程的成绩乘以1.4。 UPDATE 选课 SET 成绩成绩*1.4 WHERE 课程号=(SELECT 课程号 FROM 课程 WHERE 课程名= VB);,5.3.3 数据删除,语句格式:DELETE FROM表名 WHERE 条件表达式1; 说 明: (1)指定要删除数据的表名。 (2)WHERE选项指明只对满足条件的记录删除。如果不使用WHERE子句,则删除该表中的全部记录。 例如:删除数学系学生的选课记录。 DELETE FROM 选课 WHERE 学号IN (SELECT 学号 FROM 学生 WHERE 所在系=数学);,5.4 SQL的数据查询
5、功能,5.4.1 SELECT语句介绍 1、SELECT语句格式 SELECTALL|DISTINCT FORM WHERE GROUP BY ,HAVING ORDER BYASC|DESC,ASC |DESC 语句功能:从指定的表中选择满足条件的记录。,SELECT-SQL命令的格式包括三个基本子句:SELECT子句、FROM子句、WHERE子句,还包括操作子句:ORDER子句、GROUP子句以及其他一些选项。 说 明: (1)SELECT子句用来指定查询结果中的目标列,目标列组用一个*号来表示时,指所有的字段。 (2)ALL选项:表示选出的记录中包括重复记录,这是缺省值;DISTINCT
6、则表示选出的记录中不包括重复记录。 (3)FROM子句用于指明查询的数据源。 定义表别名的格式为: 。,(4)WHERE子句通过条件表达式描述表中记录的筛选条件,将不满足条件的元组筛选掉。 (5)GROUP BY子句对记录按分组列的值分组,分组可以使同组的元组集中在一起,常用于数据分组统计。 (6)GROUP BY子句后可带上HAVING子句作为组筛选条件,组选择条件为带有函数的条件表达式,它决定着整个组记录的取舍条件。 (7)ORDER BY子句指定查询结查中记录按排序列排序,默认升序。选项ASC表示升序,DESE表示降序。,2、SELECT 子句的操作符,SELECT语句中使用的操作符包括
7、算术操作符、比较操作符、逻辑操作符、组合查询操作符。 (1)算术操作符 算术操作符在SQL语句中表达数学运算操作。 SQL的算术操作符有:+、-、*、/ 四种。 (2)比较操作符 比较操作符用于测试两个数据的关系。 SQL的比较操作符有:=、=、!(不大于)、!(不小于)九种。 (3)逻辑操作符 P94表5-3列出了SQL的主要逻辑操作符的语义。,(4)组合查询操作符 组合查询操作符的使用格式为: UNION:并查询操作符。操作结果将和的结果合并,即取和的元组,并在结果中去掉重复行。 MINUS:差查询操作符。操作结果为取在中且中没有的记录。 INTERSECT:交查询操作符。操作结果为取和中
8、共有的记录。 SELECT查询命令的使用非常灵活,用它可以构造各种各样的查询。,5.4.2 简单查询,简单查询是指在查询过程中只涉及一个表的查询语句,可有简单的查询条件。是最基本的查询语句。 例如:求计算机系学生的学号和姓名。 SELECT 学号,姓名 FROM 学生 WHERE 所在系= 计算机; 例如:求选修了课程的学生学号,结果去掉重复值。 SELECT DISTINCT 学号 FROM 选课;,例如:求选修了课程C1的学生学号和成绩,结果按成绩降序排列,如果成绩相同则按学号升序排列。 SELECT 学号,成绩 FROM 选课 WHERE 课程号= C1 ORDER BY 成绩 DESC
9、,学号 ASC; 例如:求物理系或数学系姓王的学生的信息。 SELECT * FROM 学生 WHERE 所在系 IN (物理, 数学) AND 姓名 LINK 王%;,例如:求缺少成绩的学生的学号和课程号。 SELECT 学号,课程号 FROM 选课 WHERE 成绩 IS NULL; 例如:求选修课程C1且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出。 SELECT 学号,成绩*0.8 FROM 选课 WHERE 课程号=C1 AND 成绩 BETWEEN 80 AND 90;,5.4.3 连接查询,若查询涉及到两个以上的表,则称之为连接查询。连接查询是关系数据库中最主
10、要的查询功能。 1、等值连接和非等值连接 连接查询中,用来连接两个表的条件称为连接条件或连接谓词。连接条件的一般格式为: . 连接谓词中的列名称为连接字段;连接条件中,连接字段类型必须是可比的,但连接字段不一定是同名的。,当连接运算符为“=”时,该连接操作称为等值连接;否则,使用其他运算符的连接运算称非等值连接。当等值连接中的连接字段相同,并且在SELECT子句中去除了重复字段时,则该连接操作为自然连接。 例如:查询每个学生的情况以及他所选修的课程。 SELECT 学生.*,选课.* FROM 学生, 选课 WHERE 学生.学号=选课.学号;,例如:查询选修C1课程且成绩为90分以上的学生学
11、号、姓名及成绩。 SELECT 学生.学号,姓名,成绩 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号= C1 AND 成绩90; 例如:查询学生的学号、姓名、选修的课程名及成绩。 SELECT 学生.学号,姓名,课程名,成绩 FROM 学生,课程,选课 WHERE 学生.学号=选课.学号 AND 课程.课程号=选课.课程号;,2、自身连接,连接操作不只是在两个表之间进行,一个表内还可以进行自身连接操作。表自身的连接操作称为自身连接。 例如:查询每一门课的间接先行课(即先行课的先行课)。 SELECT A.课程号,A.课程名,B.先行课 FROM 课程 A,课程 B
12、WHERE A.先行课=B.课程号;,说 明: (1)同一查询语句中,当一个表有两个作用时,需要对表起别名,应用中使用表的别名。上例中的A和B分别是课程的别名,A和B分别作为独立表使用。 (2)该题的连接条件是A表中的先行课与B表中的课程号等值连接,其结果集中“B.先行课”为“A.课程号”的间接先行课字段。由于A和B都是课程的别名,所以该例是自身连接操作。,5.4.4 嵌套查询,将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。 1、使用IN操作符的嵌套查询 当IN操作符后的数据集需要通过查询得到时,就需要使用IN嵌套查询。 例如:查询选修了高等数学的
13、学生学号和姓名。 SELECT 学号,姓名 FROM 学生 WHERE 学号 IN (SELECT 学号 FROM 课程 WHERE 课程号= 高等数学);,2、使用比较符的嵌套查询,例如:查询选修了课程C1的成绩高于张亮的学生学号和成绩。 SELECT 学号,成绩 FROM 选课 WHERE 课程号C1 AND 成绩 (SELECT 成绩 FROM 选课 WHERE 课程号= C1 AND 学号 (SELECT 学号 FROM 学生 WHERE 姓名张亮);,3、使用ANY或ALL操作符的嵌套查询,使用ANY或ALL操作符时必须与比较符配合使用,其格式为: ANY|ALL 例如:查询其他系中
14、比数学系某一学生年龄小的学生(即查询年龄小于数学系最大者的学生)。 SELECT * FROM 学生 WHERE 年龄 数学;,例如:查询其他系中比数学系学生年龄都小的学生。 SELECT * FROM 学生 WHERE 年龄 数学;,4、使用EXISTS操作符的嵌套查询,EXISTS代表存在量词。EXISTS操作符后子查询的结果集中如果不为空,则产生逻辑真值“TRUE”,否则产生假值“FALSE”。 例如:查询选修了C2课程的学生姓名。 SELECT 姓名 FROM 学生 WHERE EXISTS(SELECT * FROM 选课 WHERE 学生.学号=学号 AND 课程号=C2);,例如
15、:查询没有选修C2课程的学生姓名。 SELECT 姓名 FROM 学生 WHERE NOT EXISTS(SELECT * FROM 选课 WHERE 学生.学号=学号 AND 课程号= C2);,例如:查询选修了全部课程的学生的姓名。 SELECT 姓名 FROM 学生 WHERE NOT EXISTS(SELECT * FROM 课程 WHERE NOT EXISTS (SELECT * FROM 选课 WHERE 学生.学号=学号 AND 课程号=课程号);,例如:查询至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。 SELECT 学号,姓名 FROM 学生 WHERE
16、NOT EXISTS(SELECT * FROM 选课 选课1 WHERE 选课1.学号= S2 AND NOT EXISTS (SELECT * FROM 选课 选课2 WHERE 学生.学号=选课2.学号 AND 选课2.课程号=选课1.课程号);,5.4.5 组合查询,将SELECT语句的查询结果集再进行集合运算就构成了SQL的组合查询。SQL的组合查询操作符有UNION(并操作)、INTERSECT(交操作)、MINUS(差操作)3种。 例如:查询选修了C1课程或选修了C2课程的学生学号。 SELECT 学号 FROM 选课 WHERE 课程号= C1 UNION SELECT 学号
17、FROM 选课 WHERE 课程号= C2;,例如:查询选修C1课程,并且也选修C2课程的学生学号。 SELECT 学号 FROM 选课 WHERE 课程号= C1 INTERSECT SELECT 学号 FROM 选课 WHERE 课程号= C2;,例如:查询选修了C1课程但没有选修C2课程的学生学号。 SELECT 学号 FROM 选课 WHERE 课程号= C1 MINUS SELECT 学号 FROM 选课 WHERE 课程号= C2;,5.4.6 使用分组和SQL函数查询,SQL函数是综合信息的统计函数,包括计数、求最大值、最小值、平均值、和等。 SQL函数可作为列标识符出现在SELECT子句的目标列或HAVING子句的条件中。 在SQL查询语句中,如果有GROUP BY分组子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届四川省成都市双流区棠湖中学高一物理第一学期期中检测模拟试题含解析
- 2025届山西省陵川第一中学校高一物理第一学期期末教学质量检测试题含解析
- 2025届四川省眉山一中物理高三第一学期期末达标测试试题含解析
- 2024年度亚马逊FBA货物质量检验合同
- 2024年度成都地铁建设施工合同
- 2024年度城市环线道路设计与规划合同
- 2024年度国际工程项目铝扣板供应安装合同
- 2024大数据分析与决策支持系统合同
- 2024年店面知识产权保护承包合同
- 2024年建筑工人短期聘用协议
- 大学生青年志愿者协会退部制度
- 口腔诊所物品管理与设备维修制度
- 清华大学工程热力学课件 第1章01
- 2022-2023学年山东省东营市实验中学物理高一第一学期期中达标测试试题(含解析)
- 中式面点师初级(五级)教学计划、大纲
- 小学语文人教六年级上册(统编2023年更新)第六单元-《浪淘沙》导学单
- 测试计划-10篇模板
- 交联电缆运行时的热特性参数设计计算
- TSG-R0005-2022《移动式压力容器安全技术监察规程》(2022版)
- 应急预案管理制度-等保制度模板
- 电子行业大硅片深度报告:半导材料第一蓝海硅片融合工艺创新
评论
0/150
提交评论