数据库系统概论课件(三)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2020年1月19日第三章关系数据库标准语言SQL1第三章关系数据库标准语言SQL3.1SQL概述3.2学生-课程数据库3.3数据查询★3.4数据定义★3.5数据更新★3.6视图★2020年1月19日第三章关系数据库标准语言SQL23.1SQL概述•SQL(StructuredQueryLanguage)是结构化查询语言。它是用于对存放在计算机数据库中的数据进行组织、管理和检索的工具,是一种用于和关系数据库进行交互通讯的计算机语言。•SQL语言是一个唯一通过了国际标准的关系数据库语言,该语言得到各大数据库厂商的支持,在各种DBMS产品中都能使用。2020年1月19日第三章关系数据库标准语言SQL3SQL语言的发展及标准化•1974年由Boyce和Chamberlin提出。•1986年美国国家标准局ANSI公布了SQL语言标准SQL86,随后ISO通过了该标准。•1989年ISO公布了SQL89,加进了完整性等内容。•1992年ISO公布了SQL92,即SQL2,分初级、中级、完全三级,加进BIT数据类型,支持对远程数据库的访问。•1999年ISO发布了标准化文件ISO/IEC9075:数据库语言SQL(1999),即SQL3,增加了面向对象功能,支持用户自定义函数。•2003年ISO发布了SQL2003。2020年1月19日第三章关系数据库标准语言SQL4SQL的主要特点•集DDL、DML、DCL为一体(一体化)•高度非过程化•面向集合的操作方式•两种使用方式(自含式和嵌入式),统一的语法结构•语言简捷,功能丰富,易学易用2020年1月19日第三章关系数据库标准语言SQL5SQL的功能•数据定义CREATE、ALTER、DROP•数据查询SELECT•数据更新INSERT、UPDATE、DELETE•数据控制COMMIT、ROLLBACKGRANT、REVOKE、DENY操作方式操作对象创建删除修改模式CREATESCHEMADROPSCHEMA表CREATETABLEDROPTABLEALTERTABLE视图CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEX2020年1月19日第三章关系数据库标准语言SQL6SQL的基本概念SQL视图2视图1基本表2基本表1基本表3基本表4存储文件2存储文件1外模式模式内模式SQL支持关系数据库三级模式结构2020年1月19日第三章关系数据库标准语言SQL7SQL的基本概念(续)•基本表–本身独立存在的表–SQL中一个关系就对应一个基本表–一个(或多个)基本表对应一个存储文件–一个表可以带若干索引•存储文件–逻辑结构组成了关系数据库的内模式–物理结构是任意的,对用户透明•视图–从一个或几个基本表导出的表–数据库中只存放视图的定义而不存放视图对应的数据–视图是一个虚表–用户可以在视图上再定义视图2020年1月19日第三章关系数据库标准语言SQL83.2学生-课程数据库•学生-课程模式S-T:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)2020年1月19日第三章关系数据库标准语言SQL9Student表学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept200215121200215122200215123200515125李勇刘晨王敏张立男女女男20191819CSCSMAIS2020年1月19日第三章关系数据库标准语言SQL10Course表课程号Cno课程名Cname先行课Cpno学分Ccredit1234567数据库数学信息系统操作系统数据结构数据处理PASCAL语言5167642434242020年1月19日第三章关系数据库标准语言SQL11SC表学号Sno课程号Cno成绩Grade2002151212002151212002151212002151222002151221232392858890802020年1月19日第三章关系数据库标准语言SQL123.4SQL的数据查询【语句格式】SELECT[ALL|DISTINCT]select_list[INTOnew_table_name]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC|DESC]][COMPUTEclause]2020年1月19日第三章关系数据库标准语言SQL13SQL的五种查询方法简单查询汇总查询连接查询嵌套查询目标列查询条件查询排序查询集合函数查询分组统计查询等值连接非等值连接自身连接相关子查询不相关子查询计算统计查询外连接集合查询2020年1月19日第三章关系数据库标准语言SQL143.3.1简单查询•目标列查询•条件查询•排序查询2020年1月19日第三章关系数据库标准语言SQL15简单查询1:目标列查询•语法SELECT[ALL|DISTINCT]select_listFROMtable_source•目标列select_list的形式–属性名(列名)–*–属性和常数组成的算术表达式字符串常数别名DISTINCT属性名2020年1月19日第三章关系数据库标准语言SQL16查询指定列[例1]查询全体学生的学号与姓名。SELECTSno,SnameFROMStudent;[例2]查询全体学生的姓名、学号、所在系。SELECTSname,Sno,SdeptFROMStudent;2020年1月19日第三章关系数据库标准语言SQL17查询全部列–方法1:在SELECT关键字后面列出所有列名–方法2:将目标列表达式指定为*[例3]查询全体学生的详细记录。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;2020年1月19日第三章关系数据库标准语言SQL18[例4]查询全体学生的姓名及其出生年份。查询经过计算的值SELECTSname,2009-SageFROMStudent;输出结果:Sname2009-Sage李勇1989刘晨1990王敏1991张立19902020年1月19日第三章关系数据库标准语言SQL19查询经过计算的值(续)[例5]查询全体学生的姓名、出生年份和所在系,要求用小写字母表示所有系名。SELECTSname,'YearofBirth:',2009-Sage,ISLOWER(Sdept)FROMStudent;输出结果:Sname'YearofBirth:'2009-SageISLOWER(Sdept)李勇YearofBirth:1989cs刘晨YearofBirth:1990is王敏YearofBirth:1991ma张立YearofBirth:1990is2020年1月19日第三章关系数据库标准语言SQL20使用列别名改变查询结果的列标题SELECTSname姓名,2009-Sage出生年份,ISLOWER(Sdept)系部FROMStudent;输出结果:姓名出生年份系部----------------------------------李勇1989cs刘晨1990is王敏1991ma张立1990is2020年1月19日第三章关系数据库标准语言SQL21消除取值重复的行•如果没有指定DISTINCT关键词,则缺省为ALL。[例6]查询选修了课程的学生学号。SELECTSnoFROMSC;等价于:SELECTALLSnoFROMSC;Sno2002151212002151212002151212002151222002151222020年1月19日第三章关系数据库标准语言SQL22消除取值重复的行(续)•指定DISTINCT关键词,去掉结果表中重复的行。SELECTDISTINCTSnoFROMSC;Sno2002151212002151222020年1月19日第三章关系数据库标准语言SQL23简单查询2:条件查询(WHERE子句)•语法SELECT[ALL|DISTINCT]select_listFROMtable_sourceWHEREsearch_condition•功能–比较测试(=,,,=,,=,!,!)–复合条件测试(NOT、AND、OR)–范围测试(BETWEEN…AND、NOTBETWEEN…AND)–集合测试(IN、NOTIN)–模式匹配测试(LIKE、NOTLIKE)–空值测试(ISNULL、ISNOTNULL)2020年1月19日第三章关系数据库标准语言SQL24(1)比较测试[例7]查询计算机科学系全体学生的名单。SELECTSnameFROMStudentWHERESdept='CS';[例8]查询所有年龄在20岁以下的学生姓名及其年龄。SELECTSname,SageFROMStudentWHERESage20;[例9]查询考试成绩有不及格的学生的学号。SELECTDISTINCTSnoFROMSCWHEREGrade60;2020年1月19日第三章关系数据库标准语言SQL25(2)复合条件测试•用逻辑运算符NOT、AND和OR来联结多个查询条件–优先级由高到低:NOT、AND、OR–可以用括号改变优先级[例23]查询计算机系年龄在20岁以下的学生姓名。SELECTSnameFROMStudentWHERESdept='CS'ANDSage20;2020年1月19日第三章关系数据库标准语言SQL26(3)范围测试•谓词:BETWEEN…AND…NOTBETWEEN…AND…[例10]查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。SELECTSname,Sdept,SageFROMStudentWHERESageBETWEEN20AND23;[例11]查询年龄不在20~23岁之间的学生姓名、系别和年龄。SELECTSname,Sdept,SageFROMStudentWHERESageNOTBETWEEN20AND23;2020年1月19日第三章关系数据库标准语言SQL27(4)集合测试•谓词:IN值表,NOTIN值表[例12]查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。SELECTSname,SsexFROMStudentWHERESdeptIN('IS','MA','CS');[例13]查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。SELECTSname,SsexFROMStudentWHERESdeptNOTIN('IS','MA','CS');2020年1月19日第三章关系数据库标准语言SQL28(5)模式匹配测试•谓词:[NOT]LIKE‘匹配串’[ESCAPE‘换码字符’]•通配符–%(百分号)代表任意长度(长度可以为0)的字符串。–_(下划线)代表任意单个字符。[例15]查询所有姓刘学生的姓名、学号和性别。SELECTSname,Sno,SsexFROMStudentWHERESnameLIKE'刘%';2020年1月19日第三章关系数据库标准语言SQL29[例16]查询姓欧阳且全名为三个汉字的学生的姓名。SELECTSnameFROMStudentWHERESnameLIKE'欧阳__';[例17]查询名字中第2个字为阳字的学生的姓名和学号。SELECTSname,SnoFROMStudentWHERESnameLIKE'__阳%';[例18]查询所有不姓刘的学生姓名。SELECTSname,Sno,SsexFROMStudentWHERESnameNOTLIKE'刘%';2020年1月19日第三章关系数据库标准语言SQL30使用换码字符将通配符转义为普通字符[例19

1 / 120
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功