03关系数据库基本原理-SQL语言打印ppt课件_第1页
03关系数据库基本原理-SQL语言打印ppt课件_第2页
03关系数据库基本原理-SQL语言打印ppt课件_第3页
03关系数据库基本原理-SQL语言打印ppt课件_第4页
03关系数据库基本原理-SQL语言打印ppt课件_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关系数据库基本原理 (2SQL语言 王传栋 南京邮电大学计算机学院 2 内容与要求 知识点 (1知识点一:关系模型概述 (2知识点二:关系数据结构 (3知识点三:关系代数理论 (4知识点四:关系数据库标准语言SQL (5知识点五:关系数据库的规范化理论 实验1 SQL语言的应用 教学基本要求 了解关系数据结构的基本概念,了解关系模型的各种操 作和关系代数的基本原理,掌握关系数据模型的完整性 约束机制,掌握SQL语言,了解函数依赖等基本概念, 掌握关系模式的规范化概念、方法、原理与过程。 3 引言 数据库的应用平台 数据服务器数据服务器 (DBMS) 设计设计 DB 应用服务器应用服务器 (软件

2、软件) 应用程序应用程序 普通用户普通用户 DBA 嵌入式嵌入式 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年

3、 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 2019年,ISO SQL标准 在未来很长一段时间,SQL仍将是关系数据库领 域的主流语言 在软件工

4、程、人工智能领域,SQL已显示出相当 大的潜力 7 SQL简介 SQL数据库的体系结构 用户1用户2用户3用户4 视图1 视图2 基本表1基本表2基本表3基本表4 存储文件1存储文件2存储文件3存储文件4 SQL用户 View Base table Stored file 8 SQL简介 SQL数据库的体系结构 1一个SQL模式Schema是表和约束的集合 2一个表由行集构成,一行是列的序列 3表类型:基本表、视图和导出表 4基本表与存储文件是M:N联系 存储文件与外部存储器的物理文件是一一对应的 5SQL语句执行对基本表和视图查询等操作 在用户看来,两者是一样的,都是表 6SQL用户可以是应

5、用程序,也可以是终端用 户 注:虽然SQL是国际公认的关系数据库标准,但 标准的SQL文档中并没有使用“关系和“数据库 这两个名词 9 SQL简介 SQL组成 1数据定义语言,即SQL DDL 用于定义SQL模式、基本表、视图、索引等结构 2数据操纵语言,即SQL DML 数据查询 数据更新:包括插入、删除和修改三种操作 3嵌入式SQL语言规则 SQL语句嵌入在宿主语言程序中的规则 4数据控制语言,即SQL DCL 授权、完整性规则的描述、事务控制等 10 SQL简介 SQL特点 1灵活和强大的查询功能 SELECT语句能完成相当复杂的查询操作 2SQL不是一个应用开发语言 只提供对数据库的操

6、作功能,不能完成屏幕控制、 菜单管理、报表生成等功能 3SQL是国际标准语言 有利于各种数据库之间交换数据,有利于程序的 移植,有利于实现高度的数据独立性,有利于实 现标准化 4SQL的词汇不多 完成核心功能只用了9个英语动词,它的语法结 构接近英语,因此容易学习和使用 11 SQL的数据定义 SQL模式的创建和撤销 注 方式Schema一词,来自于“ISO SQL标准 协议 Schema在SQL数据库中相当于一个容器 数据库所有的对象如表、视图、索引、用户、存 储过程、触发器等都位于容器内 创建SQL模式,就是定义一个存储空间 在商业DBMS中,大多都使用Database代替 Schema

7、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中支持自定义

8、数据类型,如在 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 (

9、 域完整性约束条件 , 域完整性约束条件 , ) ; 域完整性约束条件 NOT NULL / NULL :列值是否可以为空 UNIQUE :列值唯一,不得重复 DEFAULT :列值空缺时,由系统填写默认值 16 SQL的数据定义 基本表的创建、修改和撤销 表的创建 表级完整性约束条件 主键PRIMARY KEY子句 格式:PRIMARY KEY ( ) 作用:提供实体完整性约束的说明 阐明 系统一般自动在主键上建索引 主键为单属性时,可直接在属性后的域完整性约 束条件中,使用PRIMARY KEY定义主键 17 SQL的数据定义 基本表的创建、修改和撤销 表的创建 表级完整性约束条件 外键F

10、OREIGN KEY子句 格式:Foreign key 外键名 ( ) references (列名表2) on delete 作用:提供参照完整性约束的说明 18 SQL的数据定义 基本表的创建、修改和撤销 表的创建 表级完整性约束条件 外键FOREIGN KEY子句 on delete 子 句的说明 RESTRICT :主表的主键值行不得删除 CASCADE :主表主键值行删除,从表的相关行 随之删除 SET NULL :主表主键值行删除,从表的相关行 的列值设为NULL,前提是该列的值可以为NULL 19 SQL的数据定义 基本表的创建、修改和撤销 表的创建 表级完整性约束条件 检查CH

11、ECK子句 格式:CHECK (约束表达式) 作用:对某元组某属性取值的约束说明 阐明 表创建后是一个空表,需要使用DMLinsert, update,delete语句装入或维护数据行 20 SQL的数据定义 基本表的创建、修改和撤销 表的创建 例如 S(SNO,SNAME,AGE,SEX,NativePlace) 字段含义:学号,姓名,年龄,性别,籍贯 T(TNO,TNAME,TITLE,SEX) 字段含义:教师号,教师姓名,职称,性别 Create Table S ( SNO CHAR(3) , SNAME CHAR(8) NOT NULL, AGE Integer NULL, SEX C

12、HAR(1) DEFAULT M, NativePlace VARCHAR(20) , Primary Key (SNO) , Check (SEX IN (M, F) ) ) ; Create Table T ( TNO CHAR(3) Primary Key , TNAME CHAR(8) UNIQUE , TITLE CHAR(6) NOT NULL, SEX CHAR(1) DEFAULT M , Check (TITLE IN ( 教授, 副教授, 讲师, 助教) ) ) ; SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S

13、3HU17M上海 S4XIA19F四川 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F Create Table C ( CNO CHAR(3) Primary Key , CNAME CHAR(8) , Credit Integer , CreditHours Integer , CPNO CHAR(3) NULL , TNO CHAR(3) NOT NULL , Foreign Key (CPNO) References C(CNO) ON DELETE SET NULL , Foreign Key (TNO) References T ON DELETE S

14、ET NULL ) ; 21 SQL的数据定义 基本表的创建、修改和撤销 表的创建 例如 C(CNO,CNAME,Credit,CreditHours,CPNO,TNO) 字段含义:课程号,课程名,学分,学时数,先修课号,授课教师号 CNO CNAME CreditCreditHours CPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? Create Table SC ( SNO CHAR(3) , CNO CH

15、AR(3) , GRADE DEC(5, 2) , Primary Key (SNO, CNO) , Foreign Key (SNO) References S(SNO) ON DELETE restrict , Foreign Key (CNO) References C ON DELETE cascade , Check ( GRADE Between 0 And 100) ) ; 22 SQL的数据定义 基本表的创建、修改和撤销 表的创建 例如 SC(SNO,CNO,Grade) 字段含义:学号,课程号,成绩 SNO SNAME AGE SEX NativePlace S1WANG20

16、M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 ? ? ? ? 23 SQL的数据定义 基本表的创建、修改和撤销 表的创建 问关于表T、S、C、SC的创建顺序,下列选项正 确的是? A) C T

17、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 cascade restrict CASCADE:引用该列的视图和约束随之删除 RESTRICT:只在没有被引用时才可删除 不是所有的DBMS都支持 25 SQL的数据定义 基本表的创建、修改和撤销 表的修改 句法 ALTER TABLE 修改属性的类型 A

18、lter table modify modify alter column 其他修改,如 补充定义主键,撤销主键定义 补充定义外键,撤销外键定义 定义和撤销别名 26 SQL的数据定义 基本表的创建、修改和撤销 表的撤销 句法 DROP TABLE cascaderestrict 阐明 CASCADE:删除该基本表时,所有引用该基本 表的视图和约束一起自动被删除 RESTRICT:没有视图和约束引用该基本表时, 才能撤销 27 SQL的数据定义 索引的建立和撤销 索引概念 是物理存取路径,不属于逻辑数据模式 RDBMS通常在主键上自动建立索引 查询、更新时自动起作用适当建立索引会提高 查询速度

19、) 句法 创建索引 CREATE UNIQUE INDEX ON 基表名 ( ASCDESC , ASCDESC ) ; 撤销索引DROP INDEX ; UNIQUE索引,只能建立在候选键上 28 SQL的数据定义 索引的建立和撤销 例如 Create index Age_Indexon 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

20、_Index on C(TNO DESC, Credit DESC) ; SNO SNAME AGE SEX NativePlace S3HU17M上海 S2LIU18F山东 S1WANG20M北京 S4XIA20F四川 ? ? CNO CNAME CreditCreditHoursCPNO TNO C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 C1Math348NULLT1 29 SQL的数据更新 数据插入 句法 1单元组的插入 INSERT INTO 基本表名 (列名表) VALUES(元 组值) 2多元组的插入:不是所有版本的DBMS都支持 I

21、NSERT INTO 基本表名 (列名表) VALUES (元组值), , (元组 值) 3查询结果的插入 INSERT INTO 基本表名 (列名表) 4表的插入: INSERT INTO 基本表名1 (列名表) TABLE 基本 表名2 30 SQL的数据更新 数据插入 阐明 若插入的元组值,其属性个数、次序和域,与表 结构的定义一致,则列名表可以省略 否则需要列名表,且列名表的属性个数和次序, 需与待插入值一一对应 数据插入受关系完整性约束的制约 数据类型 实体完整性:主键值唯一,非空 参照完整性:不允许引用不存在的实体 用户自定义的完整性 31 SQL的数据更新 数据插入 例如 Ins

22、ert 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

23、(S5, C8, NULL); C(CNO,CNAME,Credit,CreditHours,CPNO,TNO) S(SNO,SNAME,AGE,SEX,NativePlace) T(TNO,TNAME,TITLE,SEX) SC(SNO,CNO,Grade) 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 S

24、C(Sno, Cno) TABLE SC4 ; SQL的数据更新 C(CNO,CNAME,Credit,CreditHours,CPNO,TNO) S(SNO,SNAME,AGE,SEX,NativePlace) T(TNO,TNAME,TITLE,SEX) SC(SNO,CNO,Grade) 33 SQL的数据更新 数据插入 例如,问: Insert Into SC Values(S4, C569, 105) ; Insert Into SC Values(S4, C5,105) ; SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S

25、3HU17M上海 S4XIA19F四川 CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAMETITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? 34 SQL的数据更新 数据插入 例如,问: Insert Into SC Values

26、(S4, C5, 95) ; Insert Into SC Values(S4, C4, 95) ; 如图示4条相关数据的插入顺序 是什么? SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? ? ? CNO CNAME C

27、redit CreditHours CPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 35 SQL的数据更新 数据删除 句法 DELETE FROM WHERE 条件表 达式 语义 是从基本表中删除满足条件表达式的元组 留意 DELETE语句只能从一个基本表中删除元组 WHERE子句中条件可以嵌套,也可以是来自几 个基本表的复合条件 如果没有WHERE子句,则删除表的所有元组, 表成为空表 36 SQL的数据更新 数据删除 例如 Delete From SC Where Grade is NULL ; D

28、elete 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 ); ? ? CNO CNAME CreditCreditHoursCPNO TNO C1Math3

29、48NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 Create Table SC ( SNO CHAR(3) , CNO CHAR(3) , GRADE DEC(5, 2) , Primary Key (SNO, CNO) , Foreign Key (SNO) References S(SNO) ON DELETE restrict , Foreign

30、 Key (CNO) References C ON DELETE cascade , Check ( GRADE Between 0 And 100) ) ; 37 SQL的数据更新 数据删除 例如,问 Delete From S Where Sname Like %U% ; SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4D

31、B3.556C1T1 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? 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 Sn

32、ame Like %U% ; SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T

33、1ZHAO讲师M T2LIU教授F ? ? 39 SQL的数据更新 数据删除 例如,问 如图示4条相关数据的删除顺序是什么? Drop Table SC 与 Delete From SC 的区别是什么 TRUNCATE TABLE SC SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 SNO CNO Gr

34、ade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? ? ? 40 SQL的数据更新 数据删除 当LIU老师不再教授课程时,删除其基本信息 Delete From T Where Tname = LIU AND Tno Not in ( Select Tno From C) 当PM课程没人选修时,删除这门课程信息 当WANG同学不再选修课程时,删除其基本信息 SNO SNAME AGE SE

35、X NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? 41 SQ

36、L的数据更新 数据删除 TRUNCATE TABLE 与 DELETE From 功能上相同:均删除表中的全部行 但 TRUNCATE TABLE 比 DELETE 速度快,且 使用的系统和事务日志资源少 DELETE 语句每次删除一行,并在事务日志中为 所删除的每行记录一项 TRUNCATE TABLE 通过释放存储表数据所用的 数据页来删除数据,并且只在事务日志中记录页 的释放 42 SQL的数据更新 数据删除 TRUNCATE TABLE 与 DELETE From TRUNCATE TABLE 删除表中的所有行,但表结 构及其列、约束、索引等保持不变;新行标识所 用的计数值重置为该列的

37、种子,如果想保留标识 计数值,应使用 DELETE 如果要删除表定义及其数据,应使用 DROP TABLE 语句 对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子 句的 DELETE 语句 由于 TRUNCATE TABLE 不记录在日志中,所以 它不能激活触发器 TRUNCATE TABLE 不能用于参与了索引视图的 表 43 SQL的数据更新 数据修改 句法 UPDATE SET 列名=值表达式,列名=值表达 式ROW = (元组) WHERE 条件表达式 语义 修改基本表中满足条件表达式元组的指定属性值 阐明 WHERE子

38、句表示要修改的元组需满足的条件 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 ; SNO SNAME AGE SEX NativePla

39、ce S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 45 SQL的数据更新 数据修改

40、 例如 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 ; SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4N

41、ULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 46 SQL的数据更新 数据修改 例如 Update SC Set Grade = 60 Where Grade is NULL ; Update SC Set Grade = Grade + 60 Where Grade is NULL ; SNO SN

42、AME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556

43、C1T1 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 ) ; SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 SNO

44、CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 48 SQL的数据更新 数据修改 例如 Update SC Set Grade = Grade * 1.5 Where Sno= S2

45、 and Cno= C3 ; Update C Set Tno = T3 Where Cno= C3 ; SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C4

46、80 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? 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 ; SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F

47、四川 CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 TNO TNAME TITLE SEX T1ZHAO讲师M T2LIU教授F ? ? ? ? ? ? ? ? 50 SQL的数据查询 SELECT语句的基本结构 句型 SELECT FROM WHERE 只有SEL

48、ECT和FROM子句是每个SQL查询语句 所必需的 语义 例如 查询选修了DB课程的学生的姓名 SELECT A1, ,An FROMR1, , Rn WHERE F ; A1, , An(F(R1 Rn) ) 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 S.SNO SNAME C.CNO CNAME SC.SNO SC.

49、CNO GRADE SCSC SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川S CNOCNAMECreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1C SNOCNOGrade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 SC 1000行 1000行 10000行 C

50、(CNO,CNAME,Credit,CreditHours,CPNO,TNO) S(SNO,SNAME,AGE,SEX,NativePlace) T(TNO,TNAME,TITLE,SEX) SC(SNO,CNO,Grade) 52 SQL的数据查询 SELECT语句的基本结构 例如 SNAME(CNAME=DB(S SC C) 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 ( Selec

51、t Cno From C Where Cname=DB ) ; CNO(CNAME=DB (C) SNO,CNO(SC) SNO,SNAME (S) SNO( ) SNAME ( ) 1000110000 = 1000 1000 = 1000 = 1000 = 1000 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选择和投影 SNO SNAM

52、E AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C2NULL S2C390 S2C4NULL S3C185 S3C480 S4C2NULL S4C475 54 SQL的数据查询 SELECT语句的基本结构 常见的3种SELECT语句写法 例如:查询选修C2课程的学生学号和姓名 2IN嵌套查询 Select Sno, Sname From S Where Sno in ( Select Sno From SC Where Cn

53、o=C2 ) ; Select Sno, Sname From S Where C2 in ( Select Cno From SC Where Sno=S.Sno ) ; 区别 1由里到外,内层查询执行1次结果供给外层 使用 2依赖于外层值,内层执行n次结果供给外层 使用 SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C2NULL S2C390 S2C4NULL S3C185 S3C480 S4C2NUL

54、L S4C475 ? ? 55 SQL的数据查询 SELECT语句的基本结构 常见的3种SELECT语句写法 例如:查询选修C2课程的学生学号和姓名 3EXISTS嵌套查询 Select Sno, Sname From S Where EXISTS ( Select * From SC Where Sno=S.Sno and Cno=C2 ) ; 阐明 13个位置特殊,需注意 2) EXISTS表示“”,判定内层查询结果是否为非 空, 即至少存在一个元组满足外查询的条件) SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上

55、海 S4XIA19F四川 SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C2NULL S2C390 S2C4NULL S3C185 S3C480 S4C2NULL S4C475 56 SQL的数据查询 SELECT语句的完整结构 句型 执行过程 读取FROM子句中的数据源,执行笛卡尔积 () 选择满足WHERE子句值的元组 按GROUP BY子句指定的列值,将元组进行 分组 在分出的所有组中,选取满足HAVING子句 值的组 按SELECT子句的指定项,求值投影输 出 按ORDER BY子句对式的输出进行排序 SELECT FROM WHERE GRO

56、UP BY HAVING ORDER BY , 57 SQL的数据查询 SELECT语句的完整结构 查询中的5个聚合函数 函数释义 COUNT COUNT( * ):统计元组的个数 COUNT( ) :对指定列,统计列值个数 SUMSUM( ):对数值型列,求和 AVGAVG( ):对数值型列,求平均值 MAXMAX( ):对指定列,求最大值 MINMIN( ):对指定列,求最小值 58 SQL的数据查询 SELECT语句的完整结构 应用示例 统计选修课程的人次数 Select COUNT(Sno) as 人次数 From SC ; 统计选修课程的人数 Select COUNT(Distinc

57、t Sno) as 人数 From SC ; SNO CNO Grade S1C280 S1C370 S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 C(CNO,CNAME,Credit,CreditHours,CPNO,TNO) S(SNO,SNAME,AGE,SEX,NativePlace) T(TNO,TNAME,TITLE,SEX) SC(SNO,CNO,Grade) 59 SQL的数据查询 SELECT语句的完整结构 应用示例 统计男学生的总人数和平均年龄 Select COUNT(*) as 总人数,

58、 AVG(Age) as 平均年龄 From S Where Sex = M ; 按性别统计学生的总人数和平均年龄 Select Sex, COUNT(*) as 总人数, AVG(Age) as 平均年龄 From S Group By Sex ; SNO SNAME AGE SEX NativePlace S1WANG20M北京 S2LIU18F山东 S3HU17M上海 S4XIA19F四川 C(CNO,CNAME,Credit,CreditHours,CPNO,TNO) S(SNO,SNAME,AGE,SEX,NativePlace) T(TNO,TNAME,TITLE,SEX) SC(

59、SNO,CNO,Grade) 60 SQL的数据查询 SELECT语句的完整结构 应用示例 统计每门课程的学生选修人数,要求显示课程号、 课程名和学生人数 Select C.Cno, Cname, COUNT(Sno) as 学生人 数 From C, SC Where C.Cno = SC.Cno Group By C.Cno, Cname ; CNO CNAME CreditCreditHoursCPNO TNO C1Math348NULLT1 C2English464NULLT2 C3PM232C2T2 C4DB3.556C1T1 SNO CNO Grade S1C280 S1C370

60、S1C485 S2C160 S2C275 S2C390 S2C4NULL S3C185 S3C480 S4C285 S4C475 C(CNO,CNAME,Credit,CreditHours,CPNO,TNO) S(SNO,SNAME,AGE,SEX,NativePlace) T(TNO,TNAME,TITLE,SEX) SC(SNO,CNO,Grade) C(CNO,CNAME,Credit,CreditHours,CPNO,TNO) S(SNO,SNAME,AGE,SEX,NativePlace) T(TNO,TNAME,TITLE,SEX) SC(SNO,CNO,Grade) 61 SQ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论