DB第3章关系数据库标准语言SQL.ppt_第1页
DB第3章关系数据库标准语言SQL.ppt_第2页
DB第3章关系数据库标准语言SQL.ppt_第3页
DB第3章关系数据库标准语言SQL.ppt_第4页
DB第3章关系数据库标准语言SQL.ppt_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

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

文档简介

数据库原理与应用,第三章关系数据库标准语言SQL,2,问答及课堂讨论,1.假如要建立一个数据库,如何建立?2.数据库名字是什么?3.可以不可以使用一张表来存放这些数据?为什么?好处和坏处各是什么?4.要不要规范化,如何规范化?5.缺省值如何设置?6.完整性如何设置?7.最后结果应该是怎么样的?,3,本章导读,1、有关数据表的操作,包括表的创建、修改、删除和建立索引等操作以及表中数据维护的有关操作和方法;基本掌握在SQLServer2005中使用T-SQL语句对表的操作和表的数据操作,包括创建表、删除表、对表中字段建立索引、向表中增加数据、修改数据、删除数据等。2、如何从SQLServer2005中中使用SELECT语句查询数据的方法;基本掌握单表查询、连接查询、嵌套查询和集合查询,使用SELECT语句的条件子句、排序子句和分组子句。3、视图的概念和优点,并结合实例介绍了在SQLServer2005中如何实现创建、修改和管理视图;掌握在SQLServer2005中如何创建、修改和管理视图。,4,第3章关系数据库标准语言SQL,3.1SQL概述及特点3.2学生-课程数据库3.3SQL的数据定义功能3.4SQL的数据查询功能3.5SQL的数据更新功能3.6视图3.7小结,5,3.1SQL概述及特点3.2学生-课程数据库3.3SQL的数据定义功能,6,3.1SQL概述及特点,1.SQL的主要功能(1)数据定义功能(DDL)定义关系数据库的模式、外模式和内模式,以实现对基本表、视图以及索引文件的定义、修改和删除等操作。(2)数据操纵功能(DML)包括数据查询和数据更新两种数据操作语句:数据查询指对数据库中的数据查询、统计、分组、排序操作;数据更新指数据的插入、删除、修改等数据维护操作。(3)数据控制功能(DCL)通过对数据库用户的授权和收权命令来实现有关数据的存取控制,保证数据库的安全性;约束条件实现完整性。,7,2.SQL的特点,1)SQL具有自主式和嵌入式两种形式。2)SQL具有语言简洁、易学易用的特点。3)SQL支持三级模式结构。全体基本表构成了数据库的模式。视图和部分基本表构成了数据库的外模式。数据库的存储文件和它们的索引文件构成了关系数据库的内模式。,8,3.1SQL概述,9,3.1SQL概述,10,3.2学生-课程数据库,学生-课程模式S-T:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade),Student表,11,Course表,12,SC表,13,3.3SQL的数据定义功能,包括:定义基本表、定义视图、定义数据库,基本语句,14,3.3SQL的数据定义功能,相关约定:1、语句格式约定符号:实际语义;:任选;或|为必须其一;,n前面的项可以重复多次;-:行注释符/*/:块注释符2、一般语法规定数据项分隔符“,”;字符串常数:“”;3、SQL特殊语法规定关键字大写;结束符为;采用格式化书写;,15,创建和管理数据库(T-SQL),CREATEDATABASE数据库名ONPRIMARY(NAME=逻辑数据文件名,FILENAME=操作数据文件路径和文件名,SIZE=文件长度,MAXSIZE=最大长度,FILEROWTH=文件增长率),nLOGON(NAME=逻辑日志文件名,FILENAME=操作日志文件路径和文件名,SIZE=文件长度),nFORRESTORE子句中:PRIMARY指明主文件名;SIZE说明文件的大小,数据库文件最小为1MB,默认值为3MB;FILEROWTH说明文件的增长率,默认值为10%。FORRESTORE子句说明重建一个数据库,该重建的数据库用于数据恢复操作。,16,示例,createdatabaseschoolon(name=school_dat,filename=c:school.mdf,size=5,maxsize=10)logon(name=school_log,filename=c:school.ldf,size=3,maxsize=10),17,进入查询分析器,1.选择数据库,2.选择新建查询,18,打开查询分析器的第二种方式,直接点击,19,3.3SQL的数据定义功能,3.3.1基本表的定义和维护功能1.定义基本表定义基本表语句的一般格式为:CREATETABLE库名表名(列名数据类型列级完整性约束条件,列名数据类型列级完整性约束条件,n,表级完整性约束条件,n);,注意:默认情况下,SQL语言不区分大小写。,20,(1)SQL支持的数据类型,21,:所要定义的基本表的名字:组成该表的各个属性(列):涉及相应属性列的完整性约束条件:涉及一个或多个属性列的完整性约束条件,3.3SQL的数据定义功能,22,(1)例题,例建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。,USESCHOOLCREATETABLEStudent(Snochar(5)NOTNULLUNIQUE,Snamechar(20)UNIQUE,Ssexchar(1)default男,Sageintdefault20,Sdeptchar(15),23,例题(续),24,(2)列级完整性的约束条件,针对属性值设置的限制条件。1)NOTNULL或NULL约束。NOTNULL约束不允许字段值为空,而NULL约束允许字段值为空。2)UNIQUE约束。UNIQUE约束是惟一性约束,即不允许列中出现重复的属性值。3)DEFAULT约束。即将列中使用频率最高的属性值定义为default约束中的默认值,可以减少数据输入的工作量。CONSTRAINT约束名DEFAULT默认值使用格式:DEFAULT常量如:SageIntdefault20SageIntConstraintDF_Sagedefault20,25,4)CHECK约束。约束条件表达式直接跟在列定义后面检查约束,check约束通过约束条件表达式设置列值应满足的条件。格式:CONSTRAINT约束名CHECK约束条件表达式如:CRATETABLEtable1(性别char(2)constraintc1check(性别in(男,女)),-性别char(2)check(性别in(男,女)),不指定约束名),(2)列级完整性的约束条件,26,(3)表级完整性约束条件,涉及到关系中多个列的限制条件。1)UNIQUE约束。惟一性约束。2)PRIMARYKEY约束。定义主码,保证惟一性和非空性。格式为:CONSTRAINT约束名PRIMARYKEY(列组)如:constraintc2primarykey(学号,课程号),27,(3)表级完整性约束条件,3)FOREIGNKEY约束。用于定义外码约束,定义参照完整性。CONTRAINT约束名FOREIGNKEY(外码)REFERENCES被参照表名(与外码对应的主码名)如:constraintc3foreignkey(课程号)REFERENCES课程(课程号);,28,4)CHECK约束。约束条件表达式在列定义完成之后。检查约束,check约束通过约束条件表达式设置列值应满足的条件。格式:CONSTRAINT约束名CHECK约束条件表达式如:CRATETABLEtable1(性别char(2),年龄int,constraintc1check(性别in(男,女))),(3)表级完整性的约束条件,29,【例3-1】建立基本表:学生(学号,姓名,年龄,性别,所在系);课程(课程号,课程名,先行课);选课(学号,课程号,成绩).,CREATETABLE学生(学号CHAR(5)NOTNULLUNIQUE,姓名CHAR(8)NOTNULL,年龄SMALLINTDEFAULT20,性别CHAR(2)CHECK(性别=男or性别=女),所在系CHAR(20),列级约束,30,CREATETABLE学生(学号CHAR(5)NOTNULLUNIQUE,姓名CHAR(8)NOTNULL,年龄SMALLINTDEFAULT20,性别CHAR(2),所在系CHAR(20),CONSTRAINTC2CHECK(性别in(男,女),或:先建立好表基本结构,然后用ALTER修改表结构,添加约束。如下:ALTERTABLE学生ADDCONSTRAINTC1DEFAULT男FOR性别,表级约束,31,CREATETABLE课程(课程号CHAR(5)PRIMARYKEY,课程名CHAR(20),先行课CHAR(5),CREATETABLE选课(学号CHAR(5),课程号CHAR(5),成绩SMALLINT,CONSTRAINTC3CHECK(成绩BETWEEN0AND100),CONSTRAINTC4PRIMARYKEY(学号,课程号),CONSTRAINTC5FOREIGNKEY(学号)REFERENCES学生(学号),CONSTRAINTC6FOREIGNKEY(课程号)REFERENCES课程(课程号),32,2.修改基本表和删除基本表,ALTERTABLE表名ADD(新列名数据类型完整性约束,n)DROP完整性约束名COLUMN列名,nALTERCOLUMN(列名数据类型,n);:要修改的基本表ADD子句:增加新列和新的完整性约束条件DROP子句:删除指定的完整性约束条件ALTERCOLUMN子句:用于修改列名和数据类型,33,(1)使用ADD子句增加新列,【例3-2】向课程表Course中增加“学时”字段。ALTERTABLECourseADD学时SMALLINT;注意:不论基本表中原来是否已有数据,新增加的列一律为空值。(2)使用ALTER子句修改列的原定义(如何删除列?)【例3-3】将年龄的数据类型改为半字长整数。ALTERTABLEStudentaltercolumnSagesmallint注意:修改原有的列定义有可能会破坏已有数据。,34,(3)使用DROP子句删除指定的完整性约束条件,【例3-4】删除学生表中对年龄的默认值的定义。ALTERTABLEStudentDROPC1;【例3-5】删除学生姓名必须取唯一值的约束。ALTERTABLEStudentDROPUQ_Student_Sname;删除基本表的一般格式为:DROPTABLE表名;注意:将基本表删除,数据表上的索引都删除表上的视图往往仍然保留,但无法引用,DROPTABLEStudent;,【例3-6】删除Student表,35,3.3.2索引的定义和维护功能,1.索引的作用1)使用索引可以明显地加快数据查询的速度。2)使用索引可保证数据的惟一性。3)使用索引可以加快连接速度。2.建立索引的原则1)索引的建立和维护由DBA和DBMS完成。2)大表应当建索引,小表则不必建索引。3)对于一个基本表,不要建立过多的索引。4)根据查询要求建索引。,36,3.建立和删除索引的格式,建立索引格式为:CREATEUNIQUECLUSTERED|NONCLUSTEREDINDEX索引名ON表名(列名次序,列名次序);删除索引格式为:DROPINDEX表名|视图名.索引名;【例3-7】为学生_课程数据库中的学生、课程和选课三个表建立索引。其中,学生表按学号升序建立索引;课程表按课程号升序建聚集(簇)索引;选课表按学号升序和课程号降序建惟一索引。CREATEUNIQUEINDEXIX_SnoON学生(学号);(默认为升序)CREATECLUSTEREDINDEXIX_CnoON课程(课程号);CREATEUNIQUEINDEXIX_SCON选课(学号ASC,课程号DESC);,37,3.4SQL的数据查询功能,38,3.4SQL的数据查询功能,3.4.1SELECT语句介绍1.SELECT语句的语法SELECT目标列组FROM数据源WHERE元组选择条件GROUPBY分列组HAVING组选择条件ORDERBY排序列1排序要求1,n;,39,语法说明,(1)SELECT子句:指明目标列(字段、表达式、函数表达式、常量)。两个基本表中相同的列名表示为:表名.列名(2)FROM子句:指明数据源。表间用“,”分割。数据源不在当前数据库中,使用“数据库名.表名”表示。一表多用,用别名标识。定义表别名:表名别名(3)WHERE子句:元组选择条件。(4)GROUPBY子句:结果集分组。当目标列中有统计函数,则统计为分组统计,否则为对整个结果集统计。子句后带上HAVING子句表达组选择条件(带函数的表达式)。(5)HAVING短语:筛选出只有满足指定条件的组。(6)ORDERBY子句:对查询结果表排序。当排序要求为ASC时升序排序;排序要求为DESC时降序排列。,40,2.SELECT语句的操作符,(1)算术操作符+(加号)、(减号)、*(乘号)和/(除号)。(2)比较操作符=(等于)、(大于)、=(大于等于)、!=(不等于)、(小于大于)、!(不大于)和!3这里先用GROUPBY子句按Sno进行分组,在用聚集函数COUNT对每一组计数,HAVING短语给出了选择组的条件,3表示这个学生选修的课程超过3门,64,例3.48查询平均成绩大于等于90分的学生学号和平均成绩。SELECTSno,AVG(Grade)FROMSCWHEREAVG(Grade)=90GROUPBYSno;错误SELECTSno,AVG(Grade)FROMSCGROUPBYSnoHAVINGAVG(Grade)=90;,65,66,2.连接查询,连接查询中的连接条件通过WHERE子句表达,连接条件和元组选择条件之间用AND(与)操作符衔接。(1)等值连接和非等值连接表名1.列名1比较运算符表名2.列名2比较运算符:=、=、,=,)。与ANY或ALL谓词配合使用,注意:使用嵌套查询进行比较测试时,要求嵌套语句必须是返回单值的查询语句,80,【例3-21】求C1课程的成绩高于刘晨的C1课程成绩的学生学号和成绩。,分析:(1)在学生表中找出刘晨的学号;(2)在选课表中找出刘晨的C1课程的成绩;(3)最后在选课表中求出C1课程成绩大于刘晨的学生学号和成绩。,使用2层嵌套:第一层嵌套使用(大于)操作符号;第二层嵌套使用(等于)操作符号,81,SELECTsno,GradeFROM选课WHEREcno=C1ANDGrade(SELECTGradeFROM课程WHEREcname=C1ANDSno=(SELECTSnoFROM学生WHEREsname=刘晨),找出大于这个成绩的学生学号、成绩,找出刘晨的C1课程的成绩,找出刘晨的的学号,可用“in”代替,82,In操作符与比较操作符的区别,In操作符用于一个值与多个值的比较;比较操作符用于一个值与另一个值之间的比较,当比较符后面的值需要通过查询才能得到时,就需要使用比较符嵌套查询。,83,(3)使用ANY或ALL操作符的嵌套查询,格式为:字段比较符ANY|ALL子查询,84,【例3-22】求其他系中比计算机系某一学生年龄小的学生。SELECT*FROM学生WHERESage计算机系;,找出计算机系学生年龄,找出比其中一个年龄小的学生,【例3-23】求其他系中比计算机系学生年龄都小的学生。,SELECT*FROM学生WHERESage计算机系;,85,(4)使用EXISTS操作符的嵌套查询,【例3-24】求选修了C2课程的学生姓名。SELECTSnameFROM学生WHEREEXISTS(SELECT*FROM选课WHERE学生.Sno=SnoANDCno=C2),SELECTSname,CnoFROM学生,选课WHERECno=C2AND学生.Sno=选课.Sno,EXISTS代表存在量词。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。,86,【例3-25】求没有选修C2课程的学生姓名。,SELECTSnameFROM学生WHERENOTEXISTS(SELECT*FROM选课WHERE学生.Sno=SnoANDCno=C2),87,例子,【例3-26】查询选修了全部课程的学生的姓名SELECTSnameFROM学生WHERENOTEXISTS(SELECT*FROM课程WHERENOTEXISTS(SELECT*FROM选课WHERE学生.Sno=SnoAND课程.Cno=Cno),88,【例3-27】求至少选修了学号为“0102”的学生所选修的全部课程的学生学号和姓名。SELECTsno,snameFROM学生WHERENOTEXISTS(SELECT*FROM选课选课1WHERE选课1.sno=0102ANDNOTEXISTS(SELECT*FROM选课选课2WHERE学生.Sno=选课2.SnoAND选课1.Cno=选课2.Cno);,未选“0102”所选的课的记录,不存在,89,【例3-30】求选修了C1课程但没有选修C2课程的学生学号。,SELECT学号FROM选课WHERE课程号=C1MINUSSELECT学号FROM选课WHERE课程号=C2;,本例也可以用下面的EXISTS嵌套查询表示。,SELECTsnoFROM选课选课1WHEREcno=C1ANDNOTEXISTS(SELECTsnoFROM选课选课2WHERE选课1.sno=选课2.snoAND选课o=C2);,SQLServer没有Minus功能,可用notin代替,还可用notexists,二者语法稍有不同。,90,课堂练习,1.假设一个数据库中有关系:产品关系P(pno,pn,pr,ps),属性的含义依次为产品号、品名、单价和供应商;分别用关系代数表达式和SQL语句写出下列查询:检索供应商“希望”公司产品的产品号、产品名和单价。2假设一个数据库中有关系:订单关系R(rno,cno,pno,rd,qty)其属性的含义依次为订单号、客户号、产品号、日期和数量。规定一张订单只能订购一种产品。用SQL语句写出下列查询:检索每种产品的订单个数和订购产品的总量。,91,1.关系代数:pno,pn,pr(ps=希望(P)SELECTpno,pn,prFROMPWHEREps=希望2.SELECTcount(rno),sum(qty)FROMRGROUPBYpno,92,4.使用分组和SQL函数查询,【例3-31】求学生的总人数。SELECTCOUNT(*)FROM学生;,93,例子,【例3-32】求选修了课程的学生人数。SELECTCOUNT(DISTINCTSno)FROM选课,【例3-33】求课程和选修该课程的人数。,【例3-34】求选修课超过3门课的学生学号。,SELECTcno,COUNT(cno)FROM选课GROUPBYCno,SELECTSnoFROM选课GROUPBYSnoHAVINGCOUNT(*)3,94,【例3-35】求“C1”课程的平均成绩。SELECTCno,AVG(Grade)FROM选课WHERECno=C1GROUPBYCno;【例3-36】求学生“0101”的总成绩。SELECTSUM(ALL(Grade)FROM选课WHERESno=0101【例3-37】求学生“0101”的平均成绩。SELECTAVG(ALL(Grade)FROM选课WHERESno=0101?思考:不用ALL会有什么变化?若ALL换成DISTINCT呢?,95,查询语句小结,SELECTALL|DISTINCT别名,别名FROM别名,别名WHEREGROUPBY,.HAVINGORDERBYASC|DESC,ASC|DESC;,96,目标列表达式,目标列表达式格式(1).*(2).,.:由属性列、作用于属性列的SQL函数和常量的任意算术运算(+,-,*,/)组成的运算公式。,97,SQL函数格式,COUNTSUMAVG(DISTINCT|ALL)MAXMINCOUNT(DISTINCT|ALL*),98,条件表达式格式,(1)ANY|ALL(SELECT语句),99,条件表达式格式,(2)NOTBETWEENAND(SELECT(SELECT语句)语句),100,条件表达式格式,(3)(,)NOTIN(SELECT语句),101,条件表达式格式,(4)NOTLIKE(5)ISNOTNULL(6)NOTEXISTS(SELECT语句),102,条件表达式格式,(7)ANDANDOROR,103,3.5SQL的数据更新功能,104,3.5SQL的数据更新功能,3.5.1SQL的数据插入功能两种插入数据方式插入单个元组插入子查询结果1.使用常量插入单个元组格式为:INSERTINTO表名(属性列1,属性列2)VALUES(常量1,常量2);功能:将新元组插入指定表中。,105,例子,【例3-38】将一个新学生记录(学号:98010,姓名:张三,年龄:20,所在系:计算机系)插入到学生表中。,INSERTINTO选课(sno,cno)VALUES(98010,C10),【例3-39】插入一条选课记录(学号:98010,课程号:C10,成绩不详)。,INSERTINTO学生VALUES(98010,张三,20,男,计算机系);,106,插入单个元组注意:,INTO子句指定要插入数据的表名及属性列属性列的顺序可与表定义中的顺序不一致没有指定属性列:表示要插入的是一条完整的元组,且属性列与表定义中的顺序一致指定部分属性列:插入的元组在其余属性列上取空值VALUES子句提供的值必须与INTO子句匹配值的个数值的类型,107,2.在表中插入子查询的结果集,格式为:INSERTINTO表名(属性列1,属性列2)子查询;,CREATETABLE系平均年龄(系名称CHAR(20),平均年龄SMALLINT);INSERTINTO系平均年龄SELECTSdept,AVG(Sage)FROM学生GROUPBYSdept,【例5-40】求每个系学生的平均年龄,并把结果存入数据库中。,108,插入,DBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则实体完整性参照完整性用户定义的完整性对于NOTNULL约束的属性列是否提供了非空值对于UNIQUE约束的属性列是否提供了非重复值对于值域约束的属性列所提供的属性值是否在值域范围内,109,3.一次插入多条记录,用一条INSERT语句,插入多行(用SELECT子句代替VALUES子句)例子:INSERTINTO学生(sno,Sname)SELECT0112,aaaUNIONSELECT0113,bbbUNIONSELECT0114,ccc,110,3.5.2SQL的数据修改功能,UPDATE表名SET列名=表达式,列名=表达,nWHERE条件;三种修改方式修改某一个元组的值修改多个元组的值修改带子查询的语句,111,【例3-41】将学生表中全部学生的年龄加上2岁。,【例3-42】将选课表中的数据库课程的成绩乘以0.8。,UPDATE学生SETSage=Sage+2,UPDATE选课SETgrade=Grade*0.8WHERECno=(SELECTCnoFROM课程WHERECname=数据库);,112,【例3-43】将学号为0105的学生的年龄改为21岁。,Update学生SetSage=18WhereSno=0105,【例3-44】将计算机系全体学生的成绩加5分。,Update选课SetGrade=Grade+5WhereSnoin(selectSnofrom学生whereSdept=计算机系),113,SET子句指定修改方式:要修改的列修改后取值WHERE子句指定要修改的元组缺省表示要修改表中的所有元组,114,DBMS在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则:实体完整性用户定义的完整性NOTNULL约束UNIQUE约束值域约束,115,3.5.3SQL的数据删除功能,格式:DELETEFROM表名WHERE条件;,1、无条件删除;2、有条件删除;(1)基于本表条件的删除;(2)基于其它表条件的删除;,116,无条件删除,【例3-45】删除所有系平均年龄的记录。,Deletefrom系平均年龄删除完后,系平均年龄表是一个空表。,117,有条件删除,1、基于本表条件的删除,DELETEFROM学生WHERESdept=数学系,【例3-46】删除数学系的学生记录。,118,【例3-47】删除计算机系的学生记录及选课记录。DELETEFROM选课WHERESnoIN(SELECTSnoFROM学生WHERESdept=计算机系)DELETEFROM学生WHERESdept=计算机系,改为:删除数学系的不及格学生的选课记录呢?,119,3.6视图,120,3.6视图,基于视图的操作查询删除受限更新定义基于该视图的新视图,视图的特点虚表,是从一个或几个基本表(或视图)导出的表只存放视图的定义,不存放视图对应的数据基表中的数据发生变化,从视图中查询出的数据也随之改变,121,3.6视图,3.6.1定义视图3.6.2查询视图3.6.3更新视图3.6.4视图的作用,122,3.6.1定义视图,建立视图删除视图,123,视图的定义和维护功能,1.视图的优点1)视图能够简化用户的操作。2)视图机制可以使用户以不同的方式看待同一数据。3)视图对数据库的重构提供了一定程度的逻辑独立性。4)视图可以对机密的数据提供安全保护。,124,2.视图定义的格式一般格式为:CREATEVIEW视图名(列名组)AS子查询WITHCHECKOPTION;组成视图的属性列名:全部省略或全部指定子查询不允许含有ORDERBY子句和DISTINCT短语,RDBMS执行CREATEVIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出。,125,【例】建立计算机系学生的视图CREATEVIEWCS_StudentASSELECT*FROM学生WHERESdept=计算机系,【例】由学生、课程和选课三个表,定义一个计算机系的学生成绩视图,其属性包括学号、姓名、课程名和成绩。,CREATEVIEW学生成绩(学号,姓名,课程名,成绩)ASSELECT学生.Sno,学生.Sname,课程.Cname,选课.GradeFROM学生,课程,选课WHERE学生.Sno=选课.SnoAND课程.Cno=选课.CnoAND学生.Sdept=计算机系,126,3.视图的删除、查询和维护,视图删除语句的一般格式为:DROPVIEW视图名;注意:视图可以和基本表一样被查询,其使用方法与基本表相同,但利用视图进行数据增、删、改操作,会受到一定的限制。只允许对行列子集的视图进行更新操作。表名、视图名、视图和表的字段名或者过程名。,127,建立视图例子,例1建立信息系学生的视图。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROM学生WHERESdept=信息系,128,例2建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生。CREATEVIEWIS_StudentASSELECTSno,Sname,SageFROM学生WHERESdept=信息系WITHCHECKOPTION,129,对IS_Student视图的更新操作:修改操作:自动加上Sdept=信息系的条件删除操作:自动加上Sdept=信息系的条件插入操作:自动检查Sdept属性值是否为信息系如果不是,则拒绝该插入操作如果没有提供Sdept属性值,则自动定义Sdept为信息系,130,基于多个基表的视图例3建立信息系选修了C1号课程的学生视图。CREATEVIEWIS_S1(Sno,Sname,Grade)ASSELECT学生.Sno,Sname,GradeFROM学生,选课WHERESdept=信息系AND学生.Sno=选课.SnoAND选课.Cno=C1,131,基于视图的视图例4建立信息系选修了1号课程且成绩在90分以上的学生的视图。CREATEVIEWIS_S2ASSELECTSno,Sname,GradeFROMIS_S1WHEREGrade90,132,带表达式的视图例5定义一个反映学生出生年份的视图。CREATEVIEWBT_S(Sno,Sname,Sbirth)ASSELECTSno,Sname,2012-SageFROM学生,133,分组视图例6将学生的学号及他的平均成绩定义为一个视图假

温馨提示

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

评论

0/150

提交评论