第3章结构化查询语言lgy.ppt

上传人:本田雅阁 文档编号:2527254 上传时间:2019-04-05 格式:PPT 页数:40 大小:1.50MB
返回 下载 相关 举报
第3章结构化查询语言lgy.ppt_第1页
第1页 / 共40页
第3章结构化查询语言lgy.ppt_第2页
第2页 / 共40页
第3章结构化查询语言lgy.ppt_第3页
第3页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第3章结构化查询语言lgy.ppt》由会员分享,可在线阅读,更多相关《第3章结构化查询语言lgy.ppt(40页珍藏版)》请在三一文库上搜索。

1、第3章 结构化查询语言,2,第3章 结构化查询语言,3,3.1 SQL概述,1、什么是SQL语言? SQL是一种关系数据库语言,具有查询、删除、定义和控制的一体化功能。 Access 2003、SQL Server、Oracle都采用SQL标准。 2、SQL语言的组成部分。 数据定义:DDL (Data Definition Language),用于创建/修改表、视图和索引。 CREATE、ALTER、DROP 数据操作:DML (Data Manipulation Language),用于对表记录进行操作。INSERT、UPDATE、DELETE 数据查询:DQL (Query Langua

2、ge),用于对数据库中的数据实施查询。 SELECT 数据控制:DCL (Data Control Language),用于对网络数据库用户实施管理。 GRANT、REVOKE,4,3.1 SQL概述,SQL语句的输入(定义)、运行及修改方法 定义查询 打开数据库,选择“查询”对象,双击“在设计视图中创建查询”,关闭“显示表”对话框,右击,选择 “SQL特定查询数据定义”项,便会调出一个SQL语句编辑器。在其输入了SQL语句后,单击运行按钮 。必要时可保存为查询。 运行查询 在查询对象列表中双击要运行的查询名。 修改查询 在查询对象列表中选中要运行的查询名,单击“设计”按钮。,5,3.1 SQ

