




已阅读5页,还剩89页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关系数据库基本原理 (2)SQL语言,王传栋 南京邮电大学计算机学院,2,内容与要求,知识点 (1)知识点一:关系模型概述 (2)知识点二:关系数据结构 (3)知识点三:关系代数理论 (4)知识点四:关系数据库标准语言SQL (5)知识点五:关系数据库的规范化理论 实验1 SQL语言的应用 教学基本要求 了解关系数据结构的基本概念,了解关系模型的各种操作和关系代数的基本原理,掌握关系数据模型的完整性约束机制,掌握SQL语言,了解函数依赖等基本概念,掌握关系模式的规范化概念、方法、原理与过程。,3,引言,数据库的应用平台,嵌入式 SQL,交互式SQL,4,引言,SQL是关系数据库的标准语言 对关系模型的发展和商用DBMS的研制起着重要的作用 SQL语言是介乎于关系代数和元组演算之间的一种语言 SQL语言的9个核心词汇 Create, Alter, Drop, Select, Insert, Update, Delete Grant, Revoke 本章详细介绍SQL的核心部分内容 数据定义 数据查询 数据更新 嵌入式SQL,5,SQL简介,SQL发展史 1970年 美国IBM研究中心的E.F.Codd连续发表多篇论文,提出关系模型 1972年 IBM公司开始研制实验型关系数据库管理系统SYSTEM R,配制的查询语言称为SQUARE语言 1974年 把SQUARE修改为SEQUEL语言 1978年, SEQUEL简称为SQL,即“结构式查询语言” SQL的发音仍为“sequel”,现在SQL已经成为一个标准 ,其发音更倾向于发“ess-cue-ell ”,6,SQL简介,SQL发展史 SQL86 1986年10月,ANSI SQL标准 1987年6月,ISO SQL标准 SQL2 1992年8月,ISO SQL标准 SQL3 1999年,ISO SQL标准 在未来很长一段时间,SQL仍将是关系数据库领域的主流语言 在软件工程、人工智能领域,SQL已显示出相当大的潜力,7,SQL简介,SQL数据库的体系结构,8,SQL简介,SQL数据库的体系结构 1)一个SQL模式(Schema)是表和约束的集合 2)一个表由行集构成,一行是列的序列 3)表类型:基本表、视图和导出表 4)基本表与存储文件是M:N联系 存储文件与外部存储器的物理文件是一一对应的 5)SQL语句执行对基本表和视图查询等操作 在用户看来,两者是一样的,都是表 6)SQL用户可以是应用程序,也可以是终端用户 注:虽然SQL是国际公认的关系数据库标准,但标准的SQL文档中并没有使用“关系”和“数据库”这两个名词,9,SQL简介,SQL组成 1)数据定义语言,即SQL DDL 用于定义SQL模式、基本表、视图、索引等结构 2)数据操纵语言,即SQL DML 数据查询 数据更新:包括插入、删除和修改三种操作 3)嵌入式SQL语言规则 SQL语句嵌入在宿主语言程序中的规则 4)数据控制语言,即SQL DCL 授权、完整性规则的描述、事务控制等,10,SQL简介,SQL特点 1)灵活和强大的查询功能 SELECT语句能完成相当复杂的查询操作 2)SQL不是一个应用开发语言 只提供对数据库的操作功能,不能完成屏幕控制、菜单管理、报表生成等功能 3)SQL是国际标准语言 有利于各种数据库之间交换数据,有利于程序的移植,有利于实现高度的数据独立性,有利于实现标准化 4)SQL的词汇不多 完成核心功能只用了9个英语动词,它的语法结构接近英语,因此容易学习和使用,11,SQL的数据定义,SQL模式的创建和撤销 注 模式(Schema)一词,来自于“ISO SQL标准”协议 Schema在SQL数据库中相当于一个容器 数据库所有的对象如表、视图、索引、用户、存储过程、触发器等都位于容器内 创建SQL模式,就是定义一个存储空间 在商业DBMS中,大多都使用Database代替Schema,12,SQL的数据定义,SQL模式的创建和撤销 创建 CREATE SCHEMA AUTHORIZATION 撤销 DROP SCHEMA CASCADERESTRICT 方式 CASCADE(级联式) RESTRICT(约束式) 商业DBMS中 CREATE Database DROP Database ,13,SQL的数据定义,常用数据类型 1)数值型:Integer,Smallint,Numeric(p, d) / DEC(p,d) 2)字符串型:Char(n),Varchar(n) 3)位串型:Bit(n),Bit Varying(n) 4)时间型:DATE,TIME 注 在很多DBMS中支持自定义数据类型,如在Oracle中 CREATE DOMAIN AS 列级完整性约束 ; DROP DOMAIN ;,14,SQL的数据定义,常用数据类型 示例:在Oracle中定义数据类型与应用 定义 Create domain COLOR Char(6) Default ? Constraint VALID_COLORS Check ( value in (Red, Yellow, Green, ? ) ) ; 使用 Create Table PART ( partcolor COLOR , ) ;,15,SQL的数据定义,基本表的创建、修改和撤销 表的创建 句法 CREATE TABLE ( 域完整性约束条件 , 域完整性约束条件 , ) ; 域完整性约束条件 NOT NULL / NULL :列值是否可以为空 UNIQUE :列值唯一,不得重复 DEFAULT :列值空缺时,由系统填写默认值,16,SQL的数据定义,基本表的创建、修改和撤销 表的创建 表级完整性约束条件 主键(PRIMARY KEY)子句 格式:PRIMARY KEY ( ) 作用:提供实体完整性约束的说明 说明 系统一般自动在主键上建索引 主键为单属性时,可直接在属性后的域完整性约束条件中,使用PRIMARY KEY定义主键,17,SQL的数据定义,基本表的创建、修改和撤销 表的创建 表级完整性约束条件 外键(FOREIGN KEY)子句 格式:Foreign key 外键名 ( ) references (列名表2) on delete 作用:提供参照完整性约束的说明,18,SQL的数据定义,基本表的创建、修改和撤销 表的创建 表级完整性约束条件 外键(FOREIGN KEY)子句 on delete 子句的说明 RESTRICT :主表的主键值行不得删除 CASCADE :主表主键值行删除,从表的相关行随之删除 SET NULL :主表主键值行删除,从表的相关行的列值设为NULL,前提是该列的值可以为NULL,19,SQL的数据定义,基本表的创建、修改和撤销 表的创建 表级完整性约束条件 检查(CHECK)子句 格式:CHECK (约束表达式) 作用:对某元组某属性取值的约束说明 说明 表创建后是一个空表,需要使用DML(insert,update,delete)语句装入或维护数据行,20,SQL的数据定义,基本表的创建、修改和撤销 表的创建 示例,21,SQL的数据定义,基本表的创建、修改和撤销 表的创建 示例,22,SQL的数据定义,基本表的创建、修改和撤销 表的创建 示例,23,SQL的数据定义,基本表的创建、修改和撤销 表的创建 问关于表T、S、C、SC的创建顺序,下列选项正确的是? A) C T SC S B) T S C SC C) S T C SC D) S T SC C E) T C S SC F) SC C S T G) SC C T S,24,SQL的数据定义,基本表的创建、修改和撤销 表的修改 句法 ALTER TABLE 增加属性 Alter table add ; 删除属性 Alter table drop cascaderestrict CASCADE:引用该列的视图和约束随之删除 RESTRICT:只在没有被引用时才可删除 不是所有的DBMS都支持,25,SQL的数据定义,基本表的创建、修改和撤销 表的修改 句法 ALTER TABLE 修改属性的类型 Alter table modify modify alter column 其他修改,如 补充定义主键,撤销主键定义 补充定义外键,撤销外键定义 定义和撤销别名,26,SQL的数据定义,基本表的创建、修改和撤销 表的撤销 句法 DROP TABLE cascaderestrict 说明 CASCADE:删除该基本表时,所有引用该基本表的视图和约束一起自动被删除 RESTRICT:没有视图和约束引用该基本表时,才能撤销,27,SQL的数据定义,索引的建立和撤销 索引概念 是物理存取路径,不属于逻辑数据模式 RDBMS通常在主键上自动建立索引 查询、更新时自动起作用(适当建立索引会提高查询速度) 句法 创建索引 CREATE UNIQUE INDEX ON 基表名 ( ASCDESC , ASCDESC ) ; 撤销索引DROP INDEX ;,UNIQUE索引,只能建立在候选键上,28,SQL的数据定义,索引的建立和撤销 示例 Create index Age_Index on S(Age) ; Create unique index Age_Index on S(Age ASC) ; Create unique index SC_Index on SC(SNO, CNO DESC) ; Drop index Age_Index, SC_Index ; Create index C_Index on C(TNO DESC, Credit DESC) ;,29,SQL的数据更新,数据插入 句法 1)单元组的插入 INSERT INTO 基本表名 (列名表) VALUES(元组值) 2)多元组的插入:不是所有版本的DBMS都支持 INSERT INTO 基本表名 (列名表) VALUES (元组值), , (元组值) 3)查询结果的插入 INSERT INTO 基本表名 (列名表) 4)表的插入: INSERT INTO 基本表名1 (列名表) TABLE 基本表名2,30,SQL的数据更新,数据插入 说明 若插入的元组值,其属性个数、次序和域,与表结构的定义一致,则列名表可以省略 否则需要列名表,且列名表的属性个数和次序,需与待插入值一一对应 数据插入受关系完整性约束的制约 数据类型 实体完整性:主键值唯一,非空 参照完整性:不允许引用不存在的实体 用户自定义的完整性,31,SQL的数据更新,数据插入 示例 Insert Into S(Sno, Sname, Age, Sex, NativePlace) Values(S5, GU, 20, M, NULL) ; Insert Into S Values(S5, GU, 20, M, NULL) ; Insert Into S(Sno, Sname, Age, Sex) Values(S5, GU, 20, M) ; Insert Into S(Sname, Sno, Sex, Age) Values(GU, S5, M, 20) ; Insert Into SC(S#, C#) Values(S5, C8); Insert Into SC Values(S5, C8, NULL);,32,数据插入 示例 Insert Into S_Grade(S#, AVG_Grade) Select Sno, AVG(Grade) From SC Where Sno in (Select Sno From S Where SexM) Group By Sno Having AVG(Grade)80 ; Insert Into SC(Sno, Cno) TABLE SC4 ;,SQL的数据更新,33,SQL的数据更新,数据插入 示例,问: Insert Into SC Values(S4, C569, 105) ; Insert Into SC Values(S4, C5,105) ;,34,SQL的数据更新,数据插入 示例,问: Insert Into SC Values(S4, C5, 95) ; Insert Into SC Values(S4, C4, 95) ; 如图示4条相关数据的插入顺序 是什么?,35,SQL的数据更新,数据删除 句法 DELETE FROM WHERE 条件表达式 语义 是从基本表中删除满足条件表达式的元组 注意 DELETE语句只能从一个基本表中删除元组 WHERE子句中条件可以嵌套,也可以是来自几个基本表的复合条件 如果没有WHERE子句,则删除表的所有元组,表成为空表,36,SQL的数据更新,数据删除 示例 Delete From SC Where Grade is NULL ; Delete From C Where Cname Like %M% ; Delete From SC Where Cno in ( Select Cno From C Where Cname = MATHS ) ; Delete From SC, C Where SC.Cno = C.Cno and Cname = MATHS ; Delete From SC Where Cno = C4 and Grade ( Select AVG(Grade) From SC Where Cno = C4 );,37,SQL的数据更新,数据删除 示例,问 Delete From S Where Sname Like %U% ;,38,SQL的数据更新,数据删除 示例,问 Delete From S Where Sname Like %U% ; Delete From SC Where Sno in ( Select Sno From S Where Sname Like %U% ); Delete From S Where Sname Like %U% ;,39,SQL的数据更新,数据删除 示例,问 如图示4条相关数据的删除顺序是什么? Drop Table SC 与 Delete From SC 的区别是什么 TRUNCATE TABLE SC,40,SQL的数据更新,数据删除 当LIU老师不再教授课程时,删除其基本信息 Delete From T Where Tname = LIU AND Tno Not in ( Select Tno From C) 当PM课程没人选修时,删除这门课程信息 当WANG同学不再选修课程时,删除其基本信息,41,SQL的数据更新,数据删除 TRUNCATE TABLE 与 DELETE From 功能上相同:均删除表中的全部行 但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项 TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,42,SQL的数据更新,数据删除 TRUNCATE TABLE 与 DELETE From TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变;新行标识所用的计数值重置为该列的种子,如果想保留标识计数值,应使用 DELETE 如果要删除表定义及其数据,应使用 DROP TABLE 语句 对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句 由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器 TRUNCATE TABLE 不能用于参与了索引视图的表,43,SQL的数据更新,数据修改 句法 UPDATE SET 列名=值表达式,列名=值表达式ROW = (元组) WHERE 条件表达式 语义 修改基本表中满足条件表达式元组的指定属性值 说明 WHERE子句表示要修改的元组需满足的条件 SET子句表示要修改的列及其新值或元组值 UPDATE语句一次只能修改一个表中的元组,44,SQL的数据更新,数据修改 示例 Update C Set Cname=SE Where Cno=C3 ; Update SC Set Grade = Grade * 1.1 Where Sno in ( Select Sno From S Where Sex = F ) ; Update SC, S Set Grade = Grade * 1.1 Where SC.Sno = S.Sno and Sex = F ;,45,SQL的数据更新,数据修改 示例 Update SC Set Grade = Grade * 1.05 Where CnoC4 and Grade ( Select AVG(Grade) From SC Where C#C4); Update C Set Row = (C3, SE, 4, 64 , C1, T2 ) Where Cno = C3 ;,46,SQL的数据更新,数据修改 示例 Update SC Set Grade = 60 Where Grade is NULL ; Update SC Set Grade = Grade + 60 Where Grade is NULL ;,47,SQL的数据更新,数据修改 示例 Update SC Set Grade is NULL Where Grade = 70 and Cno in ( Select Cno From C Where Cname = MATH ) ; Update SC Set Grade = NULL Where Grade = 70 and Cno in ( Select Cno From C Where Cname = MATH ) ;,48,SQL的数据更新,数据修改 示例 Update SC Set Grade = Grade * 1.5 Where Sno= S2 and Cno= C3 ; Update C Set Tno = T3 Where Cno= C3 ;,49,SQL的数据更新,数据修改 示例 Update C Set Cno = C3 Where Cno= C4 ; Delete From SC Where Cno= C4 ; Update C Set Cno = C3 Where Cno= C4 ; Update C Set Cno=NULL Where Cno= C4 ;,50,SQL的数据查询,SELECT语句的基本结构 句型 SELECT FROM WHERE 只有SELECT和FROM子句是每个SQL查询语句所必需的 语义 示例 查询选修了DB课程的学生的姓名,51,SQL的数据查询,SELECT语句的基本结构 示例 SNAME(CNAME=DB AND S.SNO=SC.SNO AND SC.CNO=C.CNO(SSCC) Select Sname From S, SC, C Where Cname=DB And S.Sno=SC.Sno And SC.Cno=C.Cno,52,SQL的数据查询,SELECT语句的基本结构 示例 SNAME(CNAME=DB(SSCC) DBMS的优化 SNAME(SNO,SNAME(S)SNO(CNO(CNAME=DB(C)SNO,CNO(SC) Select Sname From S Where Sno in ( Select Sno From SC Where Cno in ( Select Cno From C Where Cname=DB ) ;,53,SQL的数据查询,SELECT语句的基本结构 常见的3种SELECT语句写法 示例:查询选修C2课程的学生学号和姓名 1)连接查询 Select S.Sno, Sname From S, SC Where S.Sno=SC.Sno and Cno=C2 语句的执行步骤 1)笛卡尔积 2)等值连接 2)选择和投影,54,SQL的数据查询,SELECT语句的基本结构 常见的3种SELECT语句写法 示例:查询选修C2课程的学生学号和姓名 2)IN嵌套查询 Select Sno, Sname From S Where Sno in ( Select Sno From SC Where Cno=C2 ) ; Select Sno, Sname From S Where C2 in ( Select Cno From SC Where Sno=S.Sno ) ; 区别 1)由里到外,内层查询(执行1次)结果供给外层使用 2)依赖于外层值,内层(执行n次)结果供给外层使用,55,SQL的数据查询,SELECT语句的基本结构 常见的3种SELECT语句写法 示例:查询选修C2课程的学生学号和姓名 3)EXISTS嵌套查询 Select Sno, Sname From S Where EXISTS ( Select * From SC Where Sno=S.Sno and Cno=C2 ) ; 说明 1)3个位置特殊,需注意 2) EXISTS表示“”,判定内层查询结果是否为非空, 即至少存在一个元组(满足外查询的条件),56,SQL的数据查询,SELECT语句的完整结构 句型 执行过程 读取FROM子句中的数据源,执行笛卡尔积() 选择()满足WHERE子句值的元组 按GROUP BY子句指定的列值,将元组进行分组 在分出的所有组中,选取满足HAVING子句值的组 按SELECT子句的指定项,求值投影()输出 按ORDER BY子句对式的输出进行排序,57,SQL的数据查询,SELECT语句的完整结构 查询中的5个聚合函数,58,SQL的数据查询,SELECT语句的完整结构 应用示例 统计选修课程的人次数 Select COUNT(Sno) as 人次数 From SC ; 统计选修课程的人数 Select COUNT(Distinct Sno) as 人数 From SC ;,59,SQL的数据查询,SELECT语句的完整结构 应用示例 统计男学生的总人数和平均年龄 Select COUNT(*) as 总人数, AVG(Age) as 平均年龄 From S Where Sex = M ; 按性别统计学生的总人数和平均年龄 Select Sex, COUNT(*) as 总人数, AVG(Age) as 平均年龄 From S Group By Sex ;,60,SQL的数据查询,SELECT语句的完整结构 应用示例 统计每门课程的学生选修人数,要求显示课程号、课程名和学生人数 Select C.Cno, Cname, COUNT(Sno) as 学生人数 From C, SC Where C.Cno = SC.Cno Group By C.Cno, Cname ;,61,SQL的数据查询,SELECT语句的完整结构 应用示例 按教师号统计每位教师每门课程的学生选修人数,要求: 1)仅显示选修人数在3人(=3)以上的信息 2)显示TNO、CNO和选修人数 3)显示时,查询结果按选修人数降序排列,人数相同按TNO升序、 CNO降序排列,62,SQL的数据查询,SELECT语句的完整结构 应用示例 Select Tno, C.Cno, COUNT(Sno) as 选修人数 From C, SC Where C.Cno = SC.Cno Group By Tno, C.Cno Having COUNT(*)=3 Order By 3 DESC, Tno, C.Cno DESC,63,SQL的数据查询,SELECT语句的完整结构 GROUP BY HAVING 作用 1)数据按GROUP BY子句列名序列中的列值进行分组 2)组内数据按SELECT子句中的聚合函数进行计算 3)提取满足HAVING子句的条件表达式值的分组 注意 HAVING子句支持聚合函数 WHERE子句不支持聚合函数 SELECT子句只能取聚集函数 或GROUP BY子句指的列,64,SQL的数据查询,SELECT语句的完整结构 ORDER BY ASCDESC , ASCDESC 对查询结果按子句中指定列的值排序,如果ORDER BY后有多个列名 先按第一列名值排序 再对于第一列值相同的行,按第二列名值排序 依次类推 列序号是在SELECT子句中出现的序号(选的列是聚集函数或表达式时) ASC表示升序,DESC表示降序,缺省时表示升序,65,SQL的数据查询,SELECT语句的完整结构 应用示例 问:在使用聚合函数进行数据统计时,为什么有的语句使用了Group By子句,有的没有? 什么情况下,应该有?可以没有?,66,SQL的数据查询,查询中的限制和规定 Select子句的规定 子句描述查询输出的表格结构,即输出值的列名或表达式 格式 SELECTALLDISTINCT * 释义 AllDistinct,保留消除查询结果中的重复行 * 是对From子句中表的所有列的简写 列表达式 列名、常量、算数运算符、函数、聚合函数,67,SQL的数据查询,查询中的限制和规定 别名 用关键字AS为列、表、表达式起别名,AS可以省略 集合运算 (Select查询1) UNIONALL(Select查询2) (Select查询1) INTERSECTALL(Select查询2) (Select查询1) EXCEPTALL(Select查询2) 备注 并交差运算的前提:相同的关系模式 关键字ALL,表示保留运算后的重复元组,68,SQL的数据查询,查询中的限制和规定 示例 Select NativePlace, Sname, Sex From S ; Select Sno, Sname, Age, Sex, NativePlace From S ; Select * From S ;,69,SQL的数据查询,查询中的限制和规定 示例 Select Sname, Year(getdate() Age as BirthYear From S AS X ; Select Sname as 姓名, BirthYear : as BIRTH, 2011 Age as YEAY, Lower(Sex) as 性别 From S ; 说明 函数getdate(), year(), month(), day() 函数upper(), lower(),70,SQL的数据查询,查询中的限制和规定 示例 Select * From S Where Sex=F Or NativePlace=四川 (Select * From S Where Sex=F) UNION (Select * From S Where NativePlace=四川) (Select * From S Where Sex=F) UNION ALL (Select * From S Where NativePlace=四川),71,SQL的数据查询,查询中的限制和规定 示例 Select Sno From SC ; Select All Sno From SC ; Select Distinct Sno From SC ; Select top 5 Sno From SC ;,72,SQL的数据查询,条件表达式中的比较操作 构成Where语句的条件运算符,73,SQL的数据查询,条件表达式中的比较操作 算数比较运算 查询学号是S3的学生姓名 Select Sname From S Where Sno = S3 ; 查询年龄小于18的学生姓名 Select Sname From S Where Age 18 ; 查询性别为男的学生的姓名、年龄和籍贯 Select Sname, Age, NativePlace From S Where Sex = M ;,74,SQL的数据查询,条件表达式中的比较操作 区间运算 查询年龄不在17 19岁之间的学生的学号 Select Sno From S Where Age Between 17 and 19 ; Select Sno From S Where Age=17 and Age=17 and Age19 ;,75,SQL的数据查询,条件表达式中的比较操作 字符匹配运算 查询籍贯不是上海的学生姓名 Select Sname From S Where NativePlace = 上海 ; Select Sname From S Where NativePlace Like %上海% ; Select Sname From S Where NativePlace Like %上%海% ; Select Sname From S Where NativePlace 上海 ; Select Sname From S Where NativePlace Not Like %上海% ;,76,SQL的数据查询,条件表达式中的比较操作 字符匹配运算 注解 LIKE与通配符“%”和“_” 使用格式:not Like Escape “%” :字符串中所处位置的0n个字符 “_” :字符串中所处位置的 1 个字符 换码字符 查询课程名以“DB_C%A”开头的课程号和学分 Select Cno, Credit From C Where Cname like DB_C%A% Escape ;,77,SQL的数据查询,条件表达式中的比较操作 空值比较运算 查询未缺考学生的学号和课程号 Select Sno, Cno From SC Where Grade is Null ; Select Sno, Cno From SC Where Grade is not Null ; 说明,在Where语句中 “is NULL”不能用“= NULL”替换 “is not NULL”不能用“ NULL”替换,78,SQL的数据查询,条件表达式中的比较操作 空值比较运算 查询未缺考过的学生的学号 Select Distinct Sno From SC Where Grade is Null ; Select Distinct Sno From SC Where Grade is not Null ; Select Sno From S Where Sno not in ( Select Sno From SC Where Grade is Null ) ;,79,SQL的数据查询,条件表达式中的比较操作 集合成员运算 查询未选修C2或C3课程的学生学号 Select Sno From SC Where Cno = C2 or Cno = C3 ; Select Sno From SC Where Cno = (C2, C3) ; Select Sno From SC Where Cno in (C2, C3) ; Select Sno From SC Where Cno =SOME(C2, C3) ; Select Sno From SC Where Cno not in (C2, C3) ; Select Sno From SC Where Cno ALL(C2, C3) ;,80,SQL的数据查询,条件表达式中的比较操作 集合成员运算 查询未选修C2或C3课程的学生学号 Select Sno From S Where Sno not in ( Select Sno from SC Where Cno in (C2, C3) ) ; Select Sno From S Where Sno ALL ( Select Sno from SC Where Cno in (C2, C3) ) ;,81,SQL的数据查询,条件表达式中的比较操作 集合成员运算 查询未选修LIU老师所授课程的学生学号 Select Sno From SC, C, T Where Tname=LIU and SC.Cno=C.Cno and C.TNO=T.Tno ; Select Sno From SC Where Cno in ( Select Cno From C Where Tno in ( Select Tno From T Where Tname=LIU ) ) ; Select Sno From S Where Sno not in ( 选过的学号 ) ;,82,SQL的数据查询,条件表达式中的比较操作 集合成员运算 查询选修了LIU老师所授全部课程的学生姓名 Select Sname From S Where not Exists ( Select * From C Where Tno in (Select Tno From T Where Tname=LIU ) and not Exists ( Select * From SC Where Sno=S.Sno and Cno=C.Cno) );,83,SQL的数据查询,条件表达式中的比较操作 集合成员运算 查询至少有一门成绩超过S4一门成绩的学生学号 Select Distinct Sno From SC Where Grade Some( Select Grade From SC Where Sno=S4 ) ;,84,SQL的数据查询,条件表达式中的比较操作 集合成员运算 查询平均成绩最高的学生学号 使用导出表 Select S# From ( Select Sno, AVG(Grade) From SC Group By Sno ) AS TmpTable(S#, AVG_Grade) Where AVG_Grade = ALL ( Select AVG(Grade) From SC G
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绵阳三诊试题英语及答案
- 漳州校聘面试题及答案
- 系统架构设计师考试文化适应能力的培养试题及答案
- 育婴师科学知识考试试题及答案
- 药剂学考生必知试题及答案
- 医学基础知识科研能力题目与答案
- 电力交易员试题及答案
- 药动学与药效学基本知识试题及答案
- 把握光电工程师证书考试的评估标准试题及答案
- 公基法律试题及答案
- x-y数控工作台机电系统设计
- 北京中医药大学个人自荐信
- 工程交付使用表
- 电子物证专业考试复习题库(含答案)
- 公司清算报告计划工商局版
- 欣赏 牧童短笛
- (完整版)BrownBear绘本附配音课件
- T∕CADERM 3035-2020 严重创伤院内救治流程和规范
- 脐血分血及CIK细胞培养流程
- LNG站、槽车事故案例
- (完整版)螺丝分类命名及编码
评论
0/150
提交评论