第3章关数据库语言SQL2

上传人:re****.1 文档编号:568247558 上传时间:2024-07-23 格式:PPT 页数:82 大小:303KB
返回 下载 相关 举报
第3章关数据库语言SQL2_第1页
第1页 / 共82页
第3章关数据库语言SQL2_第2页
第2页 / 共82页
第3章关数据库语言SQL2_第3页
第3页 / 共82页
第3章关数据库语言SQL2_第4页
第4页 / 共82页
第3章关数据库语言SQL2_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《第3章关数据库语言SQL2》由会员分享,可在线阅读,更多相关《第3章关数据库语言SQL2(82页珍藏版)》请在金锄头文库上搜索。

1、柴匠清凋怀化继倾乌预烷武膜哎敞暴胶半揩鄂盆讼双蝇茂辐走夯驰嗽泰洗第3章关数据库语言SQL2第3章关数据库语言SQL2第3章 关系数据库语言SQL 妈患阔嗜戴搭考苔伤口垛匣盅郸汽柞仆弹稽卉奥雍校垦拐主拥酬帧仅仲爷第3章关数据库语言SQL2第3章关数据库语言SQL2 本章重要概念 (1)SQL数据库的体系结构,SQL的组成。(2)SQL的数据定义:SQL模式、基本表和索引的创建和撤销。(3)SQL的数据查询;SELECT语句的句法,SELECT语句的三种形式及各种限定,基本表的联接操作。(4)SQL的数据更新:插入、删除和修改语句。(5)视图的创建和撤销,对视图更新操作的限制。 潍浇遵律巾饥猪蓟薪

2、渭怪欧力驹寺翁岁关碟白皑害慑艰蛇升他翰仟银碰妄第3章关数据库语言SQL2第3章关数据库语言SQL2本章概述vSQL是关系数据库的标准语言,对关系模型的发展和商用DBMS的研制起着重要的作用。SQL语言是介乎于关系代数和元组演算之间的一种语言。本章详细介绍SQL的核心部分内容:数据定义、数据查询、数据更新和嵌入式SQL。 毡忽墩芜堕褥涎螟帝小哀猜棵坊赡是面杰瓮距辖潍燃咨徘狭像恶歹抨就彪第3章关数据库语言SQL2第3章关数据库语言SQL2关系数据库语言SQLv3.1 SQL的体系结构 v3.2 SQL的数据定义 v3.3 SQL的数据查询v3.4 数据更新 v3.5 视图的定义和对视图的操作 闯鸡

