数据库系统概论 第3章a.ppt_第1页
数据库系统概论 第3章a.ppt_第2页
数据库系统概论 第3章a.ppt_第3页
数据库系统概论 第3章a.ppt_第4页
数据库系统概论 第3章a.ppt_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

数据库系统概论AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL 3 1SQL概述 SQL StructuredQueryLanguage 结构化查询语言 是关系数据库的标准语言 SQL语言的标准化历程 1974年 由Boyce和Chamberlin提出1986年10月 AmericanNationalStandardInstitute的数据库委员会X3H2将SQL作为关系数据库语言的美国标准 并公布了SQL 86版本 1987年 ISO通过了SQL 86标准 1992年 ISO公布了SQL 92标准 ISO公布了SQL 99 SQL3 标准 SQL2003 SQL2007参考网站 SQL的特点 功能综合统一 数据定义语言 数据操纵语言 数据控制语言高度非过程化面向集合的操作方式以同一种语法结构提供两种使用方式 自含式语言 嵌入式语言语言简洁 易学易用 SQL的基本概念 SQL支持关系数据库三级模式结构 SQL的基本概念 基本表本身独立存在的表SQL中一个关系就对应一个基本表一个 或多个 基本表对应一个存储文件一个表可以带若干索引存储文件逻辑结构组成了关系数据库的内模式物理结构是任意的 对用户透明视图从一个或几个基本表导出的表数据库中只存放视图的定义而不存放视图对应的数据视图是一个虚表用户可以在视图上再定义视图 3 2学生 课程数据库 学生 课程模式S T 学生表 Student Sno Sname Ssex Sage Sdept 课程表 Course Cno Cname Cpno Ccredit 学生选课表 SC Sno Cno Grade Student表 Course表 SC表 数据定义 数据库的创建与删除 CREATEDATABASE作用 创建一个新数据库及存储该数据库的文件示例 CREATEDATABASEteachingDROPDATABASE 基本表的定义 删除与修改 一 定义基本表CREATETABLE 所要定义的基本表的名字 组成该表的各个属性 列 涉及相应属性列的完整性约束条件 涉及一个或多个属性列的完整性约束条件 定义基本表 续 常用完整性约束主码约束 PRIMARYKEY唯一性约束 UNIQUE非空值约束 NOTNULL参照完整性约束 学生表Student 例5 建立 学生 表Student 学号是主码 姓名取值唯一 CREATETABLEStudent SnoCHAR 9 PRIMARYKEY 列级完整性约束条件 SnameCHAR 20 UNIQUE Sname取唯一值 SsexCHAR 2 SageSMALLINT SdeptCHAR 20 主码 例题 续 课程表Course 例6 建立一个 课程 表CourseCREATETABLECourse CnoCHAR 4 PRIMARYKEY CnameCHAR 40 CpnoCHAR 4 CcreditSMALLINT FOREIGNKEY Cpno REFERENCESCourse Cno 先修课 Cpno是外码被参照表是Course被参照列是Cno 学生选课表SC 例7 建立一个 学生选课 表SCCREATETABLESC SnoCHAR 9 CnoCHAR 4 GradeSMALLINT PRIMARYKEY Sno Cno 主码由两个属性构成 必须作为表级完整性进行定义 FOREIGNKEY Sno REFERENCESStudent Sno 表级完整性约束条件 Sno是外码 被参照表是Student FOREIGNKEY Cno REFERENCESCourse Cno 表级完整性约束条件 Cno是外码 被参照表是Course SQL数据类型 SQL中域的概念用数据类型来实现定义表的属性时需要指明其数据类型及长度选用哪种数据类型取值范围要做哪些运算 SQL数据类型 修改基本表 ALTERTABLE ADD 完整性约束 DROP ALTERCOLUMN 修改基本表 例8 向Student表增加 入学时间 列 其数据类型为日期型 ALTERTABLEStudentADDS entranceDATE 不论基本表中原来是否已有数据 新增加的列一律为空值 例9 将年龄的数据类型由字符型 假设原来的数据类型是字符型 改为整数 ALTERTABLEStudentALTERCOLUMNSageINT 例10 增加课程名称必须取唯一值的约束条件 ALTERTABLECourseADDUNIQUE Cname 删除基本表 DROPTABLE 删除基本表 例11 删除Student表DROPTABLEStudentCASCADE 基本表定义被删除 数据被删除表上建立的索引 视图 触发器等一般也将被删除 删除基本表 例12 若表上建有视图 选择RESTRICT时表不能删除CREATEVIEWIS StudentASSELECTSno Sname SageFROMStudentWHERESdept IS DROPTABLEStudentRESTRICT ERROR cannotdroptableStudentbecauseotherobjectsdependonit 删除基本表 续 例12 如果选择CASCADE时可以删除表 视图也自动被删除DROPTABLEStudentCASCADE NOTICE dropcascadestoviewIS StudentSELECT FROMIS Student ERROR relation IS Student doesnotexist 删除基本表 续 DROPTABLE时 SQL99与3个RDBMS的处理策略比较 R表示RESTRICT C表示CASCADE 表示不能删除基本表 表示能删除基本表 保留 表示删除基本表后 还保留依赖对象 索引的建立与删除 索引 对数据表中一个或多个列进行排序的结构 每个索引都有一个特定的搜索码与表中的记录关联 索引按顺序存储搜索码的值 索引主要用于提高查询速度 索引的类型 聚集索引表中数据的物理存储顺序按照索引键的排序次序存储一个数据表只能建立一个聚集索引非聚集索引 使用索引的准则 对索引的基本理解 索引会占用磁盘空间 并且降低插入 删除和更新行的速度 但会提高查询速度 应在频繁进行查询操作的列上建立索引系统在存储数据是自动选择合适的索引作为存储路径 用户不必也不能选择索引 索引 RDBMS中索引一般采用B 树 HASH索引来实现B 树索引具有动态平衡的优点HASH索引具有查找速度快的特点采用B 树 还是HASH索引则由具体的RDBMS来决定索引是关系数据库的内部实现技术 属于内模式的范畴CREATEINDEX语句定义索引时 可以定义索引是唯一索引 非唯一索引或聚簇索引 建立索引 语句格式CREATE UNIQUE CLUSTERED NONCLUSTERED INDEXON 建立索引 例13 CREATECLUSTEREDINDEXStusnameONStudent Sname 在Student表的Sname 姓名 列上建立一个聚簇索引在最经常查询的列上建立聚簇索引以提高查询效率一个基本表上最多只能建立一个聚簇索引经常更新的列不宜建立聚簇索引 建立索引 例14 为学生 课程数据库中的Student Course SC三个表建立索引 CREATEUNIQUEINDEXStusnoONStudent Sno CREATEUNIQUEINDEXCoucnoONCourse Cno CREATEUNIQUEINDEXSCnoONSC SnoASC CnoDESC 删除索引 DROPINDEX 删除索引时 系统会从数据字典中删去有关该索引的描述 例15 删除Student表的Stusname索引DROPINDEXStusname 数据查询 语句格式SELECT ALL DISTINCT FROM WHERE GROUPBY HAVING ORDERBY ASC DESC 选择表中的若干列 查询指定列 例1 查询全体学生的学号与姓名 例2 查询全体学生的姓名 学号 所在系 SELECTSno SnameFROMStudent SELECTSname Sno SdeptFROMStudent 查询全部列 选出所有属性列 在SELECT关键字后面列出所有列名将指定为 例3 查询全体学生的详细记录 SELECTSno Sname Ssex Sage SdeptFROMStudent 或SELECT FROMStudent 查询经过计算的值 SELECT子句的可以为 算术表达式字符串常量函数 例4 查全体学生的姓名及其出生年份 查询经过计算的值 SELECTSname 2008 SageFROMStudent 查询经过计算的值 例5 查询全体学生的姓名 出生年份和所有系 要求用小写字母表示所有系名 SELECTSname YearofBirth 2008 Sage LOWER Sdept FROMStudent 为结果列起别名 使用列别名改变查询结果的列标题 SELECTSnameNAME YearofBirth BIRTH 2008 SageBIRTHDAY LOWER Sdept DEPARTMENTFROMStudent 选择表中的若干元组 消除取值重复的行如果没有指定DISTINCT关键词 则缺省为ALL 例6 查询选修了课程的学生学号 SELECTSnoFROMSC 等价于 SELECTALLSnoFROMSC 消除取值重复的行 续 指定DISTINCT关键词 去掉表中重复的行 SELECTDISTINCTSnoFROMSC 查询满足条件的元组 表3 4常用的查询条件 例7 查询计算机科学系全体学生的名单 例8 查询所有年龄在20岁以下的学生姓名及其年龄 SELECTSnameFROMStudentWHERESdept CS SELECTSname SageFROMStudentWHERESage 20 例9 查询考试成绩有不及格的学生的学号 SELECTDISTINCTSnoFROMSCWHEREGrade 60 确定范围 谓词 BETWEEN AND NOTBETWEEN AND 例10 查询年龄在20 23岁 包括20岁和23岁 之间的学生的姓名 系别和年龄 SELECTSname Sdept SageFROMStudentWHERESageBETWEEN20AND23 例11 查询年龄不在20 23岁之间的学生姓名 系别和年龄 SELECTSname Sdept SageFROMStudentWHERESageNOTBETWEEN20AND23 确定集合 谓词 IN NOTIN 例12 查询信息系 IS 数学系 MA 和计算机科学系 CS 学生的姓名和性别 SELECTSname SsexFROMStudentWHERESdeptIN IS MA CS 例13 查询既不是信息系 数学系 也不是计算机科学系的学生的姓名和性别 SELECTSname SsexFROMStudentWHERESdeptNOTIN IS MA CS 模糊查询与LIKE 通配符 可与任意长度 包括0 的字符匹配 可与任意一个字符匹配a m张 S T 字符匹配 谓词 NOT LIKE ESCAPE 匹配串为固定字符串 例14 查询学号为200215121的学生的详细情况 SELECT FROMStudentWHERESnoLIKE 200215121 等价于 SELECT FROMStudentWHERESno 200215121 字符匹配 2 匹配串为含通配符的字符串 例15 查询所有姓刘学生的姓名 学号和性别 例16 查询姓 欧阳 且全名为三个汉字的学生的姓名 SELECTSname Sno SsexFROMStudentWHERESnameLIKE 刘 SELECTSnameFROMStudentWHERESnameLIKE 欧阳 字符匹配 例17 查询名字中第2个字为 阳 字的学生的姓名和学号 例18 查询所有不姓刘的学生姓名 SELECTSname Sno SsexFROMStudentWHERESnameNOTLIKE 刘 SELECTSname SnoFROMStudentWHERESnameLIKE 阳 字符匹配 3 使用换码字符将通配符转义为普通字符 例19 查询DB Design课程的课程号和学分 SELECTCno CcreditFROMCourseWHERECnameLIKE DB Design ESCAPE 例20 查询以 DB 开头 且倒数第3个字符为i的课程的详细情况 SELECT FROMCourseWHERECnameLIKE DB i ESCAPE ESCAPE 表示 为换码字符 转义字符 可通过将通配符转义并将其作为文字来查找 使用方括号限定范围使用escape子句进行转义 涉及空值的查询 谓词 ISNULL或ISNOTNULL IS 不能用 代替 例21 某些学生选修课程后没有参加考试 所以有选课记录 但没有考试成绩 查询缺少成绩的学生的学号和相应的课程号 SELECTSno CnoFROMSCWHEREGradeISNULL 例22 查所有有成绩的学生学号和课程号 SELECTSno CnoFROMSCWHEREGradeISNOTNULL 多重条件查询 逻辑运算符 AND和OR来联结多个查询条件AND的优先级高于OR可以用括号改变优先级可用来实现多种其他谓词 NOT IN NOT BETWEEN AND 多重条件查询 例23 查询计算机系年龄在20岁以下的学生姓名 SELECTSnameFROMStudentWHERESdept CS ANDSage 20 多重条件查询 改写 例12 例12 查询信息系 IS 数学系 MA 和计算机科学系 CS 学生的姓名和性别 SELECTSname SsexFROMStudentWHERESdeptIN IS MA CS 或 SELECTSname SsexFROMStudentWHERESdept IS ORSdept MA ORSdept CS ORDERBY子句 ORDERBY子句可以按一个或多个属性列排序升序 ASC 降序 DESC 缺省值为升序当排序列含空值时ASC 排序列为空值的元组最后显示DESC 排序列为空值的元组最先显示 ORDERBY子句 例24 查询选修了3号课程的学生的学号及其成绩 查询结果按分数降序排列 SELECTSno GradeFROMSCWHERECno 3 ORDERBYGradeDESC 例25 查

温馨提示

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

评论

0/150

提交评论