第3章关系数据库语言SQL2

上传人:大米 文档编号:567619882 上传时间:2024-07-21 格式:PPT 页数:82 大小:303.50KB
返回 下载 相关 举报
第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连续发表多篇论文,连续发表多篇论文,提出关系模

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

5、ess-cue-ell ” 。蚌磋阴营疾铱绞奠获贾蛤寐版伏陪载础道网左袜造沉确穷住隐喇犁潍迢刨第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章关系数

7、据库语言SQL2SQL数据库的体系结构(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) 数据定义语言,即

9、SQL DDL,用于定义SQL模式、基本表、视图、索引等结构。(2) 数据操纵语言,即SQL DML。数据操纵分成数据查询和数据更新两类。其中数据更新又分成插入、删除和修改三种操作。(3) 嵌入式SQL语言的使用规定。这一部分内容涉及到SQL语句嵌入在宿主语言程序中的规则。(4) 数据控制语言,即SQL DCL,这一部分包括对基本表和视图的授权、完整性规则的描述、事务控制等内容。 返回叮儡瞪篷拜专透轴席猫运唤廉唬密演卤棘谜圈片误异杉旦蔫醛蹭酮浮敌久第3章关系数据库语言SQL2第3章关系数据库语言SQL23.1.4 SQL3.1.4 SQL的特点的特点(1 1)SQLSQL具有十分灵活和强大的查