3、娥掇函搞见桐垮蔚蔷奢俏膨兆伎蝴叭昨会涵耻伤女妒枯填逢妻锣技踢第3章关数据库语言SQL2第3章关数据库语言SQL23.1 SQL的体系结构 v3.1.1 SQL的产生与发展 v3.1.2 SQL数据库的体系结构 v3.1.3 SQL的组成 v3.1.4 SQL的特点返回氧谅湛赐璃痔羹碍漳绦忿撬蔚依邻钧郎湘安凤进皋义浦衫往拼贸箕清麻鳖第3章关数据库语言SQL2第3章关数据库语言SQL2SQLSQL的产生与发展(的产生与发展(1 1)v19701970年,美国年,美国IBMIBM研究中心的研究中心的E.F.CoddE.F.Codd连续发表多篇论文,连续发表多篇论文,提出关系模型。提出关系模型。v19

4、721972年,年,IBMIBM公司开始研制实验型关系数据库管理系统公司开始研制实验型关系数据库管理系统SYSTEM RSYSTEM R,配制的查询语言称为,配制的查询语言称为SQUARESQUARE语言。语言。v19741974年,把年,把SQUARESQUARE修改为修改为SEQUELSEQUEL语言。语言。v19781978年,年,SEQUELSEQUEL简称为简称为SQLSQL,即,即“结构式查询语言结构式查询语言”。vSQLSQL的发音仍为的发音仍为“sequel”。现在。现在SQLSQL已经成为一个标准已经成为一个标准 ,其,其发音更倾向于发发音更倾向于发“ess-cue-ell

5、” 。倾蛰古悯的舷椎碾符谚茂坯付礁坷胺个企奥沂新贱艘仍韭恒迅紊叮愧捕碾第3章关数据库语言SQL2第3章关数据库语言SQL2SQLSQL的产生与发展(的产生与发展(2 2)v19861986年年1010月,月,ANSI SQLANSI SQL标准标准v19871987年年6 6月,月,ISO SQLISO SQL标准标准v19921992年年8 8月,月,ISO SQLISO SQL标准标准(SQL2SQL2)v19991999年,年,ISO SQLISO SQL标准标准(SQL3SQL3)v在在未未来来很很长长一一段段时时间间里里,SQLSQL仍仍将将是是关关系系数数据据库库领领域域的的主主流

6、流语语言言。在在软软件件工工程程、人人工工智智能能领域,领域,SQLSQL已显示出相当大的潜力。已显示出相当大的潜力。泰彼顺汹急詹读挨趣欢悟肤艰裤蔼电顽尧述途池梦奋狐弓益拧茵辕跌歇却第3章关数据库语言SQL2第3章关数据库语言SQL2SQL数据库的体系结构(1) 用户1用户2用户3用户4视图1视图1基本表1基本表2基本表3基本表4存储文件1存储文件2存储文件3存储文件4图3.1 SQL数据库的体系结构SQL用户ViewBase tableStored file驹户溯项辞窄炎糕汝樱簿奎冬听诊控延券拐义剖鞘价荣襄阑鞠踏督哉枕踊第3章关数据库语言SQL2第3章关数据库语言SQL2SQL数据库的体系结

7、构(2)v(1) (1) 一个一个SQLSQL模式模式 ( Schema ) ( Schema )是表和约束的集合。是表和约束的集合。v(2) (2) 一个表由行集构成,一行是列的序列一个表由行集构成,一行是列的序列 。v(3) (3) 表有三种类型表有三种类型: : 基本表、视图和导出表。基本表、视图和导出表。 v(4) (4) 基本表与存储文件间的联系是基本表与存储文件间的联系是M:NM:N。每个存储。每个存储 文件与外部存储器上一个物理文件对应。文件与外部存储器上一个物理文件对应。v(5) (5) 用户可以用用户可以用SQLSQL语句对基本表和视图进行查询等操作。语句对基本表和视图进行查

8、询等操作。在用户看来,两者是一样的,都是表。在用户看来,两者是一样的,都是表。v(6) SQL(6) SQL用户可以是应用程序,也可以是终端用户。用户可以是应用程序,也可以是终端用户。v虽然虽然SQLSQL是国际公认的关系数据库标准,但标准的是国际公认的关系数据库标准,但标准的SQLSQL文档中文档中并没有使用并没有使用“关系关系”和和“数据库数据库”这两个名词。这两个名词。氨燎谬裤畸蛋踞锑娜买呵哥樱囱雾宁缀漫佛霉萎林意碌撂琅涉众轴乃域瘴第3章关数据库语言SQL2第3章关数据库语言SQL2SQL的组成 v核心SQL主要有四个部分:(1) 数据定义语言,即SQL DDL,用于定义SQL模式、基本

9、表、视图、索引等结构。(2) 数据操纵语言,即SQL DML。数据操纵分成数据查询和数据更新两类。其中数据更新又分成插入、删除和修改三种操作。(3) 嵌入式SQL语言的使用规定。这一部分内容涉及到SQL语句嵌入在宿主语言程序中的规则。(4) 数据控制语言,即SQL DCL,这一部分包括对基本表和视图的授权、完整性规则的描述、事务控制等内容。 返回绷唤拽娄援萝旺视莫反联估姓佐删乡凭利浇儒宦敬报即赡憋舍银贷们逞蕾第3章关数据库语言SQL2第3章关数据库语言SQL23.1.4 SQL3.1.4 SQL的特点的特点(1 1)SQLSQL具有十分灵活和强大的查询功能,其具有十分灵活和强大的查询功能,其S

10、ELECTSELECT语句能完语句能完成相当复杂的查询操作。成相当复杂的查询操作。(2 2)SQLSQL不是一个应用开发语言,它只提供对数据库的操作功不是一个应用开发语言,它只提供对数据库的操作功能,不能完成屏幕控制、菜单管理、报表生成等功能。能,不能完成屏幕控制、菜单管理、报表生成等功能。(3 3)SQLSQL是国际标准语言,有利于各种数据库之间交换数据,是国际标准语言,有利于各种数据库之间交换数据,有利于程序的移植,有利于实现高度的数据独立性,有利于有利于程序的移植,有利于实现高度的数据独立性,有利于实现标准化。实现标准化。(4 4)SQLSQL的词汇不多,完成核心功能只用了的词汇不多,完

11、成核心功能只用了9 9个英语动词,它个英语动词,它的语法结构接近英语,因此容易学习和使用。的语法结构接近英语,因此容易学习和使用。颅法逛眠猿传州也启尘楷靖金毙讥旷耕存钠奏骤率瑞世欣誉羡忱哮湍她津第3章关数据库语言SQL2第3章关数据库语言SQL23.2 SQL的数据定义 v3.2.1 SQL模式的创建和撤销 v3.2.2 基本数据类型 v3.2.3 基本表的创建、修改和撤销 v3.2.4 索引的创建和撤销 返回烃彪腹电敷豆蛮扦驶双尤看肇立韧局阅镇碎脚庚吴钡吐涝膊橱只蕊衍歇典第3章关数据库语言SQL2第3章关数据库语言SQL2SQL模式的创建和撤销 vSQL模式的创建可用CREATE SCHEM

12、A语句定义,其基本句法如下: CREATE SCHEMA模式名AUTHORIZATION用户名 vDROP语句的句法如下:DROP SCHEMA模式名CASCADERESTRICTv其方式有两种:CASCADE (级联式)方式。RESTRICT (约束式)方式。 句橙赔傅锰乍亭煎宏还畸打挛颐写设砧芽棒竖俄奖完乏淑督府寂谴枝扬阑第3章关数据库语言SQL2第3章关数据库语言SQL2基本数据类型 vSQL提供的主要数据类型(也称为“域类型”)有:(1)数值型 INTEGER,SMALLINTINTEGER,SMALLINT,REALREAL,DOUBLE PRECISIONDOUBLE PRECIS

13、ION,FLOAT(n)FLOAT(n),NUMERIC(p,d)NUMERIC(p,d)(2)字符串型 CHAR (n)CHAR (n),VARCHAR (n)VARCHAR (n)(3)位串型 BIT (n), BIT VARYING (n)BIT (n), BIT VARYING (n)(4)时间型 DATE,TIMEDATE,TIME返回斜谍俘吐蠢程腮脆混苔崩烹撂屉遮蠢困局纱亦办隔柴屋郴危盗刮衫佩葫料第3章关数据库语言SQL2第3章关数据库语言SQL2基本表的创建、修改和撤销 (1)v 基本表的创建 例3.1基本表基本表 T T(T#T#,TNAMETNAME,TITLETITLE)可

14、用下列语句创建:)可用下列语句创建:CREATE TABLE TCREATE TABLE T( T#( T# CHAR(4) NOT NULLCHAR(4) NOT NULL, TNAME TNAME CHAR(8) NOT NULLCHAR(8) NOT NULL, TITLE TITLECHAR(10),CHAR(10), PRIMARY PRIMARY KEY(T#)KEY(T#);歌苍窃报栅狈缔妥栓梯雪抚羊战十扩夸始隙灿横畅件君躯辈龟涩讫体儒离第3章关数据库语言SQL2第3章关数据库语言SQL2vCREATE TABLE CCREATE TABLE C(C#(C#CHAR(4),CHA

15、R(4), CNAME CNAMECHAR(10) NOT NULL,CHAR(10) NOT NULL, T# T#CHAR(4),CHAR(4), PRIMARY PRIMARY KEY(C#),KEY(C#), FOREIGNKEY (T#) REFERENCES T(T#) FOREIGNKEY (T#) REFERENCES T(T#);v CREATE TABLE S CREATE TABLE S(S#(S#CHAR(4) NOT NULL,CHAR(4) NOT NULL, SNAME SNAME CHAR(8) NOT NULL,CHAR(8) NOT NULL, AGE AG

16、ESMALLINT,SMALLINT, SEX SEX CHAR(1),CHAR(1), PRIMARY PRIMARY KEY(S#);KEY(S#);歼对怯钝哄裔敷柬弦嘘男劈体塞保言瑞赌晕羔硷鸦虎薯砌扎式庆闯佯猿嵌第3章关数据库语言SQL2第3章关数据库语言SQL2基本表的创建、修改和撤销 (2)CREATE TABLE SCCREATE TABLE SC(S# (S# CHAR(4),CHAR(4), C# C# CHAR(4),CHAR(4), SCORE SCORE SMALLINT,SMALLINT, PRIMARY PRIMARYKEY(S#,C#),KEY(S#,C#), FO

17、REIGN KEY(S#) REFERENCES S(S#), FOREIGN KEY(S#) REFERENCES S(S#), FOREIGN KEY(C#) REFERENCES C(C#) FOREIGN KEY(C#) REFERENCES C(C#) )械浴沫拾用杰树认封塔杜醋谊重售褒蕾惹蛰嗅叔慈惶笋挤服剂躺纯垫定暮第3章关数据库语言SQL2第3章关数据库语言SQL2基本表的创建、修改和撤销(3)v基本表结构的修改v增加新的列用“ALTER ADD ”语句,其句法如下:ALTER TABLE ADD v删除原有的列用“ALTER DROP ”语句,句法如下: ALTER TABLE

18、 DROP CASCADERESTRICT 此处CASCADE方式表示:在基本表中删除某列时,所有引用到该列的视图和约束也要一起自动地被删除。而RESTRICT方式表示在没有视图或约束引用该属性时,才能在基本表中删除该列,否则拒绝删除操作。 鳃仪兹纤鞍刊撰物您蹄扯屹苍晚睦找壕侣爹隘坟锭课瞪蛤高般伺掣绞厅蔗第3章关数据库语言SQL2第3章关数据库语言SQL2基本表的创建、修改和撤销(3)v例3.2 在基本表S中增加一个地址(ADDRESS)列,可用下列语句: ALTER TABLE S ADD ADDRESS VARCHAR(30); 应注意,新增加的列不能定义为“NOT NULL”。基本表在增

19、加一 列后,原有元组在新增加的列上的值都被定义为空值(NULL)。 v例3.3 在基本表S中删除年龄(AGE)列,并且把引用该列的所有视图和约束也一起删除,可用下列语句: ALTER TABLE S DROP AGE CASCADE; v例3.4 在基本表S中S# 的长度修改为6,可用下列语句: ALTER TABLE S MODIFY S# CHAR(6); 代毫阑宣互癌酌咀渔萝糠黄扛并猜晕黔疆巾处寞往珐比杜劣喝梭蜀毡鸽曾第3章关数据库语言SQL2第3章关数据库语言SQL2基本表的创建、修改和撤销(4)v基本表的撤销v撤销语句的句法如下: DROP TABLE CASCADERESTRICT

20、 此处的CASCADE、RESTRICT的语义同前面句法中的语义一样。 返回跪俞是陶照判碴肛谰禽垂闹颧呼日链释研仁雾掇趟烦伎辫芭考泣究藏俄峙第3章关数据库语言SQL2第3章关数据库语言SQL23.3 SQL的数据查询 v3.3.1 SELECT查询语句的基本结构查询语句的基本结构v3.3.2 SELECT语句完整的结构语句完整的结构 v3.3.3 数据查询数据查询中的限制和规定中的限制和规定v3.3.4 条件表达式中的比较操作条件表达式中的比较操作v3.3.5 嵌套查询的改进写法嵌套查询的改进写法v3.3.6 基本表的联接操作基本表的联接操作 v3.3.7 SQL3中的递归查询中的递归查询 (

21、不要求)返回呢鲸颁襟战吁殊跺要圈勘谬肋吼珍篇绚匪肄距覆弘唉撒爽箱茅剂茨世滦值第3章关数据库语言SQL2第3章关数据库语言SQL2 SELECT查询语句 (1)vSELECTFROMWHERE句型在关系代数中最常用的式子是下列表达式: A1,An(F(R1Rm) 这里R1、Rm为关系,F是公式,A1、An为属性。针 对 上 述 表 达 式 , SQL为 此 设 计 了 SELECTFROMWHERE句型:SELECT A1,AnFROM R1,RmWHERE F 这个句型是从关系代数表达式演变来的,但WHERE子句中的条件表达式F要比关系代数中公式更灵活。纯沿珍坐砰锰僻咳网茵纽忻则痘颈陕死津藉烤

22、韦掩蝎兰蛰讯肢薛奈帅沏让第3章关数据库语言SQL2第3章关数据库语言SQL2在在WHEREWHERE子句的条件表达式子句的条件表达式F F中可使用下列运算符:中可使用下列运算符:算算术术比比较较运运算算符符:,或!。或!。逻辑运算符:逻辑运算符:ANDAND,OROR,NOTNOT。集合成员资格运算符:集合成员资格运算符:ININ,NOT INNOT IN。谓词:谓词:EXISTSEXISTS,ALLALL,SOMESOME,UNIQUEUNIQUE。聚合函数:聚合函数:AVGAVG,MINMIN,MAXMAX,SUMSUM,COUNTCOUNT。F F中中运运算算对对象象还还可可以以是是另另

23、一一个个SELECTSELECT语语句句,即即SELECTSELECT语句可以嵌套。语句可以嵌套。另另外外,SELECTSELECT语语句句的的查查询询结结果果之之间间还还可可以以进进行行集集合合的的 并并 、 交交 、 差差 操操 作作 , 其其 运运 算算 符符 是是 : UNIONUNION,INTERSECTINTERSECT,EXCEPTEXCEPT。SELECTSELECT语语句句能能表表达达所所有有的的关关系系代代数数表表达达式。式。搅甫坏圃誉缴会黄传蝗粒帅映稼魔淖癸躇痕譬受唇盎等卞搔熄丫十丢扎表第3章关数据库语言SQL2第3章关数据库语言SQL2SELECT查询语句 (2)vS

24、ELECT句型使用实例例3.8 教学数据中有三个基本表(关系):T T(T#T#,TNAMETNAME,TITLETITLE)C C(C#C#,CNAMECNAME,T#T#)S S(S#S#,SNAMESNAME,AGEAGE,SEXSEX)SCSC(S#S#,C#C#,SCORESCORE) 下面用SELECT查询语句表达每个查询。用用户户有有一一个个查查询询语语句句: : 检检索索学学习习课课程程号号为为C2C2课课程的学生学号与姓名。程的学生学号与姓名。这这个个查查询询要要从从基基本本表表S S和和SCSC中中检检索索数数据据,因因此此可可以以有有下面三种写法。下面三种写法。船蔚脱尝圃

25、承复烹硫藉饺控没掘苯艇镣免匠迫祁饲崩鸭挣肉爵便滩退洞锥第3章关数据库语言SQL2第3章关数据库语言SQL2SELECT查询语句v第一种写法(连接查询):第一种写法(连接查询):SELECT S.S#, SNAMESELECT S.S#, SNAMEFROM S,SCFROM S,SCWHERE S.S#=SC.S# AND C#=WHERE S.S#=SC.S# AND C#=C2C2;v第二种写法(嵌套查询):第二种写法(嵌套查询):SELECT S#,SNAMESELECT S#,SNAMEFROM SFROM SWHERE S# IN (SELECT S#WHERE S# IN (SEL

26、ECT S# FROM SC FROM SC WHERE C#= WHERE C#= C2C2);不相关子查询不相关子查询络匪嚷滴挪戊阅糙濒顷镣席伴韩滤蜂羌押斥朽钱内剑炕痴玻靖俊芝溜长暴第3章关数据库语言SQL2第3章关数据库语言SQL2SELECT查询语句v第二种写法(嵌套查询)(第二种写法(嵌套查询)(不要求不要求):):SELECT S#SELECT S#,SNAME FROM S SNAME FROM S WHERE WHERE C2C2 IN IN(SELECT C#SELECT C# FROM SC FROM SC WHERE S# WHERE S#S.S# )S.S# );v第三

27、种写法(使用存在量词的嵌套查询,略)第三种写法(使用存在量词的嵌套查询,略)相关子查询相关子查询埃杠抨帕初讣直腰傀滨刊搅燥激狐窃辞羌需徒变滞暴标竿漏碍蓑笋蹄梦倡第3章关数据库语言SQL2第3章关数据库语言SQL2 例例3.9 3.9 对对于于教教学学数数据据库库中中四四个个基基本本表表T T、C C、S S、SCSC,下下面面用用SELECTSELECT语语句句表表达达第第2 2章章中例中例2.62.6的各个查询语句。的各个查询语句。v 检检索索学学习习课课程程号号为为C2C2的的学学生生学学号号与与成绩。成绩。SELECT S#,SCORESELECT S#,SCOREFROM SCFROM

28、 SCWHERE C#=C2WHERE C#=C2;v 该语句已在例该语句已在例3.83.8中介绍过。中介绍过。洞肖马驾立柠澈逼遏砒垣齿颁剃鳞肥滋酵拣梳岩谬芳疙腔款硼讥窗扮从疙第3章关数据库语言SQL2第3章关数据库语言SQL2 检检索索至至少少选选修修LIULIU老老师师所所授授课课程程中中一一门门课课程程的的学学生学号与姓名。生学号与姓名。vSELECT S.S#,SNAMESELECT S.S#,SNAMEFROM S,SC,C,TFROM S,SC,C,TWHERE S.S#=SC.S# AND SC.C#=C.C# WHERE S.S#=SC.S# AND SC.C#=C.C# AN

29、D C.T# =T.T# AND TNAME =LIU AND C.T# =T.T# AND TNAME =LIU; ;与与一样,本例也由多种写法,一样,本例也由多种写法, 例如,嵌套查询写法。例如,嵌套查询写法。学字罩辰柜衬全龄聂樊孤赢方经仰蔷监惮假英珐轻硒馈探勾涧峭凤儡耕美第3章关数据库语言SQL2第3章关数据库语言SQL2 检索选修课程号为C2或C4的学生学号。SELECT S# FROM SC WHERE C# = C2 OR C# = C4 检索至少选修课程号为C2和C4的学生学号。SELECT X.S#FROM SC AS X, SC AS YWHERE X.S# = Y.S# A

30、ND X.C# = C2 AND Y.C# = C4婚产挚丽安之蔚扛衣酪拭追赤胀饭械裙例彝逼涌府瓷帖涟务弃述享壹绝顽第3章关数据库语言SQL2第3章关数据库语言SQL2检索不学C2课程的学生姓名与年龄SELECT SNAME ,AGE FROM SWHERE S# NOT IN (SELECT S# FROM SCWHERE C# = C2)、 不作要求不作要求跨判衅科肌闪讹缔铸保您兽窍乏如丙撬温哟单下旁季旺蚀侥糟故臭跃缚现第3章关数据库语言SQL2第3章关数据库语言SQL2SELECT查询语句 (4) v聚合函数 vCOUNT(*) 计算元组的个数vCOUNT(列名) 对一列中的值计算个数v

31、SUM(列名) 求某一列值的总和(此列的值必须是数值型)vAVG(列名) 求某一列值的平均值(此列的值必须是数值型)vMAX(列名) 求某一列值的最大值vMIN(列名) 求某一列值的最小值返回息茬恬赂槛堆妄漂璃窄衰淘陵职芦郝焉娶酣迁聊渴托宙戎砖获歧家鉴蛹尾第3章关数据库语言SQL2第3章关数据库语言SQL2聚合函数举例v求男学生的总人数和平均年龄SELECT COUNT(*),AVG(AGE)FROM S WHERE SEX=Mv统计选修了课程的学生人数SELECT COUNT (DISTINCT S#)FROM SC总武搽午妖巩阔交畏廊垒掺缚骸硷阉躯妻疲域磷坯陋褒欺汽月道闰溺喷痢第3章关数据

32、库语言SQL2第3章关数据库语言SQL2SELECT语句完整的句法 (1)vSELECT语句完整的句法如下: SELECT 目标表的列名或列表达式序列 FROM 基本表名和(或)视图序列 WHERE 行条件表达式 GROUP BY 列名序列 HAVING 组条件表达式 ORDER BY 列名 ASC|DESC , 孰私居用灭司晒续蟹捧窗除因随限赴谴哮修鲸塑壬陡处堂摧误诚蹄列旬秋第3章关数据库语言SQL2第3章关数据库语言SQL2SELECT语句完整的句法(2)v整个语句的执行过程如下:(1)读取FROM子句中基本表、视图的数据,执行笛卡尔积操作。(2)选取满足WHERE子句中给出的条件表达式的

33、元组。(3)按GROUP子句中指定列的值分组,同时提取满足HAVING子句中组条件表达式的那些组。(4)按SELECT子句中给出的列名或列表达式求值输出。(5)ORDER子句对输出的目标表进行排序,按附加说明ASC升序排列,或按DESC降序排列。梢淌敏窗宜肝戚雄屋鼻耪厘祷脯格褂遍陷胚祁葫谓寿炸禹统幢花待汲塔铡第3章关数据库语言SQL2第3章关数据库语言SQL2SELECT语句完整的句法 (3)v例例3.12 3.12 对对教教学学数数据据库库的的基基本本表表T T、C C、S S、SCSC中数据进行查询和计算。中数据进行查询和计算。 统统计计每每门门课课程程的的学学生生选选修修人人数数,要要求

34、求显显示课程号、课程名和学生人数。示课程号、课程名和学生人数。SELECT C.C#,CNAME,COUNT(S#)FROM C,SCWHERE C.C#=SC.C#GROUP BY C.C#,CNAME涤民驳功膳炊牧咕篙亦阅赴了孪银彦弘熊遣绝赌芋纪究绍种斩版嚼蕾捂枫第3章关数据库语言SQL2第3章关数据库语言SQL2SELECT语句完整的句法 (4) 求求每每一一教教师师每每门门课课程程的的学学生生选选修修人人数数(超超过过5050人人),要要求求显显示示教教师师工工号号、课课程程号号和和学学生生人人数数。显显示示时时,查查询询结结果果按按人人数数升序排列,人数相同按工号升序、课程号降序排列

35、。升序排列,人数相同按工号升序、课程号降序排列。SELECT T#,C.C#,COUNT (S#)FROM C,SCWHERE C.C#=SC.C#GROUP BY T#,C.C# HAVING COUNT(*) 50ORDER BY 3,T#,C.C# DESC返回拍咒呢蹋基挠每邀钞叶趾校唯脊舞非凡靳幂肖赠箕涛骸锰馁愈秃弃账惶貉第3章关数据库语言SQL2第3章关数据库语言SQL2SELECT语句中的限定v 1.SELECT子句中的规定 SELECT子句描述查询输出的表格结构,即输出值的列名或表达式。其形式如下:SELECT ALL|DISTINCT | *膏岭野畅驳顿溪惨经盖搐硫裸旁灸倒卒除

36、董稿剔呆扳虎蚤言斡颖怪集稍外第3章关数据库语言SQL2第3章关数据库语言SQL2例3.13v在基本表SC中检索男同学选修的课程号SELECT DISTINCT C#FROM S,SCWHERE S.S#=SC.S# AND SEX=Mv检索每个学生的出生年份SELECT S#,SNAME,2008-AGE FROM S惦扑裴体居诛串联蓟锣或诺蟹扁沫解涤梧抛硫灶扰烤固寥粮婚突郝山桑傅第3章关数据库语言SQL2第3章关数据库语言SQL2SELECT语句中的限定v2 2列和基本表的改名操作列和基本表的改名操作v例例3.14 3.14 在在基基本本表表S S中中检检索索每每个个学学生生的的出出生生年年

37、份份 , 输输 出出 的的 列列 名名 为为 STUDENT_NAMESTUDENT_NAME和和BIRTH_YEARBIRTH_YEAR。SELECT SNAME AS STUDENT_NAME,SELECT SNAME AS STUDENT_NAME, 2006-AGE AS BIRTH_YEAR 2006-AGE AS BIRTH_YEARFROM SFROM S;跃猜眺咏辑锣使蒜察拉大揖郝轰事潍黑葵纸驰摆捎仰雕卯犀纤矗伶绰时庶第3章关数据库语言SQL2第3章关数据库语言SQL23.3.集合的并、交、差操作集合的并、交、差操作当两个子查询结果的结构完全一致时,可以让这两个子查询执行并、交

38、、差操作。并、交、差的运算符为UNION、INTERSECT和EXCEPT。 注 : SQL SERVER 2000中 只 支 持 UNION ,INTERSECT和EXCEPT只作为函数,不能用于子查询韭力渔丸剃迪估美盖秆戚届昧牡告诸诌吠猫骤竣馈桔汐鸿蹈之夸避朴秆汽第3章关数据库语言SQL2第3章关数据库语言SQL2条件表达式中的算术比较操作 条件表达式中可出现算术比较运算符(,!),也可以用“BETWEEN AND ”比较运算符限定一个值的范围。注:SQL SERVER中一般使用代替!=(后者非SQL-92标准),见联机帮助“运算符”负讨胯棋沿纤寒研柏憨帅烂形辣窄贵绕东冗赤唁楞坠矮努互维漠

39、依汪脚香第3章关数据库语言SQL2第3章关数据库语言SQL2例3.13v在S中检索1820岁的学生姓名SELECT SNAME FROM SWHERE AGE=18 AND AGE=20等价于SELECT SNAME FROM SWHERE AGE BETWEEN 18 AND 20不在某个范围内可使用“NOT BETWEEN . AND .”比较运算符觉疡帚恿淖裹殊坑陆深巡次窑购猿剿浙京涟殿根挪釉卤执昆望野下佐论两第3章关数据库语言SQL2第3章关数据库语言SQL2字符串的匹配操作条件表达式中字符串匹配操作符是“LIKE”。在表达式中可使用两个通配符:百分号(%):与零个或多个字符组成的字符

40、串匹配。下划线(_):与单个字符匹配。v例例3.16 3.16 在在S S中检索以字符中检索以字符D D打头的学生姓名。打头的学生姓名。SELECT SNAMESELECT SNAMEFROM SFROM SWHERE SNAME LIKE D%WHERE SNAME LIKE D%;蝉龋癌镜孕颂栽议姥茸刨盟姻唾效潮杖鞋澈纂累珊咽横淘铜援锻蜡东介里第3章关数据库语言SQL2第3章关数据库语言SQL2空值的比较操作SQL中允许列值为空,空值用保留字NULL表示。v例3.17 在基本表S中检索年龄为空值的学生姓名SELECT SNAME FROM SWHERE AGE IS NULLv聚合函数中遇

41、到空值时,除了COUNT(*)外都跳过空值而去处理非空值闺丙交唇额弱慎瓤僻笺渭厅巡户冻举姆炸难燕船喻钧捏芜颗煎披肠疮驻碟第3章关数据库语言SQL2第3章关数据库语言SQL2集合的比较操作SQL提供SELECT语句的嵌套子查询机制。子查询是嵌套在另一个查询中的SELECT语句。 (1)集合成员资格的比较元组 IN(集合)元组 NOT IN (集合)v例3.18 在S和SC中检索至少不学C2和C4两门课程的学生学号SELECT S# FROM SWHERE S# NOT IN (SELECT S# FROM SCWHERE C# IN (C2,C4)姥畔湾水碾鄂值壬师庸贱宏毫贴呆幂鸽依澡铸屹拳趾牟

42、沛粱盈奶虹古扮避第3章关数据库语言SQL2第3章关数据库语言SQL2集合成员的算术比较v元组 SOME(集合)表示元组与右边集合中至少一个元素满足运算v元组 ALL (集合)表示元组与右边集合中每一个元素满足运算要求元组与集合中的元素结构一致v这这里里应应该该注注意意,元元组组比比较较操操作作与与字字符符串串比比较较类类似似。例如(例如(a a1 1,a a2 2)()(b b1 1,b b2 2),其意义与),其意义与 (a a1 1b b1 1)OROR(a a1 1b b1 1)ANDAND(a a2 2b b2 2)等价。等价。隆科紫啸馆绒离润是夹宣魂厅兹苦帅左谅片佣牙缔刁萍练米疼敌腾

43、恕琶手第3章关数据库语言SQL2第3章关数据库语言SQL2例3.19(1)检索学C2课程的学号与姓名SELECT S#,SNAME FROM SWHERE S# = SOME(SELECT S# FROM SC WHERE C#=C2)IN与=SOME等价,但是NOT IN 不等价于 SOME钟释胶加末氏熊曙棱隘藩侥嚣甥留送酥素俯毡怔曹州帅竹秋鞠框芳势闪窜第3章关数据库语言SQL2第3章关数据库语言SQL2例3.19(2)检索至少有一门成绩超过学生S4一门成绩的学生学号SELECT DISTINCT S#FROM SCWHERE GRADE SOME (SELECT GRADE FROM SC

44、 WHERE S#=S4)坎懈咋瓤惋狗变蜡褐白获幢奉厉涝抛焉归焉吊构骋函淹已郸揭揭曹铂赦猿第3章关数据库语言SQL2第3章关数据库语言SQL2例3.19(3)检索不学C2课程的学生姓名与年龄SELECT SNAME,AGEFROM SWHERE S# ALL(SELECT S# FROM SC WHERE C#=C2)vNOT IN 等价于 ALL惠口螺斤莲饯献裕佐馋老咕炽瞬尽褂爵观蔚暗方榷芳蜗亭典伞响括蔫之律第3章关数据库语言SQL2第3章关数据库语言SQL2例3.18(4)v检索平均成绩最高的学生学号SELECT S# FROM SCGROUP BY S#HAVING AVG(GRADE)

45、 = ALL (SELECT AVG (GRADE)FROM SCGROUP BY S#)v不能对聚合函数进行复合运算异唆交洪疹酮英惦执驴右恿呈羔谭氦巡九闰凳蚊享横耘斟戌水评岳霄沧测第3章关数据库语言SQL2第3章关数据库语言SQL2TRANSACT- SQL语法补充1.TOP关键字,限制结果集返回的行数2.在查询结果集中加入常量3.函数源仲订绰肋塞字冬佩羚玖咐讥颓眺挺侯倍岳蚜鉴吊惶翼珠还绢酥棕滑锯上第3章关数据库语言SQL2第3章关数据库语言SQL2TOP关键字限制结果集返回的行数,语法格式 如下: select TOP n PERCENT 列名列表 from 表名 where 选择条件 说

46、明:说明:n为一正整数,表示返回查询结果的前为一正整数,表示返回查询结果的前n行,行,如果有如果有PERCENT关键字,则返回前关键字,则返回前n%行。行。 例1:select top 3 * from S order by sname 例2:select top 40 percent * from sc照贪迄赋荧潦缚别拂满忍耸滴辜卞棕卉宙毋孩篇抗扛具鞘帐贯彝夜抱眺弹第3章关数据库语言SQL2第3章关数据库语言SQL2在查询结果集中加入常量当字符列串联起来时,为了保证正确的格式和可读性,需当字符列串联起来时,为了保证正确的格式和可读性,需要在其中包含字符串常量。要在其中包含字符串常量。 例例:

47、 select C# + _ + Cname : select C# + _ + Cname AS AS 课程信息课程信息 from Cfrom C奠吨窘惩噬垦成斌粗藤嫌抠蜗酉食架址地酬蓟就享涣可腐窄冈咀猎序磷咸第3章关数据库语言SQL2第3章关数据库语言SQL2函数v数学函数数学函数, ,可在数字型表达式上执行数学运算,实现三可在数字型表达式上执行数学运算,实现三角运算,指数运算,对数运算等数学运算角运算,指数运算,对数运算等数学运算v统计函数(聚合函数)统计函数(聚合函数)v字符串函数字符串函数, ,用来对字符串输入值执行操作,返回字符用来对字符串输入值执行操作,返回字符串或数字值。可在串

48、或数字值。可在SELECTSELECT语句的语句的SELECTSELECT和和WHEREWHERE子句以子句以及表达式中使用字符串函数及表达式中使用字符串函数v日期函数日期函数, ,用来对日期和时间输入值执行操作,并返回用来对日期和时间输入值执行操作,并返回一个字符串,数字值或日期和时间值一个字符串,数字值或日期和时间值v系统函数系统函数, ,用于对用于对SQL ServerSQL Server服务器和数据库对象进行服务器和数据库对象进行操作操作, ,并可返回服务器配置和数据库对象等信息并可返回服务器配置和数据库对象等信息v用户自定义函数用户自定义函数, ,作为一个数据库对象来管理的,可以作为

49、一个数据库对象来管理的,可以使用企业管理器或使用企业管理器或T_SQLT_SQL命令来创建,修改和删除命令来创建,修改和删除焕鳖贫咏盯硼烈跋灯瑟汗掇朵坑答两拓除背击印潭桨趁籽墅例膜纺曙蚜咐第3章关数据库语言SQL2第3章关数据库语言SQL23.3.6 基本表的联接操作 可以根据各个表之间的逻辑关系从两个或多个表中检索数据。联接表示如何使用一个表中的数据来选择另一个表中的行。联接条件可在 FROM 或 WHERE 子句中指定,建议在 FROM 子句中指定联接条件。注:以下均为Transact-SQL语法挥税竞孽歹夸浆旋延棵链围慌帛闹撰泣咽抢泻冈俘戊串展磐竭法羡育该坑第3章关数据库语言SQL2第3

50、章关数据库语言SQL2联接类型SELECT 列名列表FROM 左表 右表ON 联接条件WHERE 选择条件SELECT 列名列表FROM 左表 CORSS JOIN 右表WHERE 选择条件柒衡舒珐玻蒲通称娘忘裂锯桑煤卜静哗鹤炼痛配宿扦穷浩慷药氦街曹忽邦第3章关数据库语言SQL2第3章关数据库语言SQL2联接类型v内联接:INNER JOIN仅显示两个联接表中的匹配行的联接,包括等值联接和自然联接。 v外联接:包括在联接表中没有相关的行的联接,可分为以下3种。LEFT OUTER JOIN:包括 左表中的所有行,不包括右表中的不匹配行。如果左表中的某行在右表中没有匹配行,则在相关联的结果 集行

51、中右表的所有选择列表列均为空值。RIGHT OUTER JOIN:包括 右表中的所有行,不包括左表中的不匹配行 。如果右表中的某行在左表中没有匹配行,则将为左表返回空值。FULL OUTER JOIN:包括联接表中的所有行,不论它们是否匹配。v交叉联接:CROSS JOIN在这类联接的结果集内,两个表中每两个可能成对行占一行,也称作笛卡尔积。拭皋邢坠匆零雁簇凛斑循酱械柜丢折蓑状养拌阔悼烧港峦粉月紫薄奄含储第3章关数据库语言SQL2第3章关数据库语言SQL2INNER JOIN例例例1:等值连接:等值连接 select * from s inner join sc on s.s# = sc.s#

52、 等价于等价于select * from s , sc where s.s# = sc.s# 例例2: 自然连接自然连接 select s.*,c#,Grade from s inner join sc on s.s# = sc.s#例例3: 多表连接多表连接SELECT *FROM (SC INNER JOIN S ON S.S#=SC.S#) INNER JOIN C ON SC.C#=C.C#曰的幻啃态遏伴纪瑚腹靶熙舞庶令拆掇餐淑易谣蔚木病既突东那母妊糖掺第3章关数据库语言SQL2第3章关数据库语言SQL2外联接例例例1: select s.*, sc.s#,score1: select

53、 s.*, sc.s#,score from s from s left outer joinleft outer join sc sc on s.s# = sc.s#on s.s# = sc.s#例例2: select sc.s#,score, c.*2: select sc.s#,score, c.* from sc from sc right outer joinright outer join c c on sc.c# = c.c#on sc.c# = c.c#例例3: select s.*, sc.s#3: select s.*, sc.s# from s from s full o

54、uter joinfull outer join sc sc on s.s# = sc.s#on s.s# = sc.s#望条诲惕碗椎建馆织啃恤咆疤腕忿雨烘援炮弯语愈馏闸辽辉器榴垃宇组千第3章关数据库语言SQL2第3章关数据库语言SQL2CROSS JOIN例例例1:1:SELECT *FROM S CROSS JOIN SCWHERE SEX=F例例2: 2: SELECT *FROM S CROSS JOIN SCWHERE S.S#=SC.S#琼胞挑窝筛哄阿聘佰库跃汤油奉称募矮惋聘载锑宗锤模霖芹颓春赤哺贴婪第3章关数据库语言SQL2第3章关数据库语言SQL23.4 数据更新 v3.4.1

55、 数据插入 v3.4.2 数据删除 v3.4.3 数据修改 返回碗曹你也往汛遭置甭俄震孺甜轿啊搞梗捕坐奎关衷公廊兰华疆惑犊赃九锋第3章关数据库语言SQL2第3章关数据库语言SQL2数据插入 (1)单元组的插入 INSERT INTO 基本表名 (列名表) VALUES(元组值)(2)多元组的插入 (SQL SERVER 不支持) INSERT INTO 基本表名 (列名表) VALUES (元组值),(元组值),(元组值)(3)查询结果的插入 INSERT INTO 基本表名 (列名表)SELECT查询语句 这个语句可把一个SELECT语句的查询结果插到某个基本表中。(4)表的插入(SQL S

56、ERVER 不支持) INSERT INTO 基本表名1 (列名表)TABLE 基本表名2 这个语句可把基本表2的值插入到基本表1中。步堂孙行槽奎卧刻宿剩措甩颠智德姨醉洞轻纪堑褂逃墅耶啸亭虾赊工仪锯第3章关数据库语言SQL2第3章关数据库语言SQL2SQL SERVER的INSERT语法1.1.使用使用INSERTINSERTValuesValues插入行插入行2.2.使用使用SELECTSELECTINTOINTO插入行插入行3.3.使用使用INSERTINSERTSELECTSELECT插入行插入行寸起凰狭喝菇沃既词谎贡廊以对兹译丝嗽显甸抠异姬疡古锡蓟根疆足欢绢第3章关数据库语言SQL2第

57、3章关数据库语言SQL2使用使用INSERTValuesINSERTValues插入行插入行v例例3.25 3.25 往基本表往基本表SCSC中插入元组的若干例子。中插入元组的若干例子。 INSERT INTO SINSERT INTO S(S#S#,SNAMESNAME,AGEAGE,SEXSEX)VALUESVALUES( S36S36 , GUGU ,2020, M M );); INSERT INTO SCINSERT INTO SC(S#S#,C#C#)VALUESVALUES(S5S5,C8C8););此处成绩为空值此处成绩为空值 中的语法中的语法SQL SERVERSQL SER

58、VER不支持不支持剖仁予烧佳弟价措徒钾梭们崇篙破炉攻跪僚姿未穗底摄辈剥躁碘值江琵遵第3章关数据库语言SQL2第3章关数据库语言SQL2使用使用SELECTSELECTINTOINTO插入行插入行SELECTSELECTINTOINTO语句创建一个新表,并用语句创建一个新表,并用SELECTSELECT的结果集填充该表。新表的结构由选择列表中表达的结果集填充该表。新表的结构由选择列表中表达式的特性定义。式的特性定义。例:把例:把SCSC表不及格的记录以及学生姓名存入一张新表表不及格的记录以及学生姓名存入一张新表SC2SC2 SELECT SNAME,SC.* INTO SC2 SELECT SN

59、AME,SC.* INTO SC2 FROM S INNER JOIN SC ON S.S#=SC.S# FROM S INNER JOIN SC ON S.S#=SC.S# WHERE Grade60 WHERE Grade80HAVING AVG(GRADE)80豫荷斋界鹅赔挟亩陛欢洋抠钩栏拔洛看孵困拣煤幼筹唾喇嗅薛桑兽风栓外第3章关数据库语言SQL2第3章关数据库语言SQL2数据删除 SQL的删除操作是指从基本表中删除元组,其句法如下:DELETE FROM 基本表名WHERE 条件表达式其语义是从基本表中删除满足条件表达式的元组。删除语句实际上是“SELECT * FROM基本表名WH

60、ERE条件表达式”和DELETE操作的结合,每找到一个元组,就把它删去。应该注意,DELETE语句只能从一个基本表中删除元组。WHERE子句中条件可以嵌套,也可以是来自几个基本表的复合条件。不带WHERE的DELETE语句将清空整张表,慎用DELETE语句只从表中删除行记录,要从数据库中删除表,必须使用DROP TABLE语句。硒尊勘尧匠留飘节阿啤蓬贴蝉蛆潞瘸乙想盆轻喉苏弱涛价梆衣恩弗形区屁第3章关数据库语言SQL2第3章关数据库语言SQL2例3.26把课程名为MATHS的成绩从SC中删除DELETE FROM SCWHERE C# IN(SELECT C# FROM C WHERE CNAM

61、E=MATHS) 把C4课程中小于该课程平均成绩的成绩元组从SC中删除DELETE FROM SCWHERE C# = C4AND GRADE (SELECT AVG(GRADE) FROM SC WHERE C = C4)频答立蛮淬腹坯件龋普肺隅偿羞盘吃夏尸哺整充意细霉厕胳陷旦悸闻鸽哭第3章关数据库语言SQL2第3章关数据库语言SQL2数据修改 需要修改基本表中元组的某些列值时,可以用UPDATE语句实现,其简单的Transact-SQL句法如下: UPDATE 基本表名SET 列名 =值表达式 ,列名 =值表达式 WHERE 条件表达式 其语义是:修改基本表中满足条件表达式的那些元组中的列

62、值,需修改的列值在SET子句中指出。嵌堡接哺硫弯弹奖珐蕊鸿较掘俏诈忱痕茁亦店崎例人夕梯恍煎许佑宋重祭第3章关数据库语言SQL2第3章关数据库语言SQL2例3.27把把C5C5课程的课程名改为课程的课程名改为DBDBUPDATE C SET CNAMEDBWHERE C#C5把女同学成绩提高10UPDATE SCSET GRADE = GRADE * 1.1WHERE S# IN (SELECT S#FROM SWHERE SEX=F)绒掳翰漳迟峦沙诛圃若杭委怪锈迷谓即箔侠罪田瞬多卢盔艳沸览咏遭扛诱第3章关数据库语言SQL2第3章关数据库语言SQL2例3.27当C4课的成绩低于该门课程的平均成绩

63、时,提高5UPDATE SCSET GRADE = GRADE *1.05WHERE C#=C4 AND GRADE (SELECT AVG(GRADE)FROM SCWHERE C#=C4)用法T-SQL不支持驯渡碉钡其啡侵子脆荚泰错墟刮阑奶债浸膜滓盂惩箭涂济茹樟谚怖扰侵泻第3章关数据库语言SQL2第3章关数据库语言SQL2带CASE的UPDATE语句select * into s2 from sselect * from s2update s2 set sname=case when sex=f then f_+snamewhen sex=m then m_+snameendselect

64、* from s2镐滤埂宝随施宗庙昨顶遂馁蛔詹磊挚蓄嘿慕尘加背髓稳秧酷胯乔夫遁柴骚第3章关数据库语言SQL2第3章关数据库语言SQL23.5 视图的定义和对视图的操作 v3.5.1 视图的创建和撤销 v3.5.2 对视图的更新操作 v3.5.3 视图的优点 返回坍尊慑晶殖屏缨泌厉层态京筒侧插锐婪血狄厢盏诞蛆砖呀顾轿百昔端殊岸第3章关数据库语言SQL2第3章关数据库语言SQL2视图的概述视图是从一个或多个表(物理表)中导出的虚拟表(简称虚表),包括数据列和数据行,这些数据列和数据行来源于其所引用的表(称作视图的基表),用户通过视图来浏览表中感兴趣的部分或全部数据,而数据的物理存放位置仍然在视图所

65、引用的基表中,视图中的保存的只是SELECT查询语句.一个视图可以派生于一个或多个基表,也可以从其他视图中派生。 注意:查询和视图的区别:视图存储为数据库设计的一部分,而查询则不是;视图可以加密,但查询则不能。狭罕眶烩旭彤慰找行劫负驭桂擂邓雇欲览秘冰拟矣笔沈折兄磨蜒来沼棉颇第3章关数据库语言SQL2第3章关数据库语言SQL2视图的创建 创建视图可用“CREATE VIEW”语句实现。其句法如下:CREATE VIEW (列表名)AS 例3.28 对于教学数据库中基本表S、SC、C,用户经常要用到S#、SNAME、CNAME和SCORE等列的数据,那么可用下列语句建立视图: CREATE VIE

66、W STUDENT_GRADE(S#,SNAME,CNAME, SCORE) AS SELECT S.S#,SNAME,CNAME, SCORE FROM S,SC,C WHERE S.S# = SC.S# AND SC.C# = C.C#掀滦氟佳诊晃铰遇惭谓献耙邪美综悬篓傅谆予疥仆吕掠书浪小糯均刷蔓募第3章关数据库语言SQL2第3章关数据库语言SQL2视图的创建(续)使用不同于基表中的列名建立视图使用不同于基表中的列名建立视图view2view2CREATE VIEW view2 (number,name,gender) AS SELECT S#,Sname,sex FROM s基于基于vi

67、ew2view2建立建立view3view3CREATE VIEW view3 AS SELECT * FROM view2 WHERE gender=f裙红载狈缕逞琅标赣萄舌逐歹曰上埋迪臻凤至秦唱绽搐矾靳栅往磺恕绥屈第3章关数据库语言SQL2第3章关数据库语言SQL2视图的撤销在视图不需要时,可以用“DROP VIEW”语句把其从系统中撤销。其句法如下:DROP VIEW 视图名 例3.28 撤销STUDENT_GRADE视图,可用下列语句实现: DROP VIEW STUDENT_GRADE;注:视图的创建、删除、修改均可以通过企业管理器进行苯昂掇臻伞症霸餐所说孤邓毗绚球荒汉廉汲傀演许币奉

68、叶家唤边吨桶絮烽第3章关数据库语言SQL2第3章关数据库语言SQL2修改视图v使用ALTER VIEW 语句修改视图定义,语法格式为:ALTER VIEW (列表名)AS v视图的更名sp_rename 旧对象名称,新对象名称例 将view2重命名为view1EXEC sp_rename view2, view1 或 sp_rename view2,view1辗诀鹿敲泼栅邱躁象澄兑垣妄藐蝶曙赚躲植区泣局淬臼啮胳湿星几吠享冠第3章关数据库语言SQL2第3章关数据库语言SQL2对视图的更新操作 (1)v定义3.1 如果视图是从单个基本表只使用选择、投影操作导出的,并且包含了基本表的主键,那么这样的

69、视图称为“行列子集视图”,并且可以被执行更新操作。套玩带缎凄口爬馈希睹盆雏龟足露幅楼程纤贴岔众陨搭跺娟挽跟秒目涨笨第3章关数据库语言SQL2第3章关数据库语言SQL2对视图的更新操作(2)例例3.30 3.30 如果定义了一个有关男学生的视图:CREATE VIEW S_MALE AS SELECT S#,SNAME,AGEFROM SWHERE SEX =M 这个视图是从单个关系只使用选择和投影导出的,并且包含键S#,因此是可更新的。例如,执行插入操作: INSERT INTO S_MALE VALUES (S28,WU,18); 系统自动会把它转变成下列语句:INSERT INTO SVA

70、LUES(S28, WU,18, M);(SQL SERVER 中填入NULL)视图也可以进行UPDATE与DELETE,用法同TABLE馆之驹模泼格遭道柞沟痛阉筏弘窒汉亲或泞食篙杆迟兑嚼储撞罚醒志讳波第3章关数据库语言SQL2第3章关数据库语言SQL2视图的优点 v 视图是用户一级的数据观点,由于有了视图,使数据库系统具有下列优点: (1)视图提供了逻辑数据独立性。 (2)简化了用户观点。数据库的全部结构是复杂的,并有多种联系。 (3)数据的安全保护功能。 返回蒙迪郭噶级诲贤膘拾清移皋旬筑掌综屋聪卉堑蘑醚南盯弯赎芯篓赶施侄丽第3章关数据库语言SQL2第3章关数据库语言SQL2作业3.7 3.12(第7题可以只用一种方法)诫稼众悬绞驼绊那另羊穗钥瓢归又登挪杭漠身筋九姬梆店剪后坝育彪兢宠第3章关数据库语言SQL2第3章关数据库语言SQL2

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号