【文档说明】数据库语言SQL课件.ppt,共(95)页,263.537 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92500.html
以下为本文档部分文字说明:
3数据库语言SQLElelenEnmi胶原蛋白口服液买四赠一品牌正品情侣装亲子装全场包邮淘宝:http://li370286038.taobao.com/或者拍拍:http://shop.paipai.com/370286038本章
目标本章主要介绍SQL语言的基本语法和使用方式,要求熟练掌握SQL语言的使用规则,能够根据实际需求写出能够准确完成操作的SQL语句。3.1概述1.SQL的发展1974年,由Boyce和Chamberlin提出1975~1979,IBMSanJoseResearchLab的关系数据
库管理系统原型SystemR实施了这种语言SQL-86是第一个SQL标准SQL-89、SQL-92(SQL2)、SQL-99(SQL3)2.现状大部分DBMS产品都支持SQL,成为操作数据库的标准语言有特殊性,支持程度不同数据定义(DDL)定义、删除、修改关系模式(基本表)定义
、删除视图(View)定义、删除索引(Index)数据操纵(DML)数据查询数据增、删、改数据控制(DCL)用户访问权限的授予、收回3.1.1SQL的功能交互式SQL一般DBMS都提供
联机交互工具用户可直接键入SQL命令对数据库进行操作由DBMS来进行解释嵌入式SQL能将SQL语句嵌入到高级语言(宿主语言)使应用程序充分利用SQL访问数据库的能力、宿主语言的过程处理能力一般需要预编译,将嵌入的SQL语句转化为宿主语言编译器能处理的语句3.1.2SQL的
形式数据定义Create、Drop、Alter数据操纵数据查询:Select数据修改:Insert、Update、Delete数据控制Grant、Revoke3.1.3SQL的动词数据查询是数据库应用的核心功能。基本结构:SelectA1,A2,...,
AnFromr1,r2,...,rmWhereP3.2数据查询SelectWhereFromA1,A2,...,An(p(r1×r1×...×rm))3.2.1Select语句的含义•对From子句中的各关系,作笛卡儿积(×)•对Where子句中的逻辑表达式进行
选择(σ)运算,找出符合条件的元组。•根据Select子句中的属性列表,对上述结果作投影(π)操作。•查询操作的对象是关系,结果还是一个关系,是一个结果集,是一个动态数据集。3.2.2Select子句对
应于关系代数的投影(π)运算,用以列出查询结果集中的期望属性。重复元组SQL具有包的特性Select子句的缺省情况是保留重复元组(ALL),可用Distinct去除重复元组SelectDistinctsdeptFromStudentSelectAllsdeptFromStuden
t去除重复元组:费时需要临时表的支持*与属性列表星号*表示所有属性星号*:按关系模式中属性的顺序排列,并具有一定的逻辑数据独立性显式列出属性名:按用户顺序排列Select*FromStudentSele
ctStudent.*,cno,gradeFromStudent,SCWhereStudent.sno=SC.sno更名为结果集中的某个属性改名使结果集更具可读性Selectsnoasstu_no,cnoascourse_no,gradeFromSCSelects
no,sname,2001-sageasbirthdayFromStudent3.2.3where子句where子句对应与关系代数中的选择(σ)。查询满足指定条件的元组可以通过Where子句来实现。使where子句中的逻辑表达式返回True值的元组,是符合要求的
元组,将被选择出来。运算符比较:<、<=、>、>=、=、<>、not+~确定范围:BetweenAandB、NotBetweenAandB确定集合:IN、NOTIN字符匹配:LIKE,NOTLIK
E空值:ISNULL、ISNOTNULL多重条件:AND、OR、NOTlike字符匹配:Like、NotLike通配符:•%——匹配任意字符串•_——匹配任意一个字符大小写敏感•列出姓张的学生的学号、姓名。Selectsno,snameFromStudentWheresname
LIKE‘张%’•列出张姓且单名的学生的学号、姓名。Selectsno,snameFromStudentWheresnameLIKE‘张__’转义符escape例:列出课程名称中带有‘_’的课号及课名。Selectcno,cnameFromCourseWhere
cnameLIKE‘%\_%’escape‘\’3.2.4from子句•From子句对应与关系代数中的笛卡儿积(×)•列出将被扫描的关系(表)例:列出所有学生的学号、姓名、课号、成绩。SelectSudent.sno,sname,SC.cno
,gradeFromStudent,SCWhereStudent.sno=SC.sno元组变量为From子句中的关系定义元组变量方便关系名的引用在同一关系的笛卡儿积中进行辨别例:列出与95001同岁的同学的学号,姓名,年龄。SelectT.sn
o,T.sname,T.sageFromStudentasT,StudentasSWhereS.sno=‘95001’ANDT.sage=S.sage3.2.5OrderBy子句•指定结果集中元组的排列次序•耗时•ASC
(缺省)、DESC、未选中的属性例:列出CS系中的男生的学号、姓名、年龄,并按年龄进行排列(升序)。Selectsno,sname,sageFromStudentWheresdept=‘CS’OrderBysageASC3.3数据定义语言数据定义语言(DataDefinitionLanguage
)Create、Drop、Alter定义一组关系(基本表)、说明各关系的信息•各关系的模式•各属性的值域•完整性约束•索引•安全性和权限3.3.1SQL中的域类型字符型•char(n)、varchar(n)数值型•integer、smallint•n
umeric(p,d)•real、double、float(n)日期/时间型•date•time3.3.2SQL中的域定义域定义语句(SQL-92支持)需重复使用的CreateDomainstu_namevarchar(
20)CreateDomainzip_codechar(6)域的删除DropDomaindatelog各DBMS的方法是不同的Restrict/Cascade使用该域的属性的处理3.3.3SQL中的模式定义CreateTabler(A1D1,A2D2,…
,AnDn,<表级完整性约束1>,…<表级完整性约束n>)其中:r关系名(表名)、Ai关系r的一个属性名Dn属性Ai域值的域类型主键声明:primarykey(Aj1,Aj2,…,Ajvm)CreateDomainstu_namevarchar(20)CreateTabl
eStudent(snochar(10)primarykey(sno),snamestu_name,sagesmallint,ssexchar(1),sdeptchar(2))CreateTableCourse(cnochar(10)primaryke
y(cno),cnamevarchar(20),creditsmallint)CreateTableSC(snochar(10)notnull,cnochar(10)notnull,gradesmallint,primarykey(sno,cno))ElelenEnmi胶原蛋
白口服液买四赠一品牌正品情侣装亲子装全场包邮淘宝:http://li370286038.taobao.com/或者拍拍:http://shop.paipai.com/3702860383.3.4删除表结构•用
SQL删除关系(表)•将整个关系模式(表结构)彻底删除•表中的数据也将被删除DropTablerDropTablestudent3.3.5修改表结构删除表中的某属性去除属性及相应的数据AlterTablerDrop
A增加表中的属性向已经存在的表中添加属性allownull已有的元组中该属性的值被置为NullAlterTablerAddADAlterTablestudentphonechar(16)3.3.6
DefaultValue•属性的默认值•用户不提供某属性的值时,默认值被使用•初始值•DDL中:ModifyDatechar(30)DefaultTimeStampAlterTablestudentAddI
DintegerDefault10013.3.7索引Index•索引是一种数据结构,是对照表、指针表•索引是为了加速对表中元组的检索而创建的一种分散存储结构(B树)•索引是对表而建立的,由除存放表的数据页面以外的索引页面组成•索引是
把双刃剑,减慢更新的速度•索引不是SQL标准的要求索引的种类聚簇索引(ClusteredIndex)非聚簇索引(Non-ClusteredIndex)聚簇索引(ClusteredIndex)表中的元组按聚簇索引的顺序物理地存放根级页面---中间层页面---叶
级页面(数据页面)一个表中只能有一个聚簇索引更新的复杂性,需要大量的临时空间非聚簇索引(Non-ClusteredIndex)表中的元组按聚簇索引的顺序物理地存放根级页面---中间层页面---叶级页面(数据页面)一个表中只能有一个聚簇索引更新的复杂性,需要大量的
临时空间CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex-nameOnTableName(Column,Column,…)CreateIndexYearIndexOnMovie(year)Create
ClusteredIndexSnoIndexOnstudent(sno)DropIndexYearIndex3.4数据添加用SQL的插入语句,向数据库表中添加数据•按关系模式的属性顺序InsertIntoStudentValues(‘00
95001’,‘张三’,27,‘M’,‘CS’)•按指定的属性顺序,也可以只添加部分属性(非Null属性为必需)InsertIntoStudent(sno,sname,sage)Values(‘0095002’,‘李四’,26)3.5聚合函数把一列中的值进行聚合运算,返回单值的函数。五个预
定义的聚合函数:平均值:Avg总和:Sum最小值:Min最大值:Max计数:CountCount(*)、Count(Distinct…)数值3.5.1GroupBy•将查询结果集按某一列或多列的值分组,值相等的为一组,一个分组以一个元组的形式出现。•只有出现在Group
By子句中的属性,才可出现在Select子句中。例:统计各系学生的人数。Selectsdept,count(*)asstu_countFromStudentGroupBysdept3.5.2Having•针对聚合函数的结果值进行筛选(选择),它作用于分
组计算结果集。•跟在GroupBy子句的后面,没有GroupBy则针对全表。例:列出具有两门(含)以上不及格的学生的学号、不及格的课目数。Selectsno,count(sno)FromSCWheregrade<60GroupBysnoHa
vingcount(sno)>=23.5.3Having与Where的区别Where决定哪些元组被选择参加运算,作用于关系中的元组。Having决定哪些分组符合要求,作用于分组。聚合函数的条件关系必须用Having,Where中不应出现聚合函数。3.5.4聚合
函数忽略NullCount:不计Sum:不将其计入Avg:具有Null的元组不参与Max/Min:不参与例:Selectcount(sdept)FromStudentSelectAvg(sage)FromStude
nt3.6子查询子查询是嵌套在另一查询中的Select-From-Where表达式(Where/Having)。SQL允许多层嵌套,由内而外地进行分析,子查询的结果作为父查询的查找条件。可以用多个简单查询来构成复杂查询,以增强SQL的查询能力。子查询中不使用OrderBy子句,Or
derBy子句只能对最终查询结果进行排序。3.6.1单值比较•返回单值的子查询,只返回一行一列•父查询与单值子查询之间用比较运算符进行连接•运算符:>、>=、=、<=、<、<>例:找出与95001同龄的学生Select*From
StudentWheresage=(SelectsageFromStudentWheresno=‘95001’)3.6.2多值子查询返回多行一列运算符:In、All、Some(Any)、Existsin标量值与子查询返回集中的某一个相等,truein被用来测试多值中
的成员。例:查询选修‘C01’课程的学生的学号、姓名。Selectsno,snameFromStudentWheresnoIN(SelectsnoFromSCWherecno=‘C01’)子查询多行一列例:查
询选修了‘数据库’的学生的学号和姓名Selectsno,snameFromStudentWheresnoIN(SelectsnoFromSCWherecnoIN(SelectcnoFromCourseWherecname=‘数据库’))all多值比较:多行一列•父查询与多值子查询之间的比
较需用All来连接•标量值s比子查询返回集R中的每个都大时,s>AllR为TrueAll表示所有•>all、<all、<=all、>=all、<>all<>all等价于notin例:找出年龄最小的学生Selec
t*FromStudentWheresage<all(SelectsageFromStudent)some、any多值比较:多行一列•父查询与多值子查询之间的比较需用Some/Any来连接•标量值s比子查询返回集R中的某一个都大时,s
>SomeR为True或s>AnyR为True•Some(早期用Any)表示某一个,只要有一个即返回真•>some、<some、<=some、>=some、<>some=some等价于in、<>some不等价于notin例:
找出不是最小年龄的学生Select*FromstudentWheresage>some(SelectsageFromStudent)例:找出具有最高平均成绩的学号及平均成绩Selectsno,avg(grade)Fro
mSCGroupBysnoHavingavg(grade)>=all(Selectavg(grade)FromSCGroupBysno)existsExists+子查询用来判断该子查询是否返回元组当子查询的结果集非空时,Exists为True当子查询的结果集为空
时,Exists为False不关心子查询的具体内容,因此用Select*例:列出选修了C01课程的学生的学号、姓名Selectsno,snameFromStudentWhereExists(Select*FromSCWhereSC.sno=Student.snoA
ndcno=‘C01’)例:列出得过100分的学生的学号、姓名Selectsno,snameFromStudentWhereExists(Select*FromSCWhereSC.sno=Student.snoAndgrade=100)例:查询选修了‘C01’课程的学生的系
主任SelectmanagerFromdepartmentWhereExists(Select*FromstudentWheresdept=department.depidAndExists(Select*FromSCWhere
SC.sno=student.snoAndcno=‘C01’))例:列出没有选C01课程的学生的学号、姓名Selectsno,snameFromStudentWhereNotExists(Select*FromSCWhereSC.sno=Student.sno
Andcno=‘C01’)ElelenEnmi胶原蛋白口服液买四赠一品牌正品情侣装亲子装全场包邮淘宝:http://li370286038.taobao.com/或者拍拍:http://shop.paipai.com/370286
038例:查询选修了所有课程的学生的姓名(ForAll)SelectsnameFromStudentWhereNotExists(Select*FromCourseWhereNotExists(Select*FromSCWhereStudent.sno=S
C.snoAndSC.cno=Course.cno))这门课他没选这样的课是不存在的•SQL-92支持多列的成员资格测试(ASA7.0不支持)例:找出同系、同年龄、同性别的学生Select*fromStudentasTWhere(T.sd
ept,T.sage,T.ssex)IN(Selectsdept,sage,ssexFromstudentasSWhereS.sno<>T.sno)3.6.3多列元组的比较3.6.4派生关系•SQL-92允许在From中使用查询
表达式•必须为其取名例:查询平均成绩大于75分的学号、姓名、平均成绩Selectstu_no,sname,avg_gradeFromStudent,(Selectsno,avg(grade)FromSCGroupBysno)asS(stu_no,avg_grade
)WhereStudent.sno=S.stu_noAndavg_grade>753.7空值与连接3.7.1NULL表示数据的缺失一个确实存在,但我们不知道的值对本实体此数值无意义,可能是设计上的失误是SQL的关键字,用于任何类型描述缺失的值3.7.3NULL的运算法则对NULL值和
其他任何值作算术运算时,结果为NULL对NULL值和其他任何值作比较时,结果为UNKOWNIsNull/IsNotNull3.7.4Unkown的运算规则视True为1,False为0,Unkown为1/2A
ND:取小OR:取大NOT:取1的补真值表不必死记硬背3.8数据库的修改数据库修改包括插入数据、修改数据、删除数据。3.8.1数据删除•只能对整个元组操作,不能只删除某些属性上的值。•只能对一个关系起作用,若要从多
个关系中删除元组,则必须对每个关系分别执行删除命令。DeleteFromrWhereP•从关系r中删除满足P的元组,只是删除数据,而不是定义。删除单个元组例:删除学号为95001的学生的选课信息Delete
FromSCWheresno=‘95001’删除多个元组例:删除选课而未参加考试的学生的选课信息DeleteFromSCWheregradeisnull删除整个关系中的所有数据例:删除所有学生的选课信息DeleteFromSC3.8.2数据插入单行插入:一次只插
入一个元组例:新增一个学生信息InsertIntoStudentValues(‘98001’,‘Gloria’,25,‘F’,‘CS’)多行插入:插入一个集合例:给CS系的学生开设必修课C05,建立选课信息InsertInto
SCSelectsno,cno,nullFromStudent,CourseWheresdept=‘CS’andcno=‘C05’3.8.3数据更新•改变符合条件的某个(某些)元组的属性值例:将95001学生转入MA系UpdateStuden
tSetsdept=‘MA’Wheresno=‘95001’例:所有学生年龄加1UpdateStudentSetsage=sage+1例:将选修C05课程的学生的成绩改为该课的平均成绩UpdateSCSetgrade=(Selectavg(grade)FromSCWherecno=‘C05’)Wh
erecno=‘C05’先计算avg,再做Update3.9视图是从一个或几个基本表(或视图)中导出的虚表数据库中只保存它的定义是RDBMS提供给用户以多种角度观察数据库中数据的重要机制创建视图、删除CreateViewvas<queryexpress
ion>DropViewv例:计算机系的花名册CreateViewCS_StuasSelectsno,sname,ssexFromStudentWheresdept=‘CS’3.9.1视图(View)•视图名可以出现在任何关系名可以出现的地方例:列出计算机系的
男生Selectsno,snameFromCS_StuWheressex=‘M’例:建立学生平均成绩视图CreateViewavg_grade(sno,avg)asSelectsno,avg(grade)FromSCGroupBysno例:找出平均
成绩大于等75的学生Select*Fromavg_gradeWhereavg>=75注意:此例的使用方法是非标准的。avg不是原始属性•视图的更新:单表、原始属性构成的视图可以更新(像基本表那样更新)•由多表构成的视图由很大的限制•视图中的非原始属性也不能更新例:Updateavg_gradeS
etavg=100Wheresno=‘95001’3.9.2视图的作用简化用户的操作不同的用户可从不同的角度看待同一数据支持一定的逻辑数据独立性数据的安全性3.9.3综合示例CreateDomainstu_namevarchar(20)CreateTable
Student(snochar(10)notnull,snamestu_name,sagesmallint,ssexchar(1),sdeptchar(2),primarykey(sno),check(ssexin(‘M’
,‘F’)))CreateTableCourse(cnochar(10)notnull,cnamevarchar(20),creditsmallint,primarykey(cno))CreateTab
leSC(snochar(10)notnull,cnochar(10)notnull,gradesmallint,primarykey(sno,cno),check(grade>=0andgrade<=100))3.10嵌入式SQL前面所介绍的SQL语言作为一种独立的自含式语言,是联机终端用
户在交互环境下使用的,称为交互式SQL(INTERACTIVESQL),简称ISQL。在实际应用当中,常常还需要解决这样两个问题:•有许多应用是过程化的,要求根据不同的条件来完成不同的任务;•有许多应用不仅需要读出数据,还必须读查询得到的数据进行处理。对于上述问题
,单独使用SQL语言是很难满足实际需求的。为了解决这些问题,SQL还提出了另外一种使用方式,即可以作为一种数据子语言嵌入某些主语言中,利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。这种将SQL嵌入COBO
L,C,C++,FORTRAN,中使用,称为嵌入式SQL(EMBEDDEDSQL),简称ESQL;而接受SQL嵌入的高级语言,称为主语言或者宿主语言。对于宿主语言中的嵌入式SQl,DBMS通常采用两种方法处理。•一是预编译方法;•一是修改和扩充主语言方法,
使之能够处理SQL。当前主要采用第一种方法。其过程是,有DBMS的预处理程序对源程序进行扫描,识别出SQL语句,然后将它们转换为主语言调用语句,从而使得主语言能过识别它们,最后由主语言的编译程序将整个源程序编译成目标代码。所有在终
端交互方式下使用的SQL均能在嵌入方式下使用。由于使用方式的差异,存在着具体操作方式上的不同。但无论是怎样的使用方式,都需要解决下面三个主要问题:•应用程序中主语言的语句和SQL的语句,这两种语句;•应用程序中既有主语言变量又有SQL列变量,如何区分这两种变量;•主语言变量一般均
为标量,而SQL中的列变量一般均为集合量,如何建立由集合量到标量的转换。3.10.1主语言语句和SQL语句的区分•在嵌入方式下,所有SQL语句在嵌入主语句的程序时几乎都必须在其前缀加EXECSQL,而结束标志可以因主语言不同而不同,一般是在语句结束处用END-EXEC或用分号“;”。•在程序中
所使用的SQL中的表,包括基表和视图都要用EXECSQLDECLEAR语句加以说明。•SQL语句执行后,系统要反馈给程序以信息,这些信息均送入SQL通讯区(SQLCommunicationArea)SQLCA。•SQLCA是一个数据结构,在应用程序中用EXECSQLINCLUDESQLC
A语句加以定义。•SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE,这是一个整型变量,反映SQL语句执行后的结果状态。•应用程序每执行一条SQl语句之后都应测试一次SQLCODE的值。•当它为0时表示正常结束,即SQL语句成功;•非0时为非正常结束,SQL语句不
成功。•即使说,SQLCODE的基本功用是DBMS向宿主程序报告执行SQL语句的情况。ElelenEnmi胶原蛋白口服液买四赠一品牌正品情侣装亲子装全场包邮淘宝:http://li370286038.taobao.co
m/或者拍拍:http://shop.paipai.com/370286038例:在一些高级语言中使用嵌入式SQL语言的格式与删除S的情况。在C中使用SQL语言使以EXECSQL开始,以分号“;”结束,其格式为:EXECSQL<S
QL语句>;•删除关系S的命令为:EXECSQLDROPTABLES;在COBLE中以EXECSQL开始,以END_EXEC结束,格式为:EXECSQL<SQL语句>END_EXEC•删除S的语句为:EXECSQLDROPTABLESEND_EXEC在Po
werBuilder中使用SQL与通常SQL没有任何区别,语句前不需要加任何EXECSQL,只需用分号作为语句结束标记,即删除S的语句为:DROPTABLES嵌入式SQL语句根据其作用的不同,可以分为
可执行语句和说明性语句两类。可执行语句又分为数据定义、数据控制和数据操作三种。在宿主语言编写的程序(宿主程序)中任何允许出现执行高级语言语句的地方,都可以嵌入可执行SQL语句;任何允许出现说明性高级语句的地方,都可以写说
明性SQL语句。3.10.2主语言变量与SQL变量的区别1.主变量与指示变量主变量在嵌入方式下,程序中的SQL语句段内可使用主语言的程序变量来输入和输出数据。SQL中使用主语言程序定义的变量称为主变
量。•主变量根据其作用的不同,分为输入主变量和输出主变量。•输入主变量由应用程序对其赋值,SQL加以引用;•输出主变量由SQL语句对其赋值或设置状态信息,返回给应用程序。•一个主变量可以既是输入主变量,又是输出主变量。利用输入主变量,我们可以完成以下功能:•指定向数据库中
插入的数据;•把数据库中的数据修改为指定值;•指定WHERE子句或HAVING子句中的条件。•利用输出主变量,我们可以得到SQL语句的执行结果和状态信息。指示变量•一个主变量可以附带一个任选的指示变量(indicatorvariable)。•指示变量
是一个整型变量,用来“指示”所述主变量的值或者条件。•指示变量可以指示输入主变量是否为空值,可以检测输出主变量是否为空值,值是否被截断等。2.主变量与指示变量的说明所有SQL语句中用到的主变量和指示变量都必须
加以说明。说明的开头行与结尾行分别为:•EXECSQLBEGINDECLEARSECTION•EXECSQLENDDECLEARSECTION。•说明了之后的主变量和指示变量,可以在SQL语句中任何一个能够使用表达
式的地方调用。•SQL语句中的主变量名称前必须添加冒号(∶)作为标志,这是为了与数据库中的对象名(表名,视图名,属性名等)向区别。同样,SQL语句中的指示变量之前也必须加有冒号,同时紧跟在所指的主变量之后。•在SQL语句之外的其它地方,说明之后的主变量
和指示变量可以直接引用,不必添加冒号。•在主程序内,一般不出现SQL变量。能够使用表达式的地方调用。3.10.3.游标语句的使用1.概念SQL语言与主语言在数据处理有着不同方式。SQL是面向集合的,一条S
QL语句原则上可以产生或处理多条记录。主语言使面向记录的,一组主变量一次只能存放一条记录,仅仅使用主变量并不能够完全满足SQL语句向应用程序输出数据的要求。这里基本的问题是,在嵌入方式下,SQL的变量是集合型的,主变量为标量型的,SQL变量不能够直接提供给
主程序使用。为了解决这个问题,就需要有一种机制,将SQL变量中的集合量逐个取出送入主变量内,进而提供给主程序使用。解决问题的基本思路是在嵌入式SQL中引入“游标”的概念,用游标来协调SQL和主语言的两种不同数据处理方式。游标本质上是系统为用户开设的一个数据缓冲区,用以存
放SQL语句的结果数据集。每个游标区都有一个名字。用户可以通过游标逐一读取数据记录,然后赋值给主变量,再交由主语言程序作进一步的处理。利用游标概念提供上述协调机制的基本方法是在嵌入式SQL中增加一组游标(cursor)语句。2.游标语句游标定义语句•有为某一种语句的结果定义一个命名的游
标。其语句为:EXECSQLDECLARE<游标名>CURSORFOR<映像语句>游标打开语句•游标定义后再使用时需要打开游标,此时游标处于活动状态并指向集合的第一个记录。其一般形式为:EXECSQLOPEN<游标名>游标
关闭语句•游标使用完后需要关闭。其一般形式为:EXECSQLCLOSE<游标名>游标推进语句•该语句读出当前记录,并将游标推向集合中的下一个记录,此语句常用于循环,其一般形式为:EXECSQLFETCH<游标名>例:查询DEPT变量中
给出的某个系的全体学生的信息。EXECSQLDECLARESXCURSORFORSELECTS#,Sn,SaFROMSWHERESd=:DEPT;EXECSQLOPENSX;DOWHILEEXECSQLFETCHSX;INTOS#,SNAME,AGE…..EN
D;EXECSQLCLOSESX;作业:课本习题3的:2,13ElelenEnmi胶原蛋白口服液买四赠一品牌正品情侣装亲子装全场包邮淘宝:http://li370286038.taobao.com/或者拍拍:h
ttp://shop.paipai.com/370286038本章小结简单查询:选择条件、排序输出、聚合运算以及分组处理。连接查询:查询的并、交、差;连接与笛卡尔积;元组变量。嵌套查询:产生单值的子查
询;涉及到关系的选择条件;涉及到元组的选择条件;相关子查询。数据库更新:插入、删除、修改。定义关系模式:定义表、撤消表;更改关系模式;建立和撤消索引。视图:定义视图、查询视图、更新视图、撤消视图。