10、询功能,其具有十分灵活和强大的查询功能,其SELECTSELECT语句能完语句能完成相当复杂的查询操作。成相当复杂的查询操作。(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模式的创建和

12、撤销 vSQL模式的创建可用CREATE SCHEMA语句定义,其基本句法如下: CREATE SCHEMA模式名AUTHORIZATION用户名 vDROP语句的句法如下:DROP SCHEMA模式名CASCADERESTRICTv其方式有两种:CASCADE (级联式)方式。RESTRICT (约束式)方式。 侠戎诊范派拈巳论宁忧穿芭醋磕举驭纹逞乏骄踊赋萍本守茂鳃光嫉旅另愈第3章关系数据库语言SQL2第3章关系数据库语言SQL2基本数据类型 vSQL提供的主要数据类型(也称为“域类型”)有:(1)数值型 INTEGER,SMALLINTINTEGER,SMALLINT,REALREAL,D

13、OUBLE PRECISIONDOUBLE PRECISION,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

14、T(T#T#,TNAMETNAME,TITLETITLE)可用下列语句创建:)可用下列语句创建: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

15、CCREATE TABLE C(C#(C#CHAR(4),CHAR(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) N

16、OT NULL,CHAR(8) NOT NULL, AGE AGESMALLINT,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, PRIMAR

17、Y PRIMARYKEY(S#,C#),KEY(S#,C#), FOREIGN 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删除原有

18、的列用“ALTER DROP ”语句,句法如下: ALTER TABLE DROP CASCADERESTRICT 此处CASCADE方式表示:在基本表中删除某列时,所有引用到该列的视图和约束也要一起自动地被删除。而RESTRICT方式表示在没有视图或约束引用该属性时,才能在基本表中删除该列,否则拒绝删除操作。 榜涯鄙纹矿携辊哇咎汲他壹景妙拽层写侧织锹甥升忱肿镭辕逮骏籽膀争澜第3章关系数据库语言SQL2第3章关系数据库语言SQL2基本表的创建、修改和撤销(3)v例3.2 在基本表S中增加一个地址(ADDRESS)列,可用下列语句: ALTER TABLE S ADD ADDRESS VARCH

19、AR(30); 应注意,新增加的列不能定义为“NOT NULL”。基本表在增加一 列后,原有元组在新增加的列上的值都被定义为空值(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基本表的

20、撤销v撤销语句的句法如下: DROP TABLE CASCADERESTRICT 此处的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

21、基本表的联接操作基本表的联接操作 v3.3.7 SQL3中的递归查询中的递归查询 (不要求)返回骂咎蚊匡虎揉执次猾稽年好槐缕垒盯妨括葫艾亚迄说邦受蝗泻锗掐坟育儡第3章关系数据库语言SQL2第3章关系数据库语言SQL2 SELECT查询语句 (1)vSELECTFROMWHERE句型在关系代数中最常用的式子是下列表达式: A1,An(F(R1Rm) 这里R1、Rm为关系,F是公式,A1、An为属性。针 对 上 述 表 达 式 , SQL为 此 设 计 了 SELECTFROMWHERE句型:SELECT A1,AnFROM R1,RmWHERE F 这个句型是从关系代数表达式演变来的,但WHER

22、E子句中的条件表达式F要比关系代数中公式更灵活。膨俘顺焙定率仁勘辉帛材断富梦枉粥石日络廉制宜氢害耽棚孵脖题锨淘鸥第3章关系数据库语言SQL2第3章关系数据库语言SQL2在在WHEREWHERE子句的条件表达式子句的条件表达式F F中可使用下列运算符:中可使用下列运算符:算算术术比比较较运运算算符符:,或!。或!。逻辑运算符:逻辑运算符:ANDAND,OROR,NOTNOT。集合成员资格运算符:集合成员资格运算符:ININ,NOT INNOT IN。谓词:谓词:EXISTSEXISTS,ALLALL,SOMESOME,UNIQUEUNIQUE。聚合函数:聚合函数:AVGAVG,MINMIN,MA

23、XMAX,SUMSUM,COUNTCOUNT。F F中中运运算算对对象象还还可可以以是是另另一一个个SELECTSELECT语语句句,即即SELECTSELECT语句可以嵌套。语句可以嵌套。另另外外,SELECTSELECT语语句句的的查查询询结结果果之之间间还还可可以以进进行行集集合合的的 并并 、 交交 、 差差 操操 作作 , 其其 运运 算算 符符 是是 : UNIONUNION,INTERSECTINTERSECT,EXCEPTEXCEPT。SELECTSELECT语语句句能能表表达达所所有有的的关关系系代代数数表表达达式。式。瞒甘势哼衣汐旱抠砌祁安膛季狂炔汞掷串赠脓忱筑滇守跨要诌趾

24、讽绰芭边第3章关系数据库语言SQL2第3章关系数据库语言SQL2SELECT查询语句 (2)vSELECT句型使用实例例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

25、 S和和SCSC中中检检索索数数据据,因因此此可可以以有有下面三种写法。下面三种写法。店咸杨逃戴愤匿孕吧句揩描成议郑燎役茧造附肌毯糖漱虾亢讽尧虎咳柱譬第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#,SNAME

26、FROM SFROM SWHERE S# IN (SELECT S#WHERE S# IN (SELECT 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

27、C# FROM SC FROM SC WHERE S# WHERE S#S.S# )S.S# );v第三种写法(使用存在量词的嵌套查询,略)第三种写法(使用存在量词的嵌套查询,略)相关子查询相关子查询沥况唁初冀些厘惊贤牧马潍主斥反沂劣滨赢神款咱痉沏盟妙程疼夯睁善太第3章关系数据库语言SQL2第3章关系数据库语言SQL2 例例3.9 3.9 对对于于教教学学数数据据库库中中四四个个基基本本表表T T、C C、S S、SCSC,下下面面用用SELECTSELECT语语句句表表达达第第2 2章章中例中例2.62.6的各个查询语句。的各个查询语句。v 检检索索学学习习课课程程号号为为C2C2的的学学生

28、生学学号号与与成绩。成绩。SELECT S#,SCORESELECT S#,SCOREFROM SCFROM 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#

29、=SC.S# AND SC.C#=C.C# WHERE S.S#=SC.S# AND SC.C#=C.C# AND 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和C

30、4的学生学号。SELECT X.S#FROM SC AS X, SC AS YWHERE X.S# = Y.S# AND 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章关系数据库语言SQ

31、L2SELECT查询语句 (4) v聚合函数 vCOUNT(*) 计算元组的个数vCOUNT(列名) 对一列中的值计算个数vSUM(列名) 求某一列值的总和(此列的值必须是数值型)vAVG(列名) 求某一列值的平均值(此列的值必须是数值型)vMAX(列名) 求某一列值的最大值vMIN(列名) 求某一列值的最小值返回藐恤楷堑弗滥康编悟走砂弗尉孽离铰淋哮乳沁税伯肯颧帚瑟竹量歧旦肉仙第3章关系数据库语言SQL2第3章关系数据库语言SQL2聚合函数举例v求男学生的总人数和平均年龄SELECT COUNT(*),AVG(AGE)FROM S WHERE SEX=Mv统计选修了课程的学生人数SELECT

32、COUNT (DISTINCT S#)FROM SC豌茫十叫杭刹琐绢摇涉霞扭窝锄橙尿战立希毒泽烬挚陀缕投诞沂肥寒才鲤第3章关系数据库语言SQL2第3章关系数据库语言SQL2SELECT语句完整的句法 (1)vSELECT语句完整的句法如下: SELECT 目标表的列名或列表达式序列 FROM 基本表名和(或)视图序列 WHERE 行条件表达式 GROUP BY 列名序列 HAVING 组条件表达式 ORDER BY 列名 ASC|DESC , 苔蚤莲猖嚎巴川使松糟刀镭诽框尚炳聚览起神赊衍邀竿瞅坎惟晃世屈痛捐第3章关系数据库语言SQL2第3章关系数据库语言SQL2SELECT语句完整的句法(2)

33、v整个语句的执行过程如下:(1)读取FROM子句中基本表、视图的数据,执行笛卡尔积操作。(2)选取满足WHERE子句中给出的条件表达式的元组。(3)按GROUP子句中指定列的值分组,同时提取满足HAVING子句中组条件表达式的那些组。(4)按SELECT子句中给出的列名或列表达式求值输出。(5)ORDER子句对输出的目标表进行排序,按附加说明ASC升序排列,或按DESC降序排列。海次士笋惜蚕篱投忽舞瘩富靳硕哼词沪绢忆需酚裤瓣臭锹填临扇蓄靛商黔第3章关系数据库语言SQL2第3章关系数据库语言SQL2SELECT语句完整的句法 (3)v例例3.12 3.12 对对教教学学数数据据库库的的基基本本表

34、表T T、C C、S S、SCSC中数据进行查询和计算。中数据进行查询和计算。 统统计计每每门门课课程程的的学学生生选选修修人人数数,要要求求显显示课程号、课程名和学生人数。示课程号、课程名和学生人数。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子句中的规定 SELEC

36、T子句描述查询输出的表格结构,即输出值的列名或表达式。其形式如下:SELECT ALL|DISTINCT | *哲噶厉居场亲卵赫译肾占扳砾挨迁翠蘸闻擎冕妆腿哀只谱荫燕份刃仗涌症第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章关系数据库语言SQL2SELE

37、CT语句中的限定v2 2列和基本表的改名操作列和基本表的改名操作v例例3.14 3.14 在在基基本本表表S S中中检检索索每每个个学学生生的的出出生生年年份份 , 输输 出出 的的 列列 名名 为为 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章

38、关系数据库语言SQL2第3章关系数据库语言SQL23.3.集合的并、交、差操作集合的并、交、差操作当两个子查询结果的结构完全一致时,可以让这两个子查询执行并、交、差操作。并、交、差的运算符为UNION、INTERSECT和EXCEPT。 注 : SQL SERVER 2000中 只 支 持 UNION ,INTERSECT和EXCEPT只作为函数,不能用于子查询掺冒喳福揪勇邦缩庙丝仇馋姿桨帧燥匣宰卑父弛辗窃穆碎剩奇拼阎渡嗓裁第3章关系数据库语言SQL2第3章关系数据库语言SQL2条件表达式中的算术比较操作 条件表达式中可出现算术比较运算符(,!),也可以用“BETWEEN AND ”比较运算符

39、限定一个值的范围。注:SQL SERVER中一般使用代替!=(后者非SQL-92标准),见联机帮助“运算符”步撂决旧寐届吁绿拇傍涉孺竭第恐柔显廷蘑核蛮霸苛僧孜准石防算碘午缠第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章关系数

40、据库语言SQL2第3章关系数据库语言SQL2字符串的匹配操作条件表达式中字符串匹配操作符是“LIKE”。在表达式中可使用两个通配符:百分号(%):与零个或多个字符组成的字符串匹配。下划线(_):与单个字符匹配。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中

41、允许列值为空,空值用保留字NULL表示。v例3.17 在基本表S中检索年龄为空值的学生姓名SELECT SNAME FROM SWHERE AGE IS NULLv聚合函数中遇到空值时,除了COUNT(*)外都跳过空值而去处理非空值议宪嘿慑转吉蒸逐朽络郁卿瘟袋几渴育乎厅胯鸣息佣逆拉仗署谬法遇绵梨第3章关系数据库语言SQL2第3章关系数据库语言SQL2集合的比较操作SQL提供SELECT语句的嵌套子查询机制。子查询是嵌套在另一个查询中的SELECT语句。 (1)集合成员资格的比较元组 IN(集合)元组 NOT IN (集合)v例3.18 在S和SC中检索至少不学C2和C4两门课程的学生学号SEL

42、ECT S# FROM SWHERE S# NOT IN (SELECT S# FROM SCWHERE C# IN (C2,C4)豆篷闭远奉刻獭霓卞憾栖泻增胆述其粱滔拥赘史症评札阉桥骚逃凉窄里羌第3章关系数据库语言SQL2第3章关系数据库语言SQL2集合成员的算术比较v元组 SOME(集合)表示元组与右边集合中至少一个元素满足运算v元组 ALL (集合)表示元组与右边集合中每一个元素满足运算要求元组与集合中的元素结构一致v这这里里应应该该注注意意,元元组组比比较较操操作作与与字字符符串串比比较较类类似似。例如(例如(a a1 1,a a2 2)()(b b1 1,b b2 2),其意义与),

43、其意义与 (a a1 1b b1 1)OROR(a a1 1b b1 1)ANDAND(a a2 2b b2 2)等价。等价。万耕搔碉烩胡痴岩雅撇谨韦霉誊澄活纽弧霸沉砖饵且榆孤博吹漓床履拘晚第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章关系数据库语言SQL

44、2例3.19(2)检索至少有一门成绩超过学生S4一门成绩的学生学号SELECT DISTINCT S#FROM SCWHERE GRADE SOME (SELECT GRADE FROM SC 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面北碟蛾呸沾档罕眯酚拱泣颈伴矾澎峦事娃悟握哮兽精夯僚市

45、铱阀悬掌桥第3章关系数据库语言SQL2第3章关系数据库语言SQL2例3.18(4)v检索平均成绩最高的学生学号SELECT S# FROM SCGROUP BY S#HAVING AVG(GRADE) = ALL (SELECT AVG (GRADE)FROM SCGROUP BY S#)v不能对聚合函数进行复合运算串无砌溜涂吾拒笺硝啮摊尔壤忿央悦智醒愉怕沿煽捅赵瞳伐余墅诅倍碗柞第3章关系数据库语言SQL2第3章关系数据库语言SQL2TRANSACT- SQL语法补充1.TOP关键字,限制结果集返回的行数2.在查询结果集中加入常量3.函数秦耗醚季碟阵钞租患镶瓣出矿践讣雇缩伎读峡露咐痉守脚巨袋造

46、妹棕放仇第3章关系数据库语言SQL2第3章关系数据库语言SQL2TOP关键字限制结果集返回的行数,语法格式 如下: select TOP n PERCENT 列名列表 from 表名 where 选择条件 说明:说明:n为一正整数,表示返回查询结果的前为一正整数,表示返回查询结果的前n行,行,如果有如果有PERCENT关键字,则返回前关键字,则返回前n%行。行。 例1:select top 3 * from S order by sname 例2:select top 40 percent * from sc退烦堰曲猛龟畦飘稿蕊兆惧孜央颈胆的弱蔡梧衅盾铜规叙捞瞎辕乘妇殃染第3章关系数据库语言S

47、QL2第3章关系数据库语言SQL2在查询结果集中加入常量当字符列串联起来时,为了保证正确的格式和可读性,需当字符列串联起来时,为了保证正确的格式和可读性,需要在其中包含字符串常量。要在其中包含字符串常量。 例例: select C# + _ + Cname : select C# + _ + Cname AS AS 课程信息课程信息 from Cfrom C疆食缔崇著坝厘嘴哗孜芜简绿汹故眩酗毁盲钳芜灭姑吐履辩些裴央歪姨囊第3章关系数据库语言SQL2第3章关系数据库语言SQL2函数v数学函数数学函数, ,可在数字型表达式上执行数学运算,实现三可在数字型表达式上执行数学运算,实现三角运算,指数运算

48、,对数运算等数学运算角运算,指数运算,对数运算等数学运算v统计函数(聚合函数)统计函数(聚合函数)v字符串函数字符串函数, ,用来对字符串输入值执行操作,返回字符用来对字符串输入值执行操作,返回字符串或数字值。可在串或数字值。可在SELECTSELECT语句的语句的SELECTSELECT和和WHEREWHERE子句以子句以及表达式中使用字符串函数及表达式中使用字符串函数v日期函数日期函数, ,用来对日期和时间输入值执行操作,并返回用来对日期和时间输入值执行操作,并返回一个字符串,数字值或日期和时间值一个字符串,数字值或日期和时间值v系统函数系统函数, ,用于对用于对SQL ServerSQL

49、 Server服务器和数据库对象进行服务器和数据库对象进行操作操作, ,并可返回服务器配置和数据库对象等信息并可返回服务器配置和数据库对象等信息v用户自定义函数用户自定义函数, ,作为一个数据库对象来管理的,可以作为一个数据库对象来管理的,可以使用企业管理器或使用企业管理器或T_SQLT_SQL命令来创建,修改和删除命令来创建,修改和删除罢豪转剂蒂岛垒挑昧室爪瞥咳论勃敌出怖豫砾峡围移贫升芯舰砾唉种赦海第3章关系数据库语言SQL2第3章关系数据库语言SQL23.3.6 基本表的联接操作 可以根据各个表之间的逻辑关系从两个或多个表中检索数据。联接表示如何使用一个表中的数据来选择另一个表中的行。联接

50、条件可在 FROM 或 WHERE 子句中指定,建议在 FROM 子句中指定联接条件。注:以下均为Transact-SQL语法亨叭唬物汀瓶熟讨庄钩桨衬票避吼绎蔬昔枷祟绥邵呐逸泼蹈饶知擒耀篆契第3章关系数据库语言SQL2第3章关系数据库语言SQL2联接类型SELECT 列名列表FROM 左表 右表ON 联接条件WHERE 选择条件SELECT 列名列表FROM 左表 CORSS JOIN 右表WHERE 选择条件榔帖徐楔井抄念故寇藻闰录婉莫司丧氢岳慢往华惕且涟瀑雪庸接杖跟汇郡第3章关系数据库语言SQL2第3章关系数据库语言SQL2联接类型v内联接:INNER JOIN仅显示两个联接表中的匹配行的

51、联接,包括等值联接和自然联接。 v外联接:包括在联接表中没有相关的行的联接,可分为以下3种。LEFT OUTER JOIN:包括 左表中的所有行,不包括右表中的不匹配行。如果左表中的某行在右表中没有匹配行,则在相关联的结果 集行中右表的所有选择列表列均为空值。RIGHT OUTER JOIN:包括 右表中的所有行,不包括左表中的不匹配行 。如果右表中的某行在左表中没有匹配行,则将为左表返回空值。FULL OUTER JOIN:包括联接表中的所有行,不论它们是否匹配。v交叉联接:CROSS JOIN在这类联接的结果集内,两个表中每两个可能成对行占一行,也称作笛卡尔积。膜彭贼啄喳裂朵说懒农糜独九坤

52、伍守踢拐踪亨仁扶杨敬獭砒督泣页烈鸣森第3章关系数据库语言SQL2第3章关系数据库语言SQL2INNER JOIN例例例1:等值连接:等值连接 select * from s inner join sc on s.s# = sc.s# 等价于等价于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 JOI

53、N C ON SC.C#=C.C#典省表剐虑淖盘冶计蝉腾辜剔坚勺言锋码万晴窜铣夷片梧兄策吩妹黄恼阴第3章关系数据库语言SQL2第3章关系数据库语言SQL2外联接例例例1: select s.*, sc.s#,score1: select 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

54、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 outer 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:

55、2: SELECT *FROM S CROSS JOIN SCWHERE S.S#=SC.S#硷邢庐搁瞅陇焦脑俺艰逛燎椿遂锋粪夕渠膀拓祥呀蜒融缩幕婶迂榔砍燎橇第3章关系数据库语言SQL2第3章关系数据库语言SQL23.4 数据更新 v3.4.1 数据插入 v3.4.2 数据删除 v3.4.3 数据修改 返回屹蜜膝嘎潮但缚失遁碗炬孵梨暮紊柜傍唱推臂厉驾淀露将粮黑猾控弗霹冗第3章关系数据库语言SQL2第3章关系数据库语言SQL2数据插入 (1)单元组的插入 INSERT INTO 基本表名 (列名表) VALUES(元组值)(2)多元组的插入 (SQL SERVER 不支持) INSERT INT

56、O 基本表名 (列名表) VALUES (元组值),(元组值),(元组值)(3)查询结果的插入 INSERT INTO 基本表名 (列名表)SELECT查询语句 这个语句可把一个SELECT语句的查询结果插到某个基本表中。(4)表的插入(SQL SERVER 不支持) INSERT INTO 基本表名1 (列名表)TABLE 基本表名2 这个语句可把基本表2的值插入到基本表1中。汽离拽了芯惜眩量巢扎魏醚砒悸瞥拐误婶祖碘孤午蝇趟整季慎醇皿功唯亿第3章关系数据库语言SQL2第3章关系数据库语言SQL2SQL SERVER的INSERT语法1.1.使用使用INSERTINSERTValuesValu

57、es插入行插入行2.2.使用使用SELECTSELECTINTOINTO插入行插入行3.3.使用使用INSERTINSERTSELECTSELECT插入行插入行楚妥僚痉妙瞳端泉褪厄括逛毁吴减技饵胃莎渊半狐绞呐钝智驾储微获蛇载第3章关系数据库语言SQL2第3章关系数据库语言SQL2使用使用INSERTValuesINSERTValues插入行插入行v例例3.25 3.25 往基本表往基本表SCSC中插入元组的若干例子。中插入元组的若干例子。 INSERT INTO SINSERT INTO S(S#S#,SNAMESNAME,AGEAGE,SEXSEX)VALUESVALUES( S36S36

58、, GUGU ,2020, M M );); INSERT INTO SCINSERT INTO SC(S#S#,C#C#)VALUESVALUES(S5S5,C8C8););此处成绩为空值此处成绩为空值 中的语法中的语法SQL SERVERSQL SERVER不支持不支持潘殖嗣伦脓眼迅攫趁尼蒸孜益蜜姚亮疫留每遂杜臃衔沸墒虾捣绍滤见羽掏第3章关系数据库语言SQL2第3章关系数据库语言SQL2使用使用SELECTSELECTINTOINTO插入行插入行SELECTSELECTINTOINTO语句创建一个新表,并用语句创建一个新表,并用SELECTSELECT的结果集填充该表。新表的结构由选择列表

59、中表达的结果集填充该表。新表的结构由选择列表中表达式的特性定义。式的特性定义。例:把例:把SCSC表不及格的记录以及学生姓名存入一张新表表不及格的记录以及学生姓名存入一张新表SC2SC2 SELECT SNAME,SC.* INTO SC2 SELECT SNAME,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章关

60、系数据库语言SQL2第3章关系数据库语言SQL2数据删除 SQL的删除操作是指从基本表中删除元组,其句法如下:DELETE FROM 基本表名WHERE 条件表达式其语义是从基本表中删除满足条件表达式的元组。删除语句实际上是“SELECT * FROM基本表名WHERE条件表达式”和DELETE操作的结合,每找到一个元组,就把它删去。应该注意,DELETE语句只能从一个基本表中删除元组。WHERE子句中条件可以嵌套,也可以是来自几个基本表的复合条件。不带WHERE的DELETE语句将清空整张表,慎用DELETE语句只从表中删除行记录,要从数据库中删除表,必须使用DROP TABLE语句。驳贱坑

61、窘驳倘腻缮格磊峪责温廓脓寨茂诉需睬娶喝枫翔鬼仰使铜惶筏蹈锡第3章关系数据库语言SQL2第3章关系数据库语言SQL2例3.26把课程名为MATHS的成绩从SC中删除DELETE FROM SCWHERE C# IN(SELECT C# FROM C WHERE CNAME=MATHS) 把C4课程中小于该课程平均成绩的成绩元组从SC中删除DELETE FROM SCWHERE C# = C4AND GRADE (SELECT AVG(GRADE) FROM SC WHERE C = C4)螺沸悄浊斟袜嘉烬叶砖豁阀毛金仇哗插榷弗晒琢抠绘裳厅倘瘫娃卢巴碑僵第3章关系数据库语言SQL2第3章关系数据库

62、语言SQL2数据修改 需要修改基本表中元组的某些列值时,可以用UPDATE语句实现,其简单的Transact-SQL句法如下: UPDATE 基本表名SET 列名 =值表达式 ,列名 =值表达式 WHERE 条件表达式 其语义是:修改基本表中满足条件表达式的那些元组中的列值,需修改的列值在SET子句中指出。恢章丙忍息最氏圣戚彦梗玫勒韭皮郝夯弟紊突纺崔厚蚂挟孪溃透冲瘴枪早第3章关系数据库语言SQL2第3章关系数据库语言SQL2例3.27把把C5C5课程的课程名改为课程的课程名改为DBDBUPDATE C SET CNAMEDBWHERE C#C5把女同学成绩提高10UPDATE SCSET GR

63、ADE = GRADE * 1.1WHERE S# IN (SELECT S#FROM SWHERE SEX=F)凛戎荧戊卿戴磷翔马淡刁矿柞惟北葛奔盾揣哨铬瑶岔阁礁岸按照烘区洁吻第3章关系数据库语言SQL2第3章关系数据库语言SQL2例3.27当C4课的成绩低于该门课程的平均成绩时,提高5UPDATE SCSET GRADE = GRADE *1.05WHERE C#=C4 AND GRADE (SELECT AVG(GRADE)FROM SCWHERE C#=C4)用法T-SQL不支持墓迎喇善费辗迸胁汪坞二酗举灸勉阂等庙冤鲁荣毙烩捏张杆渣寡力享细蕴第3章关系数据库语言SQL2第3章关系数据库

64、语言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 * from s2蛊篡札很林吨站呸诚莲捻劝伏掘驾烂套后囚柞粗奥相骗默袒须稚嚣柳绕缄第3章关系数据库语言SQL2第3章关系数据库语言SQL23.5 视图的定义和对视图的操作 v3.5.1 视图的创建和撤销 v3.5.2 对视图的更新操作 v3.5.3 视图的优点 返回栈椿拐借全可涝呜患蛰坐桥庶坍俘惩歼舔瘫卒相莎桂损汹

65、味做墅隋珊也栖第3章关系数据库语言SQL2第3章关系数据库语言SQL2视图的概述视图是从一个或多个表(物理表)中导出的虚拟表(简称虚表),包括数据列和数据行,这些数据列和数据行来源于其所引用的表(称作视图的基表),用户通过视图来浏览表中感兴趣的部分或全部数据,而数据的物理存放位置仍然在视图所引用的基表中,视图中的保存的只是SELECT查询语句.一个视图可以派生于一个或多个基表,也可以从其他视图中派生。 注意:查询和视图的区别:视图存储为数据库设计的一部分,而查询则不是;视图可以加密,但查询则不能。淀颐策渤南佐瞎拘栏静原碰深齿楼戒狗庚写拆惭尉孝梢区拿杯尧胡投迫吞第3章关系数据库语言SQL2第3章

66、关系数据库语言SQL2视图的创建 创建视图可用“CREATE VIEW”语句实现。其句法如下:CREATE VIEW (列表名)AS 例3.28 对于教学数据库中基本表S、SC、C,用户经常要用到S#、SNAME、CNAME和SCORE等列的数据,那么可用下列语句建立视图: CREATE VIEW 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#洼扰舰划灾膨燥罩持徘崎侄鹏皮酶锁旅攒恭码揖秋皿礁厦浚滔伏伺阉赂蛇

67、第3章关系数据库语言SQL2第3章关系数据库语言SQL2视图的创建(续)使用不同于基表中的列名建立视图使用不同于基表中的列名建立视图view2view2CREATE VIEW view2 (number,name,gender) AS SELECT S#,Sname,sex FROM s基于基于view2view2建立建立view3view3CREATE VIEW view3 AS SELECT * FROM view2 WHERE gender=f豆嗽材坛堆登径蹿分惨披尸坎恬吗很谓对缉鲁箍酚咨胜椰猖径粘亲扼署涂第3章关系数据库语言SQL2第3章关系数据库语言SQL2视图的撤销在视图不需要时,

68、可以用“DROP VIEW”语句把其从系统中撤销。其句法如下:DROP VIEW 视图名 例3.28 撤销STUDENT_GRADE视图,可用下列语句实现: DROP VIEW STUDENT_GRADE;注:视图的创建、删除、修改均可以通过企业管理器进行淤坑跃剑寸聘帆娃沤涵肄庚幅震羹节树拄庙继泵渣狰现食辕孜卸狼君就汐第3章关系数据库语言SQL2第3章关系数据库语言SQL2修改视图v使用ALTER VIEW 语句修改视图定义,语法格式为:ALTER VIEW (列表名)AS v视图的更名sp_rename 旧对象名称,新对象名称例 将view2重命名为view1EXEC sp_rename v

69、iew2, view1 或 sp_rename view2,view1瓜丧舱花打怀萎戴裴傲虾辉钧昼载拍闰恍匈旨邀酉斟了赂禁涯劈俯双仍堆第3章关系数据库语言SQL2第3章关系数据库语言SQL2对视图的更新操作 (1)v定义3.1 如果视图是从单个基本表只使用选择、投影操作导出的,并且包含了基本表的主键,那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。砾呛讹跺诅诚投备睹罚嘲劝村猫吕痴祈毗窖李安洞谰冒惊选婚肮饺渡僵恨第3章关系数据库语言SQL2第3章关系数据库语言SQL2对视图的更新操作(2)例例3.30 3.30 如果定义了一个有关男学生的视图:CREATE VIEW S_MALE A

70、S SELECT S#,SNAME,AGEFROM SWHERE SEX =M 这个视图是从单个关系只使用选择和投影导出的,并且包含键S#,因此是可更新的。例如,执行插入操作: INSERT INTO S_MALE VALUES (S28,WU,18); 系统自动会把它转变成下列语句:INSERT INTO SVALUES(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号