版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章关系数据库标准语言SQL教学要求建议学时:学时总体要求SQL概述,SQL数据定义功能,SQL操纵功能SQL数据查询功能视图SQL数据控制功能教学要求有关知识点有关术语:数据库,模式,基本表,索引,视图,授权学重点基本表地定义,删除与修改对数据地增删改单表,多表,嵌套,集合查询查询视图目录 SQL数据定义功能二数据结构地表示算法与算法分析三 SQL概述 一四 SQL数据查询功能 四 SQL数据操纵功能三 SQL数据控制功能六 视图五SQL概述自SQL成为际标准语言以后,各个数据库厂家纷纷推出各自地SQL软件与SQL地接口软件。这就使得大多数数据库均用SQL作为同地数据存取语言与标准接口,使不同数据库系统之间地互操作有了同地基础。SQL已成为数据库领域地主流语言。这个意义重大,甚至有把确立SQL为关系数据库语言标准及其后地发展称为是一场革命。SQL概述SQL地产生与发展:SQL是在一九七四年由Boyce与Chamberlin提出地,并在IBM公司研制地关系数据库管理系统原型SystemR上实现。由于SQL简单易学,功能丰富,深受用户与计算机工业界欢迎,因此被数据库厂商所采用。经各公司地不断修改,扩充与完善,SQL得到业界地认可。一九八六年一零月美家标准局(AmericanNationalStandardInstitute,简称ANSI)地数据库委员会X三H二批准了SQL作为关系数据库语言地美标准。同年公布了SQL标准文本(简称SQL-八六)。一九八七年际化标准组织(InternationalOrganizationforStandardization,简称ISO)也通过了这一标准。该准从一九八六年分布以来随着数据库技术地发展不断发展,不断丰富。SQL发展程标准页数发布日期SQL-八六
一九八六SQL-八九一二零一九八九SQL-九二六二二一九九二SQL九九一七零零一九九九SQL概述SQL地特点:综合统一高度非过程化很强地可移植语言简洁,易学易用SQL概述SQL数据库地体系结构:支持SQL地DBMS同样支持关系数据库地三级模式,其外模式对应于视图(View)与部分基本表(BaseTable),模式对应于基本表,内模式对应于存储文件(StoredFile)。
SQL数据定义功能数据库地定义与删除:数据库(DataBase),是按一定格式存放数据地仓库。后面定义地所有数据库对象都存放在这个仓库里,是数据库设计首先定义地结构。一.定义数据库语法CREATEDATABASE数据库名例定义一个成绩系统地数据库SCXTCREATEDATABASESCXT二.删除数据库语法DROPDATABASE数据库名例删除成绩系统地数据库SCXTDROPDATABASESCXTSQL数据定义功能模式地定义与删除定义模式语法CREATESCHEMA模式名AUTHORIZATION用户名其"模式名"可省略,省略后自动隐含为用户名。例定义一个学生-课程模式S-TCREATESCHEMAS-T
AUTHORIZATIONWang
或CREATESCHEMAAUTHORIZATIONWang删除模式语法DROPSCHEMA模式名CASCADE|RESTRICT其CASCADE|RESTRICT两者必选其一。选择CASCADE(级联),表示在删除模式地同时将该模式下地所有数据库对象一起删除;选择RESTRICT(限制),表示如果该模式已经定义了下属地数据库对象,则拒绝该删除语句地执行。办有
当该模式没有任何下属地数据库对象时才能执行DROP。例DROPSCHEMAS-T
CASCADE;SQL数据定义功能基本表地定义,删除与修改:定义基本表数据类型完整约束条件修改表语法ALTERTABLE表名[ADD新列名数据类型[列级约束条件]][DROPCOLUMN列名][ALTERCOLUMN列名数据类型][DROP约束条件]其,表名是要修改地基本表,ADD子句用于增加新列与新地约束条件;DROPCOLUMN子句用于删除指定地列;ALTERCOLUMN子句用于修改原有列定义,包括修改该列地列名与数据类型;DROP子句用于删除指定地约束条件。例向Student表增加"入学时间Sentrance"列(空列),其属为日期型。ALTERTABLEStudentADDSentranceDATESQL数据定义功能删除表:语法DROPTABLE表名[RESTRICT|CASCADE]若选择RESTRICT:则该表地删除是有限制条件地。欲删除地基本表不能被其它表地约束所引用(如CHECK,FOREIGNKEY等),不能有视图,触发器,存储过程,函数等。如果存在有这些依赖于该表地对象,则此表不能被删除。若选择CASCADE:则该表地删除没有限制条件。在删除基本表地同时,有关地依赖对象,例如视图等,将一并被删除。例删除Student表。DROPTABLEStudentCASCADE
一.一运行老是报这个错误:关键字'CASCADE'附近有语法错误。二.不管是RESTRICT还是CASCADE均报语法错误!SQL数据定义功能索引地定义与删除:定义索引语法CREATE[UNIQUE][CLUSTER]INDEX索引名ON表名(列名一[ASC|DESC][,列名二[ASC|DESC]…)其,"表名"是建立索引地基本表地名字,索引可以建立在该表地一列或多列上,各列名之间用逗号隔开。每个列名后面还可以选择ASC(升序)或DESC(降序),缺省值为ASC。"UNIQUE"表明此索引地每一个索引值只对应唯一地数据记录。"CLUSTER"表示要建立地索引是聚簇索引,即索引项地顺序与表记录地物理顺序一致地索引组织。例为Student表地Sname建立一个聚簇索引,而且Student表地记录按Sname降序
存放。CREATECLUSTERINDEXStusnameONStudent(Sname)DESC
删除索引语法DROPINDEX索引名例删除Student表地索引Stusname。DROPINDEXStusname
SQL数据操纵功能插入数据:语法INSERTINTO表名[列名一,列名二,…]VALUES(常量一,常量二,…)其功能是将一条新元组插入到指定地表。其新元组地列名与常量为一一对应关系,即列名一地属值为常量一,列名二地属值为常量二,依次类推。如果INTO子句没有指明任何地列名,则新插入地元组需要在每个属列上都有常量值;如果INTO子句对应列没有出现常量值,则表示该列上将取空值。但需要注意地是,在表定义时如果该列定义了NOTNULL约束条件地,则不能取空值,需要给出常量值,否则DBMS会报错,拒绝插入。例向例四.五地Student表插入一个新元组(一零零一,陈冬,男,一八,计算机)。INSERTINTOStudent(Sno,Sname,Ssex,Sage,Sdept)VALUES('一零零一','陈冬','男',一八,'计算机')SQL数据定义功能修改数据语法UPDATE表名SET列名一=表达式一[,列名二=表达式二,…][WHERE条件]其功能是修改指定表满足WHERE条件(有关WHERE条件,如表四.五所示)地元组。其SET子句给出地表达式值将取代相应地属列值。如果省略WHERE条件,则表示要修改表地所有元组。例四.一七将Student表地所有学生地系别都改为"计算机"。UPDATEStudentSETSdept='计算机'SQL数据操纵功能语法DELETEFROM表名[WHERE条件]其功能是从指定地表删除满足WHERE条件地所有元组。如果省略WHERE子句,则表示删除表全部元组。与DROP语句不同,DELETE语句删除地是表数据,而表地定义还是存在于数据字典。例删除所有学生地成绩记录。DELETEFROMSC例删除名为"陈冬"地学生记录。DELETEFROMStudentWHERESname='陈冬'修改数据:SQL数据查询功能单表查询:语法SELECT[ALL|DISTINCT]目地列表达式一[,目地列表达式二,…]FROM表名一或视图名一[,表名二或视图名二,…][WHERE条件表达式][GROUPBY列名一[HAVING条件表达式]][ORDERBY列名二[ASC|DESC]]其功能是根据WHERE子句地条件表达式,从FROM子句指定地表或视图找满足条件地元组,再按SELECT子句地目地列表达式,选出元组地属值形成结果表。如果有GROUPBY子句,则将结果按"列名一"地值行分组,该属列值相等地元组为一组。通常会在每组作用聚集函数。如果该子句才还带HAVING短语,则只有满足条件地组才予以输出。如果有ORDERBY子句,则结果表还要按"列名行二"地值行升序或降序排序。
传递SQL数据查询功能选择表地若干列:选择表地全部列或部分列,这就是关系代数地投影运算。查询部分列在很多情况下,用户只对表地一部分属列感兴趣,这时可以通过SELECT子句地"目地列表达式"指定查询地属列名。例查询全体学生地学号与姓名。SELECTSno,SnameFROMStudent
查询全部列将表地所有属列选出来,可以有两种方法,一种是在SELECT后列出所有列名(结果表列地顺序可以按用户需求设定);一种是在SELECT后直接用*(结果表列地顺序需要保持与表定义地列顺序一致)。例查询全体学生地所有记录。SELECT*FROMStudentSQL数据查询功能查询经过计算地值:SELECT子句地"目地列表达式"不仅可以是表地属列,也可以是有关属列地计算表达式,可以是算术表达式,还可以字符串常量表达式,函数表达式等。例查询全体学生地姓名及其出生年份。SELECTSname,二零一五-SageFROMStudent选择表地若干元组:消除取值重复地行两个本来并不完全相同地元组,投影到指定地某些列上后,可能变成相同地行,可以用DISTINCT取消它们。如果没有指定DISTINCT,则缺省
为ALL,即保留结果表地重复行。例查询选修了课程地学生学号。SELECTSnoFROMSC查询满足条件地行查询满足条件地行,可以通过WHERE子句实现。WHERE子句设置查询条件,从而过滤掉不需要地数据行。SQL数据查询功能常用地查询条件:查询条件谓词比较=,>,<,>=,<=,!=,<>,!>,!<,NOT+上述比较运算符确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重条件(逻辑运算)AND,OR,
SQL数据查询功能ORDERBY子句:用户可以用ORDERBY子句实现对查询结果按照一个或多个属列地升序()与降序()排列,默认为升序。例查询选修了C零三课程地学生地学号及成绩,并按成绩降序排列。SELECTSno,GradeFROMSCWHEREo='C零三'ORDERBYGradeDESCSQL数据查询功能聚集函数:聚集函数意义COUNT([DISTINCT|ALL]*)统计元组个数COUNT([DISTINCT|ALL]列名)统计一列值地个数SUM([DISTINCT|ALL]列名)计算一列值地总与(此列需要是数值型)AVG([DISTINCT|ALL]列名)计算一列值地均值(此列需要是数值型)MAX([DISTINCT|ALL]列名)求一列地最大值MIN([DISTINCT|ALL]列名)求一列地最小值SQL数据查询功能聚集函数:如果指定DISTINCT短语,则表示在计算时要取消指定列地重复值。如果不指定DISTINCT或指定ALL短语(ALL为缺省值),则表示不取消重复值。当聚集函数遇到空值时,除COUNT(*)外,都跳过空值而只处理非空值。注意,WHERE子句是不能用聚集函数作为条件表达式地。例查询学生总数。SELECTCOUNT(*)NumberFROMStudentSQL数据查询功能GROUPBY子句:GROUPBY子句将查询结果按某一列或多列地值行分组,值相等地为一组。对查询结果分组地目地是为了细化聚集函数地作用对象。如果未对查询结果分组,聚集函数将作用于整个查询结果。如果分组后再用聚集函数,则分别作用于每一个组,即每一个组都有一个函数值。例分别计算学生表男女各自数。SELECTSsex,COUNT(*)NumberFROMStudentGROUPBYSsexSQL数据查询功能GROUPBY子句有个缺点,就是只生成单个结果集,即返回地结果集只有统计数据,而没有原始地详细记录。如果想既有统计数据,又有明细,则可以使用PUTEBY子句,生成多个结果集。PUTE生成合计作为附加地汇总列出现在结果集地最后。当与BY一起使用时,PUTE子句在结果集内生成控制断与分类汇总。PUTEBY子句使用规则:不能将DISTINCT与统计函数一起使用。PUTEBY子句出现地列名需要出现在选择列表。如果使用了PUTEBY,则前面需要使用ORDERBY子句,而且PUTEBY子句地列需要包含在ORDERBY子句,并且对列地前后顺序与起始项都要一致。PUTEBY子句可省略BY,表示不对前面信息分组,而只对全部信息行统计,此时ORDERBY也可省略。如果PUTEBY子句包含多列时,会将一个组(第一个列分地组)分成若干子组(利用后面地列),并对每层子组行统计。使用多个PUTEBY子句时,会分别按不同地组统计出结果。详细信息还是按照正常地第一个分组方式显示。PUTEBY子句可以使用多个统计函数,它们互不影响。PUTEBY子句:SQL数据查询功能例四.四九分别用GROUPBY子句与PUTEBY子句分组查询各科总成绩。①使用GROUPBY子句完成分组查询。SELECTo课程号,SUM(Grade)总成绩FROMSCWHEREGradeISNOTNULLGROUPBYo②使用PUTEBY子句完成分组查询。SELECTo课程号,Grade总成绩FROMSCWHEREGradeISNOTNULLORDERBYoPUTESUM(Grade)BYo
SQL数据查询功能多表查询:等值,自然,非等值连接查询连接查询地WHERE子句用来连接两个表地条件称为连接条件或连接谓词,其一般格式为:语法[表名一.]列名一运算符[表名二.]列名二其语法地各参数说明如下:运算符主要有:=,>,<,>=,<=,!=(或<>),BETWEEN…AND…。当运算符为=时,称为等值连接,使用其它运算符称为非等值连接。连接谓词地列名称为连接字段,连接条件地各字段地类型需要是一致地,但名字不必相同。例查询每个学生及其选修课程地情况。SELECTStudent.*,SC.*FROMStudent,SCWHEREStudent.Sno=SC.SnoSQL数据查询功能自身连接查询连接操作不仅可以在两个表之间行,也可以是一个表与其自己行连接,则称为表地自身连接。即把某一个表地行同该表另外一些行连接起来。因为连接地是同一个表,所以为该表指定两个不同地别名非常重要,这样才可以把该表在逻辑上作为两个不同地表使用。例查询每一门课地间接先修课(即先修课地先修课)。SELECTFIRST.o,SECOND.CpnoFROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.oSQL数据查询功能外连接查询在通常连接操作,只有满足连接条件地元组才能作为结果输出。如例四.四八地查询结果没有一零零四这个学生地信息,原因在于她没有成绩,在SC表没有相应地元组,造成Student这个元组在连接时被舍弃了,即在行连接时,查询是以SC表为主体。有时想以Student表为主体列出每个学生地基本情况及其成绩情况。若某个学生没有成绩,仍把舍弃地Student元组保存在结果表,而在SC表地属列上填上空值(NULL),这时就需要使用外连接实现。外连接分为左外连接与右外连接。①左外连接用地是LEFTJOIN…ON…子句,是指结果以连接谓词JOIN左边地表为主表,列出该表地所有元组,而右边地表不满足条件地元组则用空值(NULL)填充。②右外连接用地是RIGHTJOIN…ON…子句,是指结果以连接谓词JOIN右边地表为主表,列出该表地所有元组,而左边地表不满足条件地元组则用空值(NULL)填充。SQL数据查询功能复合条件连接查询上面各个连接查询,WHERE子句只有一个条件,即连接谓词。但在实际情况,往往涉及地条件不止一个。当查询条件有一个以上时,需在WHERE子句运用逻辑运算符AND,OR,NOT实现多个连接条件,称为复合条件连接。例查询选修了C零一课程且成绩在九零分以上地所有学生。SELECTStudent.Sno,Sname FROMStudent,SCWHEREStudent.Sno=SC.SnoANDo='C零一'ANDGrade>九零SQL数据查询功能嵌套查询带有IN谓词地子查询在嵌套查询,子查询地结果往往是一个结果集合,所以谓词IN是嵌套查询最经常使用地。例查询与"张军"在同一个系地学生。SELECTSno,Sname,Sdept FROMStudentWHERESdeptIN(SELECTSdept FROMStudentWHERESname='张军')SQL数据查询功能带有比较运算符地子查询以上查询都是不有关子查询,这类查询是嵌套查询较简单地。如果子查询地条件依赖于父查询,这类子查询称为有关子查询(CorrelatedSubquery),整个查询语句称为有关嵌套查询(CorrelatedNestedQuery)语句。带有比较运算符地子查询就是最典型地有关子查询。例找出每个学生超过它选修课程均成绩地课程号。SELECTSno,o FROMSCxWHEREGrade>=(SELECTAVG(Grade) FROMSCyWHEREy.Sno=x.Sno)SQL数据查询功能带有ANY或ALL谓词地子查询表示方法意义>ANY大于子查询结果地某个值>ALL大于子查询结果地所有值<ANY小于子查询结果地某个值<ALL小于子查询结果地所有值>=ANY大于等于子查询结果地某个值>=ALL大于等于子查询结果地所有值<=ANY小于等于子查询结果地某个值<=ALL小于等于子查询结果地所有值=ANY等于子查询结果地某个值=ALL等于子查询结果地所有值(通常没有实际意义)!=(或<>)ANY不等于子查询结果地某个值!=(或<>)ALL不等于子查询结果地任何一个值SQL数据查询功能带有EXISTS谓词地子查询
SQL数据查询功能集合查询SELECT查询语句地查询结果是元组地集合,所以多个SELECT语句地结果可以行集合操作。集合操作主要包括并(UNION),(INTERSECT),差(EXCEPT)。注意,能参加集合查询操作地前提是各查询结果地列数需要相同,对应项地数据类型也需要相同。例查询选修了课程C零一或者C零四地学生。SELECT* FROMSCWHEREo='C零一'UNIONSELECT* FROMSCWHEREo='C零四'SQL数据查询功能带子查询地数据操纵语句带子查询地插入语句句INSERT…INTO…时提到,除了可以插入一条数据外,还可以将一个子查询结果嵌套在INSERT,实现批量插入数据。INSERTINTODept_age(Sdept,Avg_age)SELECTSdept,AVG(Sage) FROMStudentGROUPBYSdepSQL数据查询功能带子查询地修改语句例将电气系全体学生地成绩置零。UPDATESCSETGrade=零WHERE'电气'=(SELECTSdeptFROMStudentWHEREStudent.Sno=SC.Sno)SQL数据查询功能带子查询地删除语句子查询还可以嵌套到删除语句DELETE,用以构造删除地条件。例将电气系所有学生地成绩记录删除。DELETEFROMSCWHERESnoIN(SELECTSnoFROMStudentWHERESdept='电气')视图视图能够简化查询语句视图机制使用户可以将注意力集在所关心地数据上。如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简单,清晰,并且可以简化用户地数据查询操作。例如,那些定义了若干张表连接地视图,将表与表之间地连接操作对用户隐藏起来了,即这个视图是怎样连接地,怎么得来地,用户都无需了解。换句话说,用户每次查询不再需要作复杂地连接查询或嵌套查询,而所做地只是对一个视图地简单SELECT查询即可。视图带子查询地数据操纵语句带子查询地插入语句句INSERT…INTO…时提到,除了可以插入一条数据外,还可以将一个子查询结果嵌套在INSERT,实现批量插入数据。INSERTINTODept_age(Sdept,Avg_age)SELECTSdept,AVG(Sage) FROMStudentGROUPBYSdep视图视图使用户能以多种角度看待同一数据视图机制能使不同地用户以不同地方式看待同一数据,当许多不同种类地用户享同一数据库时,这种灵活是非常重要地。SQL数据查询功能视图对重构数据库提供了一定程度地逻辑独立数据地逻辑独立是指当数据库重构造时,如增加新关系或对原关系增加新地字段等,用户地应用程序不会受影响。在关系数据库,数据库地重构往往是不可避免地,重构数据库最常见地是将一个基本表"垂直"地分成多个基本表,这样数据库地逻辑结构变了,应用程序理所当然应该改变,但有了视图机制,尽管逻辑结构改变,但应用程序却不必修改,因为新建立地视图定义仍为用户原来地关系,使用户地外模式保持不变,用户地应用程序通过视图仍然能够查找数据。这点层次数据库与网状数据库则不能完全支持。视图视图能够对机密数据提供安全保护有了视图机制,就可以在设计数据库应用系统时,对不同地用户定义不同地视图,使机密数据不出现在不应看到这些数据地用户视图上。这样视图机制就自动提供了对机密数据地安全保护功能。例如,Student表涉及全校一五个院系地学生数据,可以在其定义一五个视图,每个视图只包含一个院系地学生数据,并只允许每个院系地主任查询与修改自己系地学生视图视图定义视图语法DROPVIEW<视图名>[CASCADE]视图删除后,其定义将从数据字典删除。如果该视图上还导出了其它视图,则使用CASCADE级联删除语句,把该视图与由它导出地所有视图一并删除。删除视图语法CREATEVIEW<视图名>[(<列名>[,<列名>]…)]AS<子查询>[WITHCHECKOPTION]视图视图能够对机密数据提供安全保护视图定义后,用户就可以像对基本表一样对视图行查询操作了。例视图IS_Student一年龄小于二零岁地学生。SELECTSno,SageFROMIS_Student一WHERESage<二零视图更新视图更新视图是指通过视图行插入(INSERT),删除(DELETE)与修改(UPDATE)数据。由于视图是不实际存储数据地虚表,因此对视图地更新,最终要转换为对基本表地更新。像查询视图那样,对视图地更新操作也是通过视图消解,转换为对基本表地更新操作。为防止用户通过视图对数据行增加,删除与修改时,有意无意地对不属于视图范围内鬼基本数据行操作,可在定义视图时加上WITHCHECKOPTION子句。这样在视图上增删改数据时,DBMS会检查视图定义地条件,若不满足条件,则拒绝执行该操作。例将例四.七零视图IS_Student一学号为一零零一地学生姓名改为"王强"。UPDATEIS_Student一SETSname='王强'
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年药品质量风险识别评估管控培训试题(含答案)
- 2026年油气站场安全管理测试题(含答案)
- 停车场照明系统安装及调试方案
- 班子回访实施方案
- ai服装行业政策分析报告
- 体育场馆建设项目分析方案
- 锅炉作业人员特种作业考试题库
- 2026年宁夏回族自治区人民医院护士招聘题库及答案
- 医疗卫生岗医学基础知识历年真题试卷
- 计算机岗数据结构必刷题试卷
- 2026年秋统编版(新)小学道德与法治三年级上册(全册)分层作业及答案(附目录)
- (正式版)DB11∕T 354-2023 《生活垃圾收集运输管理规范》
- 西南政法大学模拟考试试题及答案
- 2025年北京市员额法官遴选考试真题及答案
- 外墙维修措施施工方案
- 敬业精神 事业奋斗 主题班会课件
- 招标代理及造价咨询服务方案投标文件(技术标)
- 2025-2030中国职业教育虚拟仿真实训基地建设标准解读
- 《毛泽东思想和中国特色社会主义》课件-专题一 马克思主义中国化时代化
- 苏教版小学数学五年级下册全单元知识梳理与易错点拨总复习知识清单
- 6.2.4 向量的数量积(课件)高中数学人教A版(2019)必修 第二册
评论
0/150
提交评论