您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 第三章关系数据库标准语言SQL.
SLIDE1SchoolofManagementTianjinUniversity第三章:关系数据库标准语言SQL•SQL概述•数据定义•查询•数据更新•视图•数据控制•嵌入式SQL•小结SLIDE2SchoolofManagementTianjinUniversitySQL概述SQL概述•SQL的特点–1.综合统一–2.高度非过程化–3.面向集合的操作方式–4.以同一种语法结构提供两种使用方法–5.语言简洁,易学易用SLIDE3SchoolofManagementTianjinUniversitySQL概述表3.1SQL语言的动词SQL功能动词数据定义CREATE,DROP,ALTER数据查询SELECT数据操纵INSERT,UPDATEDELETE数据控制GRANT,REVOKESQL语言简捷,易学易会SLIDE4SchoolofManagementTianjinUniversitySQL概述•SQL语言的基本概念–SQL支持关系数据库的三级模式结构,外模式对应于视图(View)和部分基本表(BaseTable),模式对应于基本表,内模式对应于存储文件。–基本表是本身存在的表,一个关系对应一个表。–视图是从一个表或几个基本表导出的表,不独立存储在数据库中,因此视图是一个虚表。SLIDE5SchoolofManagementTianjinUniversitySQL数据定义SQL数据定义SLIDE6SchoolofManagementTianjinUniversitySQL数据定义1.定义基本表语义格式CREATETABLE表名(列名数据类型[列级完整性约束条件][,列名数据类型[列级完整性约束条件]]…[,表级完整性约束条件]);–表名:所要定义的基本表的名字–列名:组成该表的各个属性(列)–列级完整性约束条件:涉及相应属性列的完整性约束条件–表级完整性约束条件:涉及一个或多个属性列的完整性约束条件SLIDE7SchoolofManagementTianjinUniversitySQL数据定义[例1]建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20)UNIQUE,SsexCHAR(1),SageINT,SdeptCHAR(15));SLIDE8SchoolofManagementTianjinUniversitySQL数据定义SLIDE9SchoolofManagementTianjinUniversitySQL数据定义•常用完整性约束–建表的同时可以定义与该表有关的完整性约束条件,被存入数据字典中,当操作表中数据时由DBMS自动检测是否违背约束条件–主码约束:PRIMARYKEY–唯一性约束:UNIQUE–非空值约束:NOTNULL–参照完整性约束SLIDE10SchoolofManagementTianjinUniversitySQL数据定义[例2]建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno,Cno)为主码。CREATETABLESC(SnoCHAR(5),CnoCHAR(3),Gradeint,Primarykey(Sno,Cno));SLIDE11SchoolofManagementTianjinUniversitySQL数据定义2.删除基本表语义格式DROPTABLE表名;•基本表删除数据、表上的索引都删除,表上的视图往往仍然保留,但无法引用•删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述[例3]删除Student表DROPTABLEStudent;SLIDE12SchoolofManagementTianjinUniversitySQL数据定义3.修改基本表语句格式ALTERTABLE表名[ADD新列名数据类型[完整性约束]][DROP完整性约束名][MODIFY列名数据类型];–表名:要修改的基本表–ADD子句:增加新列和新的完整性约束条件–DROP子句:删除指定的完整性约束条件–MODIFY子句:用于修改列名和数据类型SLIDE13SchoolofManagementTianjinUniversitySQL数据定义[例4]向Student表增加“入学时间”列,其数据类型为日期型。ALTERTABLEStudentADDScomeDATE;•不论基本表中原来是否已有数据,新增加的列一律为空值。SLIDE14SchoolofManagementTianjinUniversitySQL数据定义•删除属性列直接/间接删除–把表中要保留的列及其内容复制到一个新表中–删除原表–再将新表重命名为原表名直接删除属性列:例:ALTERTABLEStudentDropSname;SLIDE15SchoolofManagementTianjinUniversitySQL数据定义[例4]将年龄的数据类型改为半字长整数。ALTERTABLEStudentMODIFYSageSMALLINT;–注:修改原有的列定义有可能会破坏已有数据[例5]删除学生姓名必须取唯一值的约束。ALTERTABLEStudentDROPUNIQUE(Sname);SLIDE16SchoolofManagementTianjinUniversitySQL数据定义4.建立与删除索引•建立索引是加快查询速度的有效手段–DBA或表的属主(即建立表的人)根据需要建立–有些DBMS自动建立以下列上的索引•PRIMARYKEY•UNIQUE•维护索引–DBMS自动完成•使用索引–DBMS自动选择是否使用索引以及使用哪些索引SLIDE17SchoolofManagementTianjinUniversitySQL数据定义•语句格式CREATE[UNIQUE][CLUSTER]INDEX索引名ON表名(列名[次序][,列名[次序]]…);–用表名指定要建索引的基本表名字–索引可以建立在该表的一列或多列上,各列名之间用逗号分隔–用次序指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC–UNIQUE表明此索引的每一个索引值只对应唯一的数据记录–CLUSTER表示要建立的索引是聚簇索引SLIDE18SchoolofManagementTianjinUniversitySQL数据定义[例6]为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。CREATEUNIQUEINDEXStusnoONStudent(Sno);CREATEUNIQUEINDEXCoucnoONCourse(Cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC);SLIDE19SchoolofManagementTianjinUniversitySQL数据定义•删除索引–语句格式:•DROPINDEX索引名;•删除索引时,系统会从数据字典中删去有关该索引的描述。[例7]删除Student表的Stusname索引。DROPINDEXStusname;SLIDE20SchoolofManagementTianjinUniversity查询语句-概述5.查询语句•概述•单表查询•连接查询•嵌套查询•集合查询•小结SLIDE21SchoolofManagementTianjinUniversity查询语句-概述•语句格式SELECT[ALL|DISTINCT]目标列表达式[,目标列表达式]…FROM表名或视图名[,表名或视图名]…[WHERE条件表达式][GROUPBY列名1[HAVING条件表达式]][ORDERBY列名2[ASC|DESC]];SLIDE22SchoolofManagementTianjinUniversity查询语句-概述•关于查询语句格式的几点说明:–SELECT子句:指定要显示的属性列–FROM子句:指定查询对象(基本表或视图)–WHERE子句:指定查询条件–GROUPBY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。–HAVING短语:筛选出只有满足指定条件的组–ORDERBY子句:对查询结果表按指定列值的升序或降序排序SLIDE23SchoolofManagementTianjinUniversity查询语句-概述示例数据库:学生-课程数据库–学生表:Student(Sno,Sname,Ssex,Sage,Sdept)–课程表:Course(Cno,Cname,Cpno,Ccredit)–学生选课表:SC(Sno,Cno,Grade)学生课程选修nm成绩SLIDE24SchoolofManagementTianjinUniversity查询语句-单表查询1)单表查询:查询仅涉及一个表,是一种最简单的查询操作一、选择表中的若干列二、选择表中的若干元组三、对查询结果排序四、使用集函数五、对查询结果分组SLIDE25SchoolofManagementTianjinUniversity查询语句-单表查询[例1]查询全体学生的学号与姓名。SELECTSno,SnameFROMStudent;[例2]查询全体学生的姓名、学号、所在系。SELECTSname,Sno,SdeptFROMStudent;[例3]查询全体学生的详细记录。SELECTSno,Sname,Ssex,Sage,SdeptFROMStudent;或SELECT*FROMStudent;SLIDE26SchoolofManagementTianjinUniversity查询语句-单表查询•SELECT子句的目标列表达式为表达式•算术表达式•字符串常量•函数•列别名[例4]查全体学生的姓名及其出生年份。SELECTSname,2000-SageFROMStudent;输出结果:SLIDE27SchoolofManagementTianjinUniversity查询语句-单表查询输出结果:Sname2000-Sage--------------------李勇1976刘晨1977王名1978张立1978[例5]查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。SELECTSname,'YearofBirth:',2000-Sage,ISLOWER(Sdept)FROMStudent;SLIDE28SchoolofManagementTianjinUniversity查询语句-单表查询输出结果:Sname'YearofBirth:'2000-SageISLOWER(Sdept)----------------------------------------------李勇YearofBirth:1976cs刘晨YearofBirth:1977is王名YearofBirth:1978ma张立YearofBirth:1977isSLIDE29SchoolofManagementTianjinUniversity查询语句-单表查询•使用列别名改变查询结果的列标题SELECTSnameNAME,'YearofBirth:’BIRTH,2000-SageBIRTHDAY,ISLOWER(Sdept)DEPARTMENTFROMStudent;输出结果:NAMEBIRTHBIRTHDAYDEPARTMENT-----------------------------------李勇YearofBirth:1976cs刘晨YearofBirt
本文标题:第三章关系数据库标准语言SQL.
链接地址:https://www.777doc.com/doc-3189047 .html