关系数据库标准语言SQLppt课件.ppt_第1页
关系数据库标准语言SQLppt课件.ppt_第2页
关系数据库标准语言SQLppt课件.ppt_第3页
关系数据库标准语言SQLppt课件.ppt_第4页
关系数据库标准语言SQLppt课件.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

29 03 2020 1 第三章关系数据库标准语言SQL 3 1SQL概述3 2学生课程数据库3 3数据定义3 4数据查询3 5数据更新3 6视图3 8小结 29 03 2020 2 3 1SQL概述 SQL的特点1 综合统一2 高度非过程化3 面向集合的操作方式4 以同一种语法结构提供两种使用方法5 语言简洁 易学易用 29 03 2020 3 5 语言简捷 易学易用 29 03 2020 4 SQL语言支持的关系数据库的三级逻辑结构 基本表 BaseTable 和视图 View SQL语言支持数据库的三级模式结构 3 1 2SQL语言的基本概念 29 03 2020 5 第三章关系数据库标准语言SQL 3 1SQL概述3 2学生课程数据库3 3数据定义3 4数据查询3 5数据更新3 6视图3 8小结 29 03 2020 6 3 2学生课程数据库 学生 a Student 29 03 2020 7 3 2学生课程数据库 课程 b Course 29 03 2020 8 3 2学生课程数据库 选课 c SC 29 03 2020 9 第三章关系数据库标准语言SQL 3 1SQL概述3 2学生课程数据库3 3数据定义3 4数据查询3 5数据更新3 6视图3 8小结 29 03 2020 10 3 3数据定义 29 03 2020 11 3 3 1模式的定义与删除 一定义模式CREATESCHEMAAUTHORIZATION二删除模式DROPSCHEMA 29 03 2020 12 创建 修改 删除数据库 创建数据库CREATEDATABASE删除数据库DROPDATABASE 29 03 2020 13 3 3 2基本表的定义 删除与修改 一 定义基本表CREATETABLE 所要定义的基本表的名字 组成该表的各个属性 列 涉及相应属性列的完整性约束条件 涉及一个或多个属性列的完整性约束条件 详细 29 03 2020 14 定义基本表 续 常用完整性约束主码约束 PRIMARYKEY唯一性约束 UNIQUE非空值约束 NOTNULL参照完整性约束PRIMARYKEY与UNIQUE的区别 29 03 2020 15 例题 例5 建立一个 学生 表Student 它由学号Sno 姓名Sname 性别Ssex 年龄Sage 所在系Sdept五个属性组成 其中学号不能为空 值是唯一的 并且姓名取值也唯一 CREATETABLEStudent SnoCHAR 5 NOTNULLUNIQUE SnameCHAR 20 UNIQUE SsexCHAR 1 SageINT SdeptCHAR 15 29 03 2020 16 例题 续 例7 建立一个 学生选课 表SC 它由学号Sno 课程号Cno 修课成绩Grade组成 其中 Sno Cno 为主码 CREATETABLESC SnoCHAR 5 CnoCHAR 3 Gradeint Primarykey Sno Cno 29 03 2020 17 例题 续 29 03 2020 18 二 数据类型 当用SQL语句定义表时 需要为表中的每一个字段设置一个数据类型 用来指定字段所存放的数据是整数 字符串 货币或是其它类型的数据 SQLSERVER的数据类型有很多种 分为以下9类 1 整数数据类型 依整数数值的范围大小 有BIT INT SMALLINT TINYINT四种 2 精确数值类型 用来定义可带小数部分的数字 有NUMERIC和DECIMAL两种 二者相同 但建议使用DECIMAL 如 123 0 8000 56 29 03 2020 19 3 日期时间数据类型 用来表示日期与时间 依时间范围与精确程度可分为DATETIME与SMALLDATETIME两种 如 1998 06 0815 30 004 字符串数据类型 用来表示字符串的字段 包括 CHAR VARCHAR TEXT三种 如 数据库 5 二进制数据类型 用来定义二进制码的数据 有 BINARY VARBINARY IMAGE三种 通常用十六进制表示 如 OX5F3C 其它 货币型 浮点型 实数型 UNICODE字符型 29 03 2020 20 三 模式与基本表 一个基本表属于一个模式 一个模式包含多个基本表定义基本表所属的模式 三种方法 定义时显式的给出模式名创建模式语句时同时创建表先设置所属模式 再在相应的模式下定义基本表 29 03 2020 21 四 修改基本表 ALTERTABLE ADD 完整性约束 DROP ALTERCOLUMN 要修改的基本表ADD子句 增加新列和新的完整性约束条件DROP子句 删除指定的完整性约束条件ALTERCOLUMN子句 用于修改列名和数据类型 29 03 2020 22 例题 例8 向Student表增加 入学时间 列 其数据类型为日期型 ALTERTABLEStudentADDScomeDATE 不论基本表中原来是否已有数据 新增加的列一律为空值 29 03 2020 23 例9 将年龄的数据类型改为半字长整数 ALTERTABLEStudentALTERCOLUMNSageSMALLINT 注 修改原有的列定义有可能会破坏已有数据 29 03 2020 24 例题 例10 删除学生姓名必须取唯一值的约束 ALTERTABLEStudentDROPUNIQUE Sname 29 03 2020 25 语句格式 续 删除属性列直接 间接删除把表中要保留的列及其内容复制到一个新表中删除原表再将新表重命名为原表名 29 03 2020 26 五 删除基本表 DROPTABLE RESTRICT CASCADE 基本表删除时 数据 表上的索引都删除 表上的视图往往仍然保留 但无法引用删除基本表时 系统会从数据字典中删去有关该基本表及其索引的描述 29 03 2020 27 例题 例11 删除Student表DROPTABLEStudentCASCADE 例12 RISTRICT时的删除Page88 29 03 2020 28 3 3 2建立与删除索引 建立索引是加快查询速度的有效手段建立索引DBA或表的属主 即建立表的人 根据需要建立有些DBMS自动建立以下列上的索引PRIMARYKEYUNIQUE维护索引DBMS自动完成使用索引DBMS自动选择是否使用索引以及使用哪些索引 29 03 2020 29 一 建立索引 语句格式CREATE UNIQUE CLUSTER INDEXON 用指定要建索引的基本表名字索引可以建立在该表的一列或多列上 各列名之间用逗号分隔用指定索引值的排列次序 升序 ASC 降序 DESC 缺省值 ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录CLUSTER表示要建立的索引是聚簇索引 29 03 2020 30 例题 例14 为学生 课程数据库中的Student Course SC三个表建立索引 其中Student表按学号升序建唯一索引 Course表按课程号升序建唯一索引 SC表按学号升序和课程号降序建唯一索引 CREATEUNIQUEINDEXStusnoONStudent Sno CREATEUNIQUEINDEXCoucnoONCourse Cno CREATEUNIQUEINDEXSCnoONSC SnoASC CnoDESC 29 03 2020 31 建立索引 续 唯一值索引对于已含重复值的属性列不能建UNIQUE索引对某个列建立UNIQUE索引后 插入新记录时DBMS会自动检查新记录在该列上是否取了重复值 这相当于增加了一个UNIQUE约束 29 03 2020 32 建立索引 续 聚簇索引建立聚簇索引后 基表中数据也需要按指定的聚簇属性值的升序或降序存放 也即聚簇索引的索引项顺序与表中记录的物理顺序一致 例13 CREATECLUSTERINDEXStusnameONStudent Sname 在Student表的Sname 姓名 列上建立一个聚簇索引 而且Student表中的记录将按照Sname值的升序存放 29 03 2020 33 建立索引 续 在一个基本表上最多只能建立一个聚簇索引聚簇索引的用途 对于某些类型的查询 可以提高查询效率聚簇索引的适用范围很少对基表进行增删操作很少对其中的变长列进行修改操作 29 03 2020 34 二 删除索引 DROPINDEX 删除索引时 系统会从数据字典中删去有关该索引的描述 例15 删除Student表的Stusname索引 DROPINDEXStusname 29 03 2020 35 3 4查询 3 4 1单表查询3 4 2连接查询3 4 3嵌套查询3 4 4集合查询3 4 5SELECT语句的一般格式 29 03 2020 36 概述 语句格式SELECT ALL DISTINCT FROM WHERE GROUPBY HAVING ORDERBY ASC DESC 29 03 2020 37 语句格式 SELECT子句 指定要显示的属性列或表达式FROM子句 指定查询对象 基本表或视图 WHERE子句 指定查询条件GROUPBY子句 对查询结果按指定列的值分组 该属性列值相等的元组为一个组 通常会在每组中作用集函数 HAVING短语 筛选出只有满足指定条件的组ORDERBY子句 对查询结果表按指定列值的升序或降序排序 29 03 2020 38 示例数据库 学生 课程数据库学生表 Student Sno Sname Ssex Sage Sdept 课程表 Course Cno Cname Cpno Ccredit 学生选课表 SC Sno Cno Grade 29 03 2020 39 3 4查询 3 4 1单表查询3 4 2连接查询3 4 3嵌套查询3 4 4集合查询3 4 5SELECT语句的一般格式 29 03 2020 40 3 4 1单表查询 查询仅涉及一个表 是一种最简单的查询操作一 选择表中的若干列二 选择表中的若干元组三 对查询结果排序四 使用集函数五 对查询结果分组 29 03 2020 41 1 查询指定列 例1 查询全体学生的学号与姓名 SELECTSno SnameFROMStudent 例2 查询全体学生的姓名 学号 所在系 SELECTSname Sno SdeptFROMStudent 29 03 2020 42 2 查询全部列 例3 查询全体学生的详细记录 SELECTSno Sname Ssex Sage SdeptFROMStudent 或SELECT FROMStudent 29 03 2020 43 3 查询经过计算的值 SELECT子句的为表达式算术表达式字符串常量函数列别名等 29 03 2020 44 3 查询经过计算的值 例4 查全体学生的姓名及其出生年份 SELECTSname 2000 SageFROMStudent 输出结果 Sname2000 Sage 李勇1976刘晨1977王名1978张立1978 29 03 2020 45 3 查询经过计算的值 例5 查询全体学生的姓名 出生年份和所有系 要求用小写字母表示所有系名 SELECTSname YearofBirth 2004 Sage ISLOWER Sdept FROMStudent 29 03 2020 46 例题 续 输出结果 Sname YearofBirth 2004 SageISLOWER Sdept 李勇YearofBirth 1984cs刘晨YearofBirth 1985is王名YearofBirth 1986ma张立YearofBirth 1985is 29 03 2020 47 例5 1 使用列别名改变查询结果的列标题 SELECTSnameNAME YearofBirth BIRTH 2000 SageBIRTHDAY ISLOWER Sdept DEPARTMENTFROMStudent 输出结果 NAMEBIRTHBIRTHDAYDEPARTMENT 李勇YearofBirth 1984cs刘晨YearofBirth 1985is王名YearofBirth 1986ma张立YearofBirth 1984is 29 03 2020 48 二 选择表中的若干元组 消除取值重复的行查询满足条件的元组 29 03 2020 49 1 消除取值重复的行 在SELECT子句中使用DISTINCT短语假设SC表中有下列数据SnoCnoGrade 9500119295001285950013889500229095002380 29 03 2020 50 ALL与DISTINCT 例6 查询选修了课程的学生学号 1 SELECTSnoFROMSC 或 默认ALL SELECTALLSnoFROMSC 结果 Sno 200215121200215121200215121200215122200215122 29 03 2020 51 例题 续 2 SELECTDISTINCTSnoFROMSC 结果 Sno 200215121200215122 29 03 2020 52 例题 续 注意DISTINCT短语的作用范围是所有目标列例 查询选修课程的各种成绩错误的写法SELECTDISTINCTCno DISTINCTGradeFROMSC 正确的写法SELECTDISTINCTCno GradeFROMSC 29 03 2020 53 2 查询满足条件的元组 WHERE子句常用的查询条件 29 03 2020 54 1 比较大小 在WHERE子句的中使用比较运算符 20 例9 查询考试成绩有不及格的学生的学号 29 03 2020 55 2 确定范围 使用谓词BETWEEN AND NOTBETWEEN AND 例10 查询年龄在20 23岁 包括20岁和23岁 之间的学生的姓名 系别和年龄 SELECTSname Sdept SageFROMStudentWHERESageBETWEEN20AND23 29 03 2020 56 例题 续 例11 查询年龄不在20 23岁之间的学生姓名 系别和年龄 SELECTSname Sdept SageFROMStudentWHERESageNOTBETWEEN20AND23 29 03 2020 57 3 确定集合 使用谓词IN NOTIN 用逗号分隔的一组取值 例12 查询信息系 IS 数学系 MA 和计算机科学系 CS 学生的姓名和性别 SELECTSname SsexFROMStudentWHERESdeptIN IS MA CS 29 03 2020 58 3 确定集合 例13 查询既不是信息系 数学系 也不是计算机科学系的学生的姓名和性别 SELECTSname SsexFROMStudentWHERESdeptNOTIN IS MA CS 29 03 2020 59 4 字符串匹配 NOT LIKE ESCAPE 指定匹配模板匹配模板 固定字符串或含通配符的字符串当匹配模板为固定字符串时 可以用 运算符取代LIKE谓词用 或运算符取代NOTLIKE谓词 29 03 2020 60 通配符 百分号 代表任意长度 长度可以为0 的字符串例 a b表示以a开头 以b结尾的任意长度的字符串 如acb addgb ab等都满足该匹配串 下横线 代表任意单个字符例 a b表示以a开头 以b结尾的长度为3的任意字符串 如acb afb等都满足该匹配串 29 03 2020 61 ESCAPE短语 当用户要查询的字符串本身就含有 或 时 要使用ESCAPE 短语对通配符进行转义 29 03 2020 62 例题 1 匹配模板为固定字符串 例14 查询学号为200215121的学生的详细情况 SELECT FROMStudentWHERESnoLIKE 200215121 等价于 SELECT FROMStudentWHERESno 200215121 29 03 2020 63 例题 续 2 匹配模板为含通配符的字符串 例15 查询所有姓刘学生的姓名 学号和性别 SELECTSname Sno SsexFROMStudentWHERESnameLIKE 刘 29 03 2020 64 例题 续 匹配模板为含通配符的字符串 续 例16 查询姓 欧阳 且全名为三个汉字的学生的姓名 SELECTSnameFROMStudentWHERESnameLIKE 欧阳 29 03 2020 65 例题 续 匹配模板为含通配符的字符串 续 例17 查询名字中第2个字为 阳 字的学生的姓名和学号 SELECTSname SnoFROMStudentWHERESnameLIKE 阳 29 03 2020 66 例题 续 匹配模板为含通配符的字符串 续 例18 查询所有不姓刘的学生姓名 SELECTSname Sno SsexFROMStudentWHERESnameNOTLIKE 刘 29 03 2020 67 例题 续 3 使用换码字符将通配符转义为普通字符 例19 查询DB Design课程的课程号和学分 SELECTCno CcreditFROMCourseWHERECnameLIKE DB Design ESCAPE 29 03 2020 68 例题 续 使用换码字符将通配符转义为普通字符 续 例20 查询以 DB 开头 且倒数第3个字符为i的课程的详细情况 SELECT FROMCourseWHERECnameLIKE DB i ESCAPE 29 03 2020 69 5 涉及空值的查询 使用谓词ISNULL或ISNOTNULL ISNULL 不能用 NULL 代替 例21 某些学生选修课程后没有参加考试 所以有选课记录 但没有考试成绩 查询缺少成绩的学生的学号和相应的课程号 SELECTSno CnoFROMSCWHEREGradeISNULL 29 03 2020 70 例题 续 例22 查所有有成绩的学生学号和课程号 SELECTSno CnoFROMSCWHEREGradeISNOTNULL 29 03 2020 71 6 多重条件查询 用逻辑运算符AND和OR来联结多个查询条件AND的优先级高于OR可以用括号改变优先级可用来实现多种其他谓词 NOT IN NOT BETWEEN AND 29 03 2020 72 例题 例23 查询计算机系年龄在20岁以下的学生姓名 SELECTSnameFROMStudentWHERESdept CS ANDSage 20 29 03 2020 73 改写 例12 例12 查询信息系 IS 数学系 MA 和计算机科学系 CS 学生的姓名和性别 SELECTSname SsexFROMStudentWHERESdeptIN IS MA CS 可改写为 SELECTSname SsexFROMStudentWHERESdept IS ORSdept MA ORSdept CS 29 03 2020 74 改写 例10 例10 查询年龄在20 23岁 包括20岁和23岁 之间的学生的姓名 系别和年龄 SELECTSname Sdept SageFROMStudentWHERESageBETWEEN20AND23 可改写为 SELECTSname Sdept SageFROMStudentWHERESage 20ANDSage 23 29 03 2020 75 三 对查询结果排序 使用ORDERBY子句可以按一个或多个属性列排序升序 ASC 降序 DESC 缺省值为升序当排序列含空值时ASC 排序列为空值的元组最后显示DESC 排序列为空值的元组最先显示 29 03 2020 76 对查询结果排序 续 例24 查询选修了3号课程的学生的学号及其成绩 查询结果按分数降序排列 SELECTSno GradeFROMSCWHERECno 3 ORDERBYGradeDESC 29 03 2020 77 对查询结果排序 续 例25 查询全体学生情况 查询结果按所在系的系号升序排列 同一系中的学生按年龄降序排列 SELECT FROMStudentORDERBYSdept SageDESC 29 03 2020 78 四 使用集函数 5类主要集函数计数COUNT DISTINCT ALL COUNT DISTINCT ALL 计算总和SUM DISTINCT ALL 计算平均值AVG DISTINCT ALL 29 03 2020 79 使用集函数 续 求最大值MAX DISTINCT ALL 求最小值MIN DISTINCT ALL DISTINCT短语 在计算时要取消指定列中的重复值ALL短语 不取消重复值ALL为缺省值 29 03 2020 80 使用集函数 续 例26 查询学生

温馨提示

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

评论

0/150

提交评论