3、L概述,6,3.1 SQL概述,7,3.2 数据定义功能,SQL的数据定义功能是指定义数据库的结构,包括定义基本表、定义视图和定义索引3个部分。,8,3.2 数据定义功能,1、创建表: 列级完整性约束条件有NULL(空)、UNIQUE(取值惟一),如NOT NULL UNIQUE表示取值惟一,不能取空值。 表级完整性约束条件有PRIMARY KEY(定义主码)。 CREATE TABLE 表名(字段描述信息 ,表完整性约定 ),Create table 学生(学号 char(6),姓名 char(6), 出生年月 Date, 班级编号 char(8),primary key (学号),表名:学

4、生,CREATE TABLE 表名( 列名1列级完整性约束条件 ,列名2列级完整性约束条件 ,列名3列级完整性约束条件 表级完整性约束条件),9,2、修改表 增加字段 ALTER TABLE 表名 ADD 字段名 字段类型(宽度) 例:Alter table 学生 add 性别 char(2) 修改字段 ALTER TABLE 表名 ALTER 字段名 字段类型(宽度) 例: Alter table 学生 alter 班级编号 char(10) 删除字段 ALTER TABLE 表名 DROP 字段名,3.2 数据定义功能,10,3、删除表: Drop table 表名 例:Drop tabl

5、e 学生 4、建立索引 例:Create index 姓名 on 学生(姓名),3.2 数据定义功能,11,3.3 SQL的数据操作功能,1、修改表记录 UPDATE SET =,=WHERE 对于满足条件的元组给以更新。若不写条件,则对所有元组进行更新。 如:给所有成绩小于等于60分的同学加5分 Update 成绩表 set 成绩=成绩+5 where 成绩=90,12,2、增加记录 INSERT INTO 表名(字段名表) VALUES(字段值表) 如:Insert into 成绩表(学号,课程编号,成绩) values(“040301”,”01-03”,68”),3.3 SQL的数据操作

6、功能,13,3.3 SQL的数据操作功能,3、删除记录 DELETE FROM WHERE 如:删除学号为20070109的学生 Delete from 学生表 where 学号=“20070109”,14,3.4 SQL的数据查询功能,从指定的表或视图中找出符合条件的数据,结果形成一个新表。SELECT语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。 SELECT 输出项 FROM 数据源 WHERE 条件 ORDER BY 排序依据 ASC/DESC GROUP BY 分组依据,SELECT 限定词 字段名列表 FROM 数据表列表 IN外部数据库 WHERE 条件 GR

7、OUP BY 字段名 HAVING 条件 ORDER BY 字段名 ASCDESC WITH OWNERACCESS OPTION,15,字段名列表:要查询的属性,一般是字段名或表达式。 FROM:数据来源,即从哪些表或视图中查询。 WHERE:查询条件,即选择满足条件的元组。 GROUP BY:对查询结果进行分组。 HAVING:限定分组的条件。 ORDER BY:对查询结果排序。ASC:表示升序|DESC:表示降序。,3.4 SQL的数据查询功能,16,3.4 .1 简单查询,课程表:,成绩表:,学生表:,17,3.4 .1 简单查询,1、查询全体学生情况 Select * from 学生

8、表,18,3.4 .1 简单查询,2、查询全体学生的姓名和所在系 Select 姓名,所在系 from 学生表,19,3.4 .1 简单查询,3、查询选修了课程的学生学号。 Select 学号 from 成绩表 Select distinct 学号 from 成绩表 指定DISTINCT短语,表示要取消指定列中的重复值。,20,3.4 .1 简单查询,4、查询全体学生姓名、出生年月,结果按出生年月的升序(或降序)排列。 Select 姓名,出生年月 from 学生表 order by 出生年月 Select 姓名,出生年月 from 学生表 order by 出生年月 DESC,21,WHER

9、E子句的条件表达式可以使用下列运算符: 算术比较运算符:=、=、BETWEENAND 逻辑运算符:AND、OR、NOT。 集合元素包含运算符:IN、NOT IN。 字符匹配:LIKE、NOT LIKE。 集合运算符:UNION、MINUS、INTERSECT。 存在量词:EXISTS、NOT EXISTS。,3.4 .1 简单查询,22,3.4 .1 简单查询,5、查询数学系的学生情况 Select * from 学生表 where 所在系=“数学”,23,3.4 .1 简单查询,6、查询信息系、数学系的学生学号、姓名、性别、所在系 SELECT 学号, 姓名, 性别,所在系 FROM 学生表

10、 WHERE 所在系=“数学“ or 所在系=“信息“ Select 学号,姓名,性别 ,所在系 from 学生表 Where 所在系 in (“数学”,”信息”) 包含运算符:IN、NOT IN,24,3.4 .1 简单查询,7、查询成绩表中成绩大于等于70小于等于80的学生。 SELECT * FROM 成绩表 WHERE 成绩 BETWEEN 70 AND 80 SELECT * FROM 成绩表 WHERE 成绩 NOT BETWEEN 70 AND 80,25,3.4 .1 简单查询,8、查询所有姓李的学生学号,姓名 Select 学号,姓名 from 学生表 Where 姓名 li

11、ke “李*” 字符匹配:LIKE、NOT LIKE 通配符:*(任意长度的字符)(课本中的%是错误的) ?(任意一个字符) LIKE不能用“=”代替 Select 学号,姓名 from 学生表 Where 姓名 not like “李*”,26,3.4 .1 简单查询,9、查询所有学号第3、4位是02的学生学号,姓名。 SELECT 学号, 姓名 FROM 学生表 WHERE 学号 like “?02?“,27,3.4 .2 连接查询,连接查询:查询的目标涉及到两个或几个表 1、查询所有选修了课程编号为“01-03”的学生的学号、姓名、成绩。 SELECT 学生表.学号, 姓名,课程编号,

12、成绩 FROM 成绩表, 学生表 WHERE 学生表.学号=成绩表.学号 and 课程编号=“01-03“,学生表:,成绩表:,两个表都有的字段一定要指明是哪个表,否则会出错。,28,3.4 .2 连接查询,2、查询选修了课程号为“01-03”且成绩70分以上的学生的学号、姓名、成绩 Select 学生表.学号,姓名,成绩 From 学生表 ,成绩表 Where 学生表.学号=成绩表.学号 and 课程编号=“01-03” and 成绩=70,29,3.4.3 嵌套查询,嵌套查询是指在SELECT-FROM-WHERE查询块内部再嵌入另一个查询块,称为子查询,并允许多层嵌套。由于ORDER子句

13、是对最终查询结果的表示顺序提出要求,因此它不能出现在子查询中。 (1)带有IN谓词的子查询。 在嵌套查询中,子查询的结果往往是一个集合,所以谓词IN是嵌套查询中最常使用的谓词。,30,3.4.3 嵌套查询,例:查询选修了课程的学生学号,姓名,所在系 Select 学号,姓名,所在系 from 学生表 Where 学号 in (select 学号 from 成绩表),31,(2)带有比较运算符的子查询。,3.4.3 嵌套查询,32,例:查询成绩表中成绩最高的记录。 SELECT 学号, 成绩 FROM 成绩表 WHERE 成绩 =all(select 成绩 from 成绩表),3.4.3 嵌套查

14、询,33,表3-3 集函数的功能,SQL提供的常用统计函数称为集函数,这些集函数使检索功能进一步增强。,3.4.4 使用集函数查询,34,3.4.4 使用集函数查询,例:求成绩表中的记录个数。 Select count(*) AS 记录个数 from 成绩表 Select count(学号) AS 记录个数 from 成绩表 AS关键字:对字段(存在或不存在)进行重新命名。 1)所涉及的表的字段名很长或者想把英文字段名在结果集中显示为中文字段名。 2)查询产生了某些计算字段、合并字段等原来不存在的字段,需要命名。 3)多表查询中在两个或者多个表中存在重复的字段名。,35,3.4.4 使用集函数

15、查询,例:求选修了课程编号为=“01-03”的学生人数。 Select count(*) AS 选课人数 from 成绩表 where 课程编号=“01-03 “ Select count(学号) AS 选课人数 from 成绩表 where 课程编号=“01-03“,36,3.4.4 使用集函数查询,例:求成绩表中的平均成绩。 SELECT avg(成绩) AS 平均成绩 FROM 成绩表;,37,3.4.4 使用集函数查询,例:求成绩表中各门课程的平均成绩。 SELECT avg(成绩) AS 平均成绩 FROM 成绩表 group by 课程编号 例:求成绩表中各门课程的最高分 。 SE

16、LECT 课程编号, max(成绩) AS 最高分 FROM 成绩表 GROUP BY 课程编号 思考:如何求成绩表中的最高分 ? 如何求工资表中的平均基本工资 ? 如何在工资表中按性别分组求平均 基本工资 ?结果有多少个记录?,38,3.4.5 集合查询,集合运算包括并(UNION)、差(MINUS)和交(INTERSECT),可以求一个SELECT子查询的结果与另一个SELECT子查询结果的并、交、差运算。,39,3.4.5 集合查询,(1)集合的并集 例:查询选修了课程号为”01-03”或者”01-02”的学生学号 SELECT * FROM 成绩表 WHERE 课程编号=“01-03“ or 课程编号=“01-02“ 或者: Select * from 成绩表 where 课程编号=“01-03“ UNION Select * from 成绩表 where 课程编号=“01-02“;,Thank You !,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1