《数据库原理与应用锦州师范高等专科学校计算机系》由会员分享,可在线阅读,更多相关《数据库原理与应用锦州师范高等专科学校计算机系(59页珍藏版)》请在金锄头文库上搜索。
1、数据库原理与应用数据库原理与应用锦州师范高等专科学校锦州师范高等专科学校计算机系计算机系侦汛怔漆览脯刀尝落皑从乏骡懒怨魂娄筑玄乒忙钢嘛绚角王晨古入透糯萎数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系第三章第三章 数据库的查询和试图数据库的查询和试图3.1 SELECT语句查询语句查询3.1.1 选择列选择列3.1.2 选择行选择行3.1.3 FROM子句子句3.1.4 数据汇总数据汇总3.1.5 排序排序3.1.6 SELECT语句的其他子句语句的其他子句3.2 视图视图3.2.1 视图的建立视图的建立3.2.2 视图的修改视图的修改3.2.3 视图的
2、删除视图的删除津桓端胳椎屹村诌订计吏旗预淋簿了饲砒徐庄修视涛剧踢特吉褪嘉疆弊袜数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图 Transact-SQLTransact-SQL的的SELECTSELECT语句从一个或者多个表或视图中检语句从一个或者多个表或视图中检索记录,使用查询分析器输入一条索记录,使用查询分析器输入一条SELECTSELECT语句,查询情况将在语句,查询情况将在结果窗口中显示。可以编辑或打印这些结果,并且把它们保存结果窗口中显示。可以编辑或打印这些结果,并且把它们保存
3、在非数据库文件中。在非数据库文件中。3.1 SELECT语句查询语句查询3.1.1 选择列选择列SELECT语句中的语句中的SELECT子句指定要返回的列;子句指定要返回的列;WHERE子句子句指定选择条件来限制返回结果中的行。指定选择条件来限制返回结果中的行。1.指定列指定列 语法形式如下:语法形式如下: SELECT 列名列名1,n FROM 表名表名1,n 鼻狮憨竿电扦桔擒夷靶钠汰兄竣咕坦户纽惰畏腹屠檀昌帆勘饭绒逃衡顺癸数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-1
4、3-1】选择】选择XSQKXSQK表中的学号、姓名和专业名三列。表中的学号、姓名和专业名三列。 SELECT SELECT 学号学号, ,姓名姓名, ,专业名专业名 FROM XSQK FROM XSQK2.2.使用通配符(使用通配符(* *)【例【例3-23-2】选择】选择XSQKXSQK表的所有列。表的所有列。 SELECT * SELECT * FROM XSQK FROM XSQK3.3.使用列表达式使用列表达式在在SELECTSELECT子句中可以使用算术运算符对数字型数据列进行(子句中可以使用算术运算符对数字型数据列进行(+ +、- -、* *、/ /和和% %)。)。注意:取模运
5、算时,注意:取模运算时,% %的两边必须是整数型数据。的两边必须是整数型数据。崩透秤陋乳脊赡蕾那协杂菠麦杰莽拧宾寂蚂舆始迫致袄颠坊京韵恒械奉扔数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-33-3】查询】查询XS_KCXS_KC表,并增加了一个计算列,使其为成绩列加表,并增加了一个计算列,使其为成绩列加5 5。 SELECT SELECT 学号学号, ,课程号课程号, ,成绩成绩, ,成绩成绩+5+5 FROM XS_KC FROM XS_KC4.4.改变查询结果中的列名改
6、变查询结果中的列名 第一种方法:第一种方法:“=”“=”法。法。 【例【例3-43-4】为【例】为【例3-33-3】中的计算列指定了一个列名】中的计算列指定了一个列名“调整后的调整后的成绩成绩”。 SELECT SELECT 学号学号, ,课程号课程号, ,成绩成绩, ,调整后的成绩调整后的成绩= =成绩成绩+5+5 FROM XS_KC FROM XS_KC第二种方法:第二种方法:“AS”“AS”法。法。【例【例3-53-5】为【例】为【例3-43-4】中的成绩列指定了一个新列名】中的成绩列指定了一个新列名“原成绩原成绩”。辜规尝点暖蜜洲畅尧念雍声阻佃斑嘛耍忿倒邯磐未燃内茹奖缄生驶秃用舔数据
7、库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图 SELECT 学号学号,课程号课程号,成绩成绩 AS 原成绩原成绩,调整后的成绩调整后的成绩=成绩成绩+5 FROM XS_KC5.增加说明列增加说明列目的:增加查询结果的可读性。目的:增加查询结果的可读性。【例【例3-63-6】在查询结果中备注列前增加了一个说明列。】在查询结果中备注列前增加了一个说明列。 SELECT SELECT 学号学号, ,姓名姓名,职务是职务是,备注备注 FROM XSQK FROM XSQK【例【例3-73-7】
8、说明文字串中有单引号的情况。】说明文字串中有单引号的情况。 SELECT SELECT 学号学号, ,姓名姓名,其其职务职务是是,备注备注 FROM XSQK FROM XSQK溯争律众吻蝗纳解谎导冀孽糠嘴凝赴昔柠咀挡玩丽枚炼榨茁盖婆触贫莲抽数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图6.使用系统函数使用系统函数包括:聚合函数、数学函数、字符串函数、日期和时间函数以包括:聚合函数、数学函数、字符串函数、日期和时间函数以及其他一些系统函数。及其他一些系统函数。 AVG函数:返回指定列的
9、算术平均值。函数:返回指定列的算术平均值。【例【例3-83-8】计算】计算XS_KCXS_KC表中成绩列的算术平均值,并为列指定列名表中成绩列的算术平均值,并为列指定列名为为“平均值平均值” SELECT AVG( SELECT AVG(成绩成绩) AS ) AS 平均平均 FROM XS_KC FROM XS_KC COUNT COUNT函数:返回指定列的数据记录行数,不包含全部为函数:返回指定列的数据记录行数,不包含全部为NULLNULL值的记录行。值的记录行。【例【例3-93-9】选择计算】选择计算XSQKXSQK表中学生记录的行数。表中学生记录的行数。 SELECT COUNT( SE
10、LECT COUNT(学号学号) ) FROM XSQK FROM XSQK翻绍悦姐菌抛盂蜡翔酝帮章江呀镑诬绍塘庆街撕昂尹男善拎岗温坊艰磨耸数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-103-10】计算】计算XS_KCXS_KC表中成绩不及格的课程记录的总数,并指表中成绩不及格的课程记录的总数,并指定列名。定列名。 SELECT COUNT( SELECT COUNT(学号学号) AS ) AS 不及格课程总数不及格课程总数 FROM XS_KC FROM XS_KC W
11、HERE 成绩成绩60DISTINCT:指定返回的是不同记录行数。:指定返回的是不同记录行数。【例【例3-113-11】计算】计算XS_KCXS_KC表中不及格学生记录的总数。表中不及格学生记录的总数。 SELECT COUNT( SELECT COUNT(DISTINCTDISTINCT 学号学号) AS ) AS 不及格课程总数不及格课程总数 FROM XS_KC FROM XS_KC WHERE 成绩成绩60 MAX MAX函数:返回指定列的最大值。函数:返回指定列的最大值。【例【例3-123-12】计算】计算XS_KCXS_KC表中成绩列的最大值。表中成绩列的最大值。各崭驭掐晾湘堰穆闪
12、售猫沥衣督闹鞭钦铲备亲焉跪眩囊销当喀宅悯吭院抿数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图 SELECT MAX(成绩成绩) AS 最高分最高分 FROM XS_KC MIN函数:函数:返回指定列的最小值。返回指定列的最小值。【例【例3-133-13】计算】计算XS_KCXS_KC表中成绩列的最小值。表中成绩列的最小值。 SELECT MIX(成绩成绩) AS 最低分最低分 FROM XS_KC SUM SUM函数:返回指定列的总和。函数:返回指定列的总和。【例【例3-143-14】
13、用于计算】用于计算XS_KCXS_KC表中成绩列的总和值,并指定列名。表中成绩列的总和值,并指定列名。 SELECT SUM(成绩成绩) AS 总分总分 FROM XS_KC滑逗日寂桐惜颜佛眼恼硫灰腮炉姚手彰卿腋斩社良后圾逃碳网寥眼蔬疮拟数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图3.1.2 选择行选择行语法形式:语法形式: SELECT 列名列名1,n FROM 表名表名1,n WHERE 查询条件查询条件1.使用比较运算符使用比较运算符【例【例3-153-15】查询】查询XS_K
14、CXS_KC表成绩不及格的学生记录。表成绩不及格的学生记录。 SELECT SELECT 学号学号, ,课程号课程号, ,成绩成绩 FROM XS_KC FROM XS_KC WHERE WHERE 成绩成绩60大于大于=大于等于大于等于=小于等于小于等于,!=不等于不等于!不大于不大于!不小于不小于表表3.1 比较运算符比较运算符蓝赐滞重思葬笼烘室量九孝毡腋枪滴规鹰戊侄偏撬扮醉诀自坛剑廓澎卿浊数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-163-16】查询】查询XS_KC
15、XS_KC表中学号小于表中学号小于“020201”“020201”的学生记录。的学生记录。 SELECT SELECT 学号学号, ,课程号课程号, ,成绩成绩 FROM XS_KC FROM XS_KC WHERE WHERE 成绩成绩020201=80 AND 成绩成绩=60 【例【例3-25】查询】查询XS_KC表中不满足表中不满足“101”号课程的成绩介于号课程的成绩介于6070的记录。的记录。 SELECT 学号学号,课程号课程号,成绩成绩 FROM XS_KC WHERE 课程号课程号=101 AND NOT (成绩(成绩=60 AND 成绩成绩=70) 值华容权块骇瞒伍擅磷灵示早
16、癸帧唯讯厂泄难赚蔗琉途适白蝇牟泣否侩磁数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图4.使用查询范围使用查询范围除了比较运算符,还有另一种指定列值范围的方法。除了比较运算符,还有另一种指定列值范围的方法。语法格式为:语法格式为: SELECT 列名列名1 ,n FROM 表名表名1 ,n WHERE 列名列名 BETWEEN 取值范围下界取值范围下界 AND 取值取值范围上界范围上界 将【例将【例3-23】改成如下形式,查询结果不变。】改成如下形式,查询结果不变。 SELECT 学号学
17、号,课程号课程号,成绩成绩 FROM XS_KC WHERE 课程号课程号=101 AND 成绩成绩 BETWEEN 80 AND 89撞狗雁置吟蔷悬咬傍兑妆枫汪娘厕闯罢烁刃铭幂厅懦咀超烟茸宽耙您番怀数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图5.使用查询集合(关键字使用查询集合(关键字IN)语法格式:语法格式: SELECT 列名列名1,n FROM 表名表名1,n WHERE 列名列名 IN (列值(列值1,n)【例【例3-26】查询】查询XS_KC表中课程号表中课程号“101”
18、、“103”或或“107”的学生成绩记录。的学生成绩记录。 SELECT 学号学号,课程号课程号,成绩成绩 FROM XS_KC WHERE 课程号课程号 IN (101,103,107)衅还慧滦碌擦碌酚镍旺修巧扼龚仔温疽懂营煌世捌钮诫军篮坷慨序城磕镊数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-27】把【例】把【例3-26】改成用】改成用OR运算符连接形式,查询结果不变运算符连接形式,查询结果不变 。 SELECT 学号学号,课程号课程号,成绩成绩 FROM XS_KC
19、WHERE 课程号课程号=101 OR 课程号课程号=103 OR 课程课程号号=107关键字关键字IN常常使用于常常使用于SELCET语句的嵌套形式中。语句的嵌套形式中。【例【例3-28】使用】使用IN的嵌套查询实现至少有一门课程不及格的学生名单的嵌套查询实现至少有一门课程不及格的学生名单 。 SELECT 学号学号,姓名姓名,联系电话联系电话 FROM XSQK WHERE 学号学号 IN (SELECT DISTINCT 学号学号 FROM XS_KC WHERE 成绩成绩70 AND AVG(成绩成绩)80傅卞洲冷建眉叙咱易叠私卒鲁殿瑚晌辟鼎驴箔汇碱治荔粮奠挣迈腹荤淖氯数据库原理与应用
20、锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-34】统计】统计1班各课程不及格的人数。班各课程不及格的人数。 SELECT 班级班级,课程号课程号,COUNT(成绩成绩) AS 不及格人数不及格人数 FROM XS_KC WHERE 成绩成绩60 GROUP BY 班级班级,课程号课程号 HAVING 班级班级=13.使用使用WITH ROLLUP和和WITH CUBE选项选项使用使用WITH ROLLUP和和WITH CUBE选项可以对汇总结果再汇总,生成超级选项可以对汇总结果再汇总,生
21、成超级组。组。【例【例3-35】数据汇总时不使用】数据汇总时不使用WITH ROLLUP和和WITH CUBE选项。选项。 SELECT 班级班级,课程号课程号,COUNT(成绩成绩) AS 不及格人数不及格人数 FROM XS_KC WHERE 成绩成绩60 GROUP BY 班级班级,课程号课程号垄勾孙涤摹她装宵魏峻项漂倒汛簿射刽菌勾汾醋槛肺豫陆锥竿绍陋踩佐貌数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-36】对【例】对【例3-34】进行数据汇总时使用】进行数据汇总时使
22、用WITH ROLLUP选选项。项。 SELECT 班级班级,课程号课程号,COUNT(成绩成绩) AS 不及格人数不及格人数 FROM XS_KC WHERE 成绩成绩60 GROUP BY 班级班级,课程号课程号 WITH ROLLUP【例【例3-37】对【例】对【例3-34】进行数据汇总时使用】进行数据汇总时使用WITH CUBE选项。选项。 SELECT 班级班级,课程号课程号,COUNT(成绩成绩) AS 不及格人数不及格人数 FROM XS_KC WHERE 成绩成绩60 GROUP BY 班级班级,课程号课程号 WITH CUBE魁桐叙椭茶拥能洲届顽脚蔫烘铆店劝倡糯皖观迫妒乔达等
23、膊告瑶慢效沮粱数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图4.使用明细汇总子句使用明细汇总子句 语法格式:语法格式:SELECT 列名列名1,nFROM 表名表名1,nWHERE 逻辑表达式逻辑表达式GROUP BY 列名列名1,nORDER BY列名列名1|列号列号1ASC|DESC,nCOMPUTE聚合函数(列名聚合函数(列名1),nBY 列名列名1,n注意事项:注意事项: 如果使用如果使用GROUP BY子句,那么子句,那么SELECT子句中指定的列必子句中指定的列必须在须在G
24、ROUP BY子句中指定、或是和聚合函数一起使用子句中指定、或是和聚合函数一起使用。典辞虫匝偏拂抚恶绒奏躺至涸丸氨胡罪或汇颓脑瑟气纹宣菱摄其伍涤桩呐数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图 COMPUTE子句中的列必须出现在子句中的列必须出现在SELECT子句的列表中。子句的列表中。 使用使用COMPUT BY子句就不能同时使用子句就不能同时使用SELECT INTO子句子句 BY选项表示按指定的列进行明细汇总,使用选项表示按指定的列进行明细汇总,使用BY选项时必须同选项时必须同
25、时使用时使用ORDER BY 子句,且子句,且BY选项后的列必须具有和选项后的列必须具有和ORDER BY后的列相同的顺序,且不能跳过其中的列。后的列相同的顺序,且不能跳过其中的列。例如:如果例如:如果ORDER BY子句按照如下指定列。子句按照如下指定列。 ORDER BY 列列A,列,列B,列,列C 则则BY选项后的列表只能是下面任一中形式:选项后的列表只能是下面任一中形式: BY 列列A,列,列B,列,列C BY 列列A,列,列B BY 列列A 逊绽辖砌宰赴向侠狭栅妥蓟甲匆拼懒备嚎浊妊酪膝闷贼阻屋竿矢赞背筏姐数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校
26、计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-38】使用】使用COMPUTE子句对不及格的成绩记录进行明细汇子句对不及格的成绩记录进行明细汇总。总。 SELECT 学号学号,课程号课程号,成绩成绩 FROM XS_KC WHERE 成绩成绩60 COMPUTE COUNT(成绩)(成绩)【例【例3-39】使用】使用COMPUTE BY子句对不及格的成绩记录进行明细汇总。子句对不及格的成绩记录进行明细汇总。 SELECT 学号学号,课程号课程号,成绩成绩 FROM XS_KC WHERE 成绩成绩60 ORDER BY 2 COMPUTE COUNT(成
27、绩)(成绩) BY 课程号课程号厄嫡韧搅蜕沙泻霄识崎妈嫡恰懒廊矫阀盂郝恍缕躁阉螺椰披米呵妥重猖站数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图3.1.5 排序排序如果按一定顺序显示数据记录,有两种方法:如果按一定顺序显示数据记录,有两种方法: (为表中的列建(为表中的列建立簇索引或普通索引。)立簇索引或普通索引。) 当查询指定的是单个列,且该列有索引时,查询结果按照当查询指定的是单个列,且该列有索引时,查询结果按照该列的索引定义的顺序显示;该列的索引定义的顺序显示; 否则都按照表的簇索
28、引顺序显示。否则都按照表的簇索引顺序显示。【例【例3-40】查询学生表中的】查询学生表中的“姓名姓名”单个列。单个列。 SELECT 姓名姓名 FROM XSQK【例【例3-41】查询学生表中的】查询学生表中的“姓名姓名”、“联系电话联系电话”多个列。多个列。 SELECT 姓名,联系电话姓名,联系电话 FROM XSQK查询结果如下图:查询结果如下图:垂板堪山榨讥崖坍畦没幽淤型俞棱撂纶素龄恒玫笆撼颇翌苯倪厘厩憎胡苑数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图瑞欠爽田拈朽舅桔匝凶十针
29、氟福欣烈缄焉壤绥创湘溢亏臣扮悼翘屿卞脏氨数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图语法格式:语法格式:SELECT 列名列名1,nFROM 表名表名1,nORDER BY 列名列名1|列号列号1ASC|DESC,n其中:其中:ASC为默认值,表示按升序排序。为默认值,表示按升序排序。【例【例3-42】查询学生表中的】查询学生表中的“姓名姓名”,并按姓名列的降序排序。,并按姓名列的降序排序。 SELECT 姓名姓名 FROM XSQK ORDER BY 姓名姓名 DESC【例【例3-
30、43】按出生日期列的升序排列学生表。】按出生日期列的升序排列学生表。 SELECT 学号,姓名,出生日期学号,姓名,出生日期 FROM XSQK ORDER BY 3交局撒爸薛滤敬帐羌盅尖傀改澎畸咽焚雷快及皇冤椰瘁屹囤萄逸悦痉敬或数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图例例3-42例例3-43涪荤忻查祖跪霞川火蔗卸踢丸剩璃熄顶玉蚜酉拍声弧亿够忠嘿秉悔哎耍仅数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库
31、的查询和试图数据库的查询和试图【例【例3-44】按多个列对学生表排序。】按多个列对学生表排序。 SELECT 学号,课程号,成绩学号,课程号,成绩 FROM XS_KC ORDER BY 2,3 DESC桩体篮锅质瞪顷挎应席春姓磅品筋醒蹭汁画更菠彭鳞垦富弟拱秀疆绦听钱数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图3.1.6 SELECT语句的其他子句语句的其他子句1.将查询结果生成表将查询结果生成表 语法格式:语法格式:SELECT 列名列名1,nINTO 新表名新表名FROM 表名表
32、名1,nWHERE 逻辑表达式逻辑表达式【例【例3-45】将【例】将【例3-44】的查询结果保存到新表】的查询结果保存到新表temp_KC中。中。 SELECT 学号,课程号,成绩学号,课程号,成绩 INTO temp_KC FROM XS_KC ORDER BY 2,3 DESC绍矿懈凌秧揣汀磁膜唉税呼愿携楞骇疗俄剐厅雅鲜叉捉崩总钟峦鞠种良江数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图2.使用连接查询使用连接查询 所谓连接查询就是将多个表通过某个或某些列为条件进所谓连接查询就是将多
33、个表通过某个或某些列为条件进行连接,从中查询数据。行连接,从中查询数据。两种语法方式:两种语法方式:ANSI连接语法形式如下:连接语法形式如下: SELECT 表名表名.列名列名1,n FROM表名表名1连接类型连接类型 JOIN 表名表名2 ON 连接条件连接条件,n WHERE 查询条件查询条件SQL Server连接语法形式如下:连接语法形式如下: SELECT 表名表名.列名列名1,n FROM 表名表名1 ,n WHERE 查询条件查询条件 AND |OR 连接条件连接条件,n扭煽呀怠渐讣绢斜何川特初这羚骗挠鞭婴崔缅伏谨及吃岁畸饭历斟凯移麓数据库原理与应用锦州师范高等专科学校计算机系
34、数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图(1)内连接)内连接 INNER JOININNER JOIN 在内连接中,可以使用等号在内连接中,可以使用等号“=”“=”作为比较运算符,此时作为比较运算符,此时称作等值连接;也可以使用不等比较运算符,此时为不等值连称作等值连接;也可以使用不等比较运算符,此时为不等值连接。接。【例【例3-46】用】用ANSI语法表示的内连接查询成绩不及格的学生信语法表示的内连接查询成绩不及格的学生信息。息。 SELECT XSQK.学号,姓名,联系电话,课程号,成绩学号,姓名,联系电话,课程号,成
35、绩 FROM XSQK INNER JOIN XS_KC ON XSQK.学号学号= XS_KC.学号学号裴轰贞糙酌隅罕情若查言娟郭茨郝译默寇阅弱提蛛具绥第披结君纪摸蒜捷数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图(2)外连接)外连接 外外连连接接包包括括左左外外连连接接、右右外外连连接接和和全全外外连连接接。左左外外连连接接包包含含左左表表的的所所有有数数据据行行,右右外外连连接接包包含含右右表表的的所所有有数数据据行行,全全外外连接包含两个表的所有数据行。连接包含两个表的所有数据
36、行。 左连接:左连接:在连接两个表时,保留左表中的不匹配行。在连接两个表时,保留左表中的不匹配行。 LEFT OUTER JOIN LEFT OUTER JOIN 右连接:右连接:在连接两个表时,保留右表中的不匹配行。在连接两个表时,保留右表中的不匹配行。 RIGHT OUTER JOINRIGHT OUTER JOIN 全连接:全连接:在连接两个表时,保留两表中的不匹配行。在连接两个表时,保留两表中的不匹配行。 FULL OUTER JOINFULL OUTER JOIN 全全外外连连接接使使用用FULL FULL OUTER OUTER JOINJOIN操操作作符符,它它实实际际上上是是左
37、左外外连连接接与与右右外外连连接接的的结结合合,即即操操作作符符两两边边的的表表中中所所有有数数据据行行均均会会显显示示在在结结果果集集中中。不不论论哪哪一一个个表表中中没没有有对对应应的的数数据据行行,相相应应列列上都会返回空值。上都会返回空值。扣蛆乏冷肯斋沂易悄旁窥肛特姬蔼新淖弃就抗嫉聘脐茬渝泼锤际俐缸屠探数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-47】用】用ANSI语法表示的左连接查询。语法表示的左连接查询。 SELECT XSQK.学号,姓名,联系电话,课程号,
38、成绩学号,姓名,联系电话,课程号,成绩 FROM XSQK LEFT OUTER JOIN XS_KC ON XSQK.学学号号= XS_KC.学号学号【例【例3-48】用】用ANSI语法表示的右连接查询。语法表示的右连接查询。 SELECT XSQK.学号,姓名,联系电话,课程号,成绩学号,姓名,联系电话,课程号,成绩 FROM XSQK RIGHT OUTER JOIN XS_KC ON XSQK.学号学号= XS_KC.学号学号【例【例3-49】用】用ANSI语法表示的全连接查询。语法表示的全连接查询。 SELECT XSQK.学号,姓名,联系电话,课程号,成绩学号,姓名,联系电话,课程
39、号,成绩 FROM XSQK FULL OUTER JOIN XS_KC ON XSQK.学学号号= XS_KC.学号学号莫弓销叶槐伯亲乐沽罐仰嘛吻际咱浮嚼汗林殖谓睡榷跨蝉卫箩汹善颗扇嫁数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图(3)自连接)自连接 INNER JOININNER JOIN JOIN JOIN连接操作符还可以用于单个表,此时代表一个表与其连接操作符还可以用于单个表,此时代表一个表与其自身进行连接,表的这种连接操作称为自连接。为了区别列名,自身进行连接,表的这种连接操
40、作称为自连接。为了区别列名,必须在自连接中对表指定别名。必须在自连接中对表指定别名。【例【例3-50】用】用ANSI语法表示的自连接查询显示每个学生的两门语法表示的自连接查询显示每个学生的两门课程成绩。课程成绩。 SELECT a.学号,学号,a.课程号,课程号,a.成绩,成绩,b.课程号,课程号,b.成绩成绩 FROM XS_KC a INNER JOIN XS_KC ON a.学号学号= b.学学号号 WHERE a.课程号课程号b.课程号课程号枝细籍掂郡砸讣敢爸傀音胚倪龋纷评祝刚怜流唯丈匣柯否咖笨惜沫洼奴庙数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计
41、算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图(4)无限制连接)无限制连接 CROSS JOINCROSS JOIN 无无限限制制连连接接返返回回进进行行连连接接操操作作的的两两个个表表中中所所有有数数据据行行的的笛笛卡尔积,得到的结果集的行数是两个表的行数的乘积。卡尔积,得到的结果集的行数是两个表的行数的乘积。【例【例3-51】SELECT * FROM XSQK CROSS JOIN XS_KC 首呛遇公坠拱窥谤闹逗潘购滑怕红狞霉渠缝引乃筐碍蓖坠脖妒蔚骄族矿也数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/202
42、4第三章第三章 数据库的查询和试图数据库的查询和试图3.使用联合查询使用联合查询增加记录的行数增加记录的行数语法形式:语法形式:SELECT 语句语句1 UNION ALL SELECT 语句语句2【例【例3-52】SELECT 学号学号 FROM XSQK UNION ALL SELECT 成绩成绩 FROM XS_KC轮挪侈绸此龟斋佣汗牙废晦巩奔漓哭黔执痛阂窝肇尝雌瓜竞函赛呼怔褥量数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图4.使用嵌套查询(子查询)使用嵌套查询(子查询) 将将一
43、一个个SELECTSELECT语语句句嵌嵌套套在在另另一一个个SELECTSELECT语语句句的的WHEREWHERE子子句句中中的的查查询询形形式式,称称为为子子查查询询,子子查查询询中中嵌嵌套套在在WHEREWHERE子子句句里里的的SELECTSELECT语语句句称称为为内内部部查查询询,相相对对的的,另另一一个个包包含含内内部部查查询询的的SELECTSELECT语语句句被被称称为为外外部部查查询询。子子查查询询要要求求服服务务器器先先计计算算内内部部查查询询并并形形成成结结果果,然然后后外外部部查查询询根根据据内内部部查查询询的的结结果果,产产生生最最终终查询结果。查询结果。 子查询
44、可分为子查询可分为4 4种类型:种类型:NOTINNOTIN子查询子查询比较子查询比较子查询NOTEXISTSNOTEXISTS子查询子查询关联子查询关联子查询沧讽掂忙准青沏贫拜缠连可宁震壕扎驰判薪拐捉胡蛆乐间整托峪风集洼厢数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图(1)NOTINNOTIN子查询子查询 操操作作符符ININ用用于于WHEREWHERE子子句句中中时时,通通常常用用来来确确定定某某个个属属性性列列的的值值是是否否包包含含在在一一个个表表达达式式或或者者常常量量的的集
45、集合合中中。同同样样,操操作作符符ININ也也可可以以用用于于子子查查询询,用用来来确确定定某某个个列列值值是是否否在在内内部部查查询询的的结结果集中。果集中。【例【例3-53】查询无不及格学生的课程的授课教师。】查询无不及格学生的课程的授课教师。 SELECT DISTINCT 授课教师授课教师 FROM KC WHERE 课程号课程号 NOT IN (SELECT 课课程程号号 FROM XS_KC WHERE 成成绩绩60)飘麦谎睡秩缕禹筷糕腰阑靛袜火邯沁琉姥构视涤鲸昆泡格相冰讣版帝葛玉数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/20
46、24第三章第三章 数据库的查询和试图数据库的查询和试图(2)比较子查询 比比较较子子查查询询就就是是将将某某个个列列值值与与内内部部查查询询的的结结果果作作运运算算比比较较,如如果果比比较较结结果果为为真真则则返返回回该该行行,否否则则不不返返回回。比比较较子子查查询询通通常常要用到操作符要用到操作符ALLALL、ANYANY、SOMESOME。其通用格式为:。其通用格式为: ALL|ANY|SOME ALL|ANY|SOME ALLALL :列列值值必必须须和和内内部部查查询询结结果果集集的的每每一一个个值值进进行行比比较较,只只有每一次的比较结果都为真时,比较结果才为真。有每一次的比较结果
47、都为真时,比较结果才为真。 ANYANY、SOMESOME :列列值值和和内内部部查查询询结结果果集集的的值值进进行行比比较较,只只要要有有一次为真,比较结果就为真。一次为真,比较结果就为真。殃证荔汽苯畜预尖缔热减晌涩孟担冀裳管诚沽碱慑蠢君朗弥柑霹低炕喀癣数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-54】查询平均分低于】查询平均分低于60的学生学号。的学生学号。 SELECT DISTINCT 学号学号 FROM XS_KC a WHERE 60 (SELECT AVG(
48、成成绩绩) FROM XS_KC b WHERE b.学号学号=a.学号)学号)【例【例3-54】(方法二)查询平均分低于】(方法二)查询平均分低于60的学生学号。的学生学号。 SELECT DISTINCT 学号,学号,AVG(成绩)(成绩) FROM XS_KC GROUP BY 学号学号 HAVING AVG(成绩)(成绩)60紫钙厢容阑聪瑚揪脱赤奇巢志泌代址鬃唾袋峰扬爹渐识川朋桩赂沥廖羹磐数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-55】查询有不及格学生的课程号的
49、授课教师。】查询有不及格学生的课程号的授课教师。 SELECT DISTINCT 授课教师授课教师 FROM KC WHERE 课程号课程号=ANY (SELECT 课课程程号号 FROM XS_KC WHERE 成成绩绩60)【例【例3-55】(方法二方法二)查询有不及格学生的课程号的授课教师。查询有不及格学生的课程号的授课教师。 SELECT DISTINCT 授课教师授课教师 FROM KC INNER JOIN XS_KC ON XS_KC.课程课程号号=KC.课程号课程号 WHERE 成绩成绩60 俭霓烽搁剂唁黔养筛膜扩猴锻锭陪酿秽赏泞崩诣跑兼示感漾眯捕冗你犬观数据库原理与应用锦州师
50、范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图(3)NOTEXISTS NOTEXISTS 子查询子查询 EXISTSEXISTS是是测测试试子子查查询询是是否否有有数数据据行行返返回回,如如果果有有则则返返回回TRUETRUE,否否则则返返回回FALSEFALSE。NOT NOT EXISTS EXISTS 则则相相反反,当当结结果果表表为为空空时时,才返回才返回TRUETRUE。【例【例3-56】查询是否有至少一门课程不及格的学生。】查询是否有至少一门课程不及格的学生。 SELECT DISTINCT
51、学号,姓名学号,姓名 FROM XSQK a WHERE EXISTS (SELECT * FROM XS_KC b WHERE b.成成绩绩60 AND b.学号学号=a.学号)学号)妖流拿寇副遁袍那酗谣艺倦绕洋睦体砒峡兼酗创途饺塔旦雨翰魏奢吉男刁数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图(4)简单查询简单查询 Transact-SQLTransact-SQL的的SELECTSELECT语语句句从从一一个个或或者者多多个个表表或或视视图图中中检检索索记记录录,使使用用查查询询分分
52、析析器器输输入入一一条条SELECTSELECT语语句句,查查询询情情况况将将在在结结果果窗窗口口中中显显示示。可可以以编辑或打印这些结果,并且把它们保存在非数据库文件中。编辑或打印这些结果,并且把它们保存在非数据库文件中。 指定指定TOPTOP关键字关键字 SQL SQL Server Server 2000 2000 使使用用了了TOP TOP 关关键键字字,用用于于查查询询时时只只显显示示前前面面几几行行数数据据。当当SELECTSELECT语语句句检检索索出出来来的的记记录录非非常常多多,且且又又无无须须显显示示全全部部记记录录时时,可可使使用用TOPTOP关关键键字字来来减减少少查查
53、询询时时间间,提提高高查询效率。查询效率。 使用使用TOPTOP关键字的语法如下:关键字的语法如下: SELECT SELECT TOP TOP integer integer | | TOP TOP integer integer PERCENTWITH PERCENTWITH TIESTIES , 11nn FROM FROM ; ;律蹿谐敞保蛰啸敛甜颓柳铝兑肃楞稼绸吟绩儿阻胃韩伦翻窟箱劣珠两蒙士数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-57】查询前】查询前5行记录
54、。行记录。 SELECT TOP 5 姓名姓名 FROM XSQK【例【例3-58】查询前】查询前20%记录。记录。 SELECT TOP 20 PERCENT 姓名姓名 FROM XSQK炭弃芬榆岁儡反肠铂录嫁衙谰找审林瞪霹畔苦硅座检捐伺鼓帜唉贸朋敲阻数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图3.2 视图视图 视图的概念视图的概念 视视图图不不包包含含任任何何数数据据,只只是是定定义义在在一一个个或或多多个个基基表表上上或或其其他他视视图图上上,并并且且提提供供一一种种访访问问基
55、基表表数数据据的的方方法法。在在物物理理磁磁盘盘上上存存储储的的有有关关视视图图的的信信息息是是:视视图图的的名名称称和和视视图图的的定定义义。视视图图的的所所有有数数据据来来自自基基本本表表。因因此此,当当基基本本表表的的数数据据发发生生变变化化时时,对对应视图中的查询出的数据也会随之变化。应视图中的查询出的数据也会随之变化。 视视图图一一经经定定义义,就就可可以以象象基基本本表表一一样样执执行行查查询询、删删除除等等操操作作,也也可可以以在在视视图图上上定定义义新新的的视视图图,但但对对视视图图的的更更新新操操作作则则有有一定限制。一定限制。 视图的作用视图的作用可以满足不同用户的需求可以
56、满足不同用户的需求 不不同同的的用用户户对对数数据据库库操操作作有有不不同同的的需需求求,即即使使相相同同的的数数据据也也可可能能有有不不同同的的操操作作要要求求。一一张张基基本本表表可可能能有有很很多多属属性性列列,利利用用视视图图,用用户户可可以以把把自自己己感感兴兴趣趣的的属属性性列列集集中中起起来来,放放在在一一个个视图中,此后用户可以将视图作为一张表来对待。视图中,此后用户可以将视图作为一张表来对待。斤苗虱闹挽苍曙槽植迅骚辱牢侣窒丑尾侍假痴肄莎继哭钓耘沛豆告讲睡雀数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数
57、据库的查询和试图数据库的查询和试图可以简化数据读取可以简化数据读取 查查询询数数据据时时,通通常常要要用用SELECTSELECT语语句句编编写写复复杂杂的的连连接接、统统计计、函函数数等等,以以产产生生所所需需要要的的结结果果。使使用用视视图图,可可以以隐隐蔽蔽这这种种复复杂杂性性。可可以以将将经经常常用用到到的的复复杂杂查查询询的的语语句句定定义义为为视视图图,不不必必每每次次查询都写上复杂查询条件,这样就简化了用户的查询操作。查询都写上复杂查询条件,这样就简化了用户的查询操作。保证了基本表数据和应用程序的逻辑独立性保证了基本表数据和应用程序的逻辑独立性 当当应应用用程程序序通通过过视视图
58、图来来访访问问数数据据时时,视视图图实实际际上上成成为为应应用用程程序序和和基基本本表表数数据据之之间间的的桥桥梁梁。如如果果应应用用程程序序直直接接调调用用基基本本表表,则则一一旦旦基基本本表表的的数数据据发发生生变变化化时时,应应用用程程序序必必须须随随之之改改动动。而而通通过过视视图图访访问问数数据据,则则可可以以通通过过改改变变视视图图来来适适应应基基本本表表的的变变化化,使使应应用用程程序序不不必必作作改改变变,保保证证了了基基本本表表数数据据和和应应用用程程序序的的逻逻辑辑独立性。独立性。可以提供安全机制可以提供安全机制 利用视图可以限制数据访问。如果某个用户需要访问表中利用视图可
59、以限制数据访问。如果某个用户需要访问表中的某些列,但另一些属性列必须对该用户保密,则可以利用视的某些列,但另一些属性列必须对该用户保密,则可以利用视图达到此目的,将视图建立在该用户需要访问的那些列上。图达到此目的,将视图建立在该用户需要访问的那些列上。瘫咸焚悸春魁撂龙踌弗倾舰迸怪乎忆材炉束乱钦缓景需荒大照数验领捐吵数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图在代码方式下对视图的操作:在代码方式下对视图的操作:3.2.1 3.2.1 视图的建立视图的建立3.2.2 3.2.2 视图的修
60、改视图的修改3.2.3 3.2.3 视图的删除视图的删除窟乍凹化解拢困黍葡呼晓舷颂减倪凤漏意规廷代欧侈畦凑柜么榔邮居茁舌数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图3.2.1 3.2.1 视图的建立视图的建立 SQLSQL语言用语言用CREATE VIEWCREATE VIEW语句来建立视图,其一般格式为:语句来建立视图,其一般格式为: CREATE VIEW CREATE VIEW ( (, ) AS AS WITH CHECK OPTION WITH CHECK OPTION;
61、说明:说明: (1)(1)选选项项WITH WITH CHECK CHECK OPTIONOPTION确确保保用用户户只只能能查查询询和和修修改改他他们们所所看看到到的的数数据据,强强制制所所有有在在视视图图上上使使用用的的数数据据修修改改语语句句满满足足定定义义视视图时的条件。图时的条件。 (2)(2)组组成成视视图图的的各各属属性性列列可可以以显显式式指指定定,也也可可以以省省略略。如如果果省省略略不不写写,则则组组成成视视图图的的各各属属性性列列由由子子查查询询中中SELECTSELECT子子句句的的各各目目标列组成。标列组成。 嫩评氟深透橡略昆栽嚣量焦送须敬变简屯扯瓢掌捶勒绽笨缮倾共患
62、输碉掠数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图 下列情形建立视图时必须显式指定属性列:下列情形建立视图时必须显式指定属性列: 1) 1)视图的某列不是原属性列,而是统计函数或者表达式。视图的某列不是原属性列,而是统计函数或者表达式。 2) 2)多表连接时选出了两个或者多个同名列作为视图的属性列。多表连接时选出了两个或者多个同名列作为视图的属性列。 3) 3)需要对视图中的某些列重新命名。需要对视图中的某些列重新命名。 【例【例3-593-59】创建包含班委成员基本信息的视图。】创
63、建包含班委成员基本信息的视图。 CREATE VIEW v_ CREATE VIEW v_班委成员班委成员 AS SELECT AS SELECT 学号学号, ,姓名姓名, ,联系电话联系电话, ,职务职务= =备注备注 FROM xsqk FROM xsqk WHERE WHERE 备注备注 LIKE % LIKE % 其中可用:其中可用: CREATE VIEW v_ CREATE VIEW v_班委成员班委成员 (a,b,c,d) (a,b,c,d);或;或 = = ; 或或 AS AS 更改列名(即别名)更改列名(即别名) 注意:先显示视图名后的别名。注意:先显示视图名后的别名。抚咆续
64、锗棕挨斧熏畔违瀑蒂扔讽丘暴兆奥奥莫葵曼坛庄烈奋城众争只彤抄数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例【例3-603-60】创建按课程分组汇总的视图】创建按课程分组汇总的视图 CREATE VIEW v_ CREATE VIEW v_课程分组汇总课程分组汇总 AS SELECT AS SELECT 课程号课程号,AVG(,AVG(成绩成绩) AS ) AS 平均分平均分 FROM xs_kc FROM xs_kc GROUP BY GROUP BY 课程号课程号; ; 注意:注意
65、: GROUP BY GROUP BY 的使用方法。的使用方法。(selectselect与与group by group by 中的列名应一致,或使用聚合函数)中的列名应一致,或使用聚合函数) 【例例3-613-61】使使用用ANSIANSI语语法法形形式式创创建建所所有有不不及及格格课课程程的的学学生生信信息记录息记录泅耻诚窗洲寿动尤疲茎势耙绕括糠痉铱侩绰产溃嗜兔玛庇外违贸又搬尝湘数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图3.2.2 3.2.2 视图的修改视图的修改SQLSQL
66、语言用语言用ALTER VIEWALTER VIEW语句来修改视图,其一般格式为:语句来修改视图,其一般格式为: ALTER VIEW ALTER VIEW WITH WITH ENCRYPTION ENCRYPTION | | SCHEMABINDING SCHEMABINDING | | VIEW_METADATA VIEW_METADATA AS AS WITH CHECK OPTION WITH CHECK OPTION; 说明:说明: (1) (1)修改视图不会改变其原有的权限。修改视图不会改变其原有的权限。 (2)(2)如如果果创创建建视视图图时时使使用用了了WITH WITH E
67、NCRYPTIONENCRYPTION 或或 WITH WITH CHECK CHECK OPTIONOPTION选选项项,那那么么在在ALTER ALTER VIEWVIEW 命命令令中中也也使使用用它它们们,否否则则它它们不起作用。们不起作用。簧惋汐汲秩绍唾戏蛰别泥马驯右脚仪锅悼绍佐敢土鲤录想褪左岗主字鸽抑数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图【例例3-623-62】修修改改【例例3-593-59】中中班班委委成成员员基基本本信信息息的的视视图图。 (新新增专业名列)增专业
68、名列) ALTER VIEW v_ ALTER VIEW v_班委成员班委成员 AS SELECT AS SELECT 学号学号, ,姓名姓名, ,专业名,联系电话专业名,联系电话, ,职务职务= =备注备注 FROM xsqk FROM xsqk WHERE WHERE 备注备注 LIKE % LIKE % 注意:注意: ALTER ALTER 与与 CREATE CREATE 的区别。的区别。贫快滤染瑟升宅傀特陀缮辆桃俱膳倘时铣逻牙飞象环孙琵盂部宅惜躇臭使数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试
69、图数据库的查询和试图 当当创创建建视视图图时时使使用用了了“ “ SELECT SELECT * * ” ” 子子句句,那那么么当当基基表表变变化化时时,视视图图不不变变。 【例【例3-633-63】步骤一:使用】步骤一:使用“ SELECT * ” “ SELECT * ” 子句创建基本信息视图。子句创建基本信息视图。 CREATE VIEW v_xsqk CREATE VIEW v_xsqk AS AS SELECT * SELECT * FROM xsqk FROM xsqk 步骤二:使用步骤二:使用“ALTER TABLE”“ALTER TABLE”修改表信息修改表信息( (增加列增加
70、列) )。 ALTER TABLE xsqk ALTER TABLE xsqk ADD ADD 籍贯籍贯 char(40) char(40) 步骤三:比较基表步骤三:比较基表“xsqk”“xsqk”和视图和视图“v_xsqk”“v_xsqk”的变化。的变化。 方法:方法:窗口界面下:窗口界面下: 代码方式下:代码方式下: SELECT * SELECT * SELECT * SELECT * FROM sxqk FROM v_xsqk FROM sxqk FROM v_xsqk看艰汲钮纹敬烧疤岩忿锚纠灌科启辜斡茅曾目吗疫皱梅避粗獭位妖霓犀抿数据库原理与应用锦州师范高等专科学校计算机系数据库原理
71、与应用锦州师范高等专科学校计算机系7/25/2024第三章第三章 数据库的查询和试图数据库的查询和试图3.2.3 3.2.3 视图的删除视图的删除SQLSQL语言用语言用DROP VIEWDROP VIEW语句来删除视图,其一般格式为:语句来删除视图,其一般格式为: DROP VIEW DROP VIEW 视图名视图名1 ,n1 ,n 【例【例3-643-64】一次删除两个视图】一次删除两个视图 DROP VIEW v_a,v_b DROP VIEW v_a,v_b 【例【例3-653-65】视图绑定到架构的应用】视图绑定到架构的应用 方法:方法:界面方式绑定到架构:视图界面方式绑定到架构:视
72、图aaaaaa,视图,视图bbb(bbb(基于视图基于视图aaa)aaa) 代码方式绑定到架构:代码方式绑定到架构:create view aaa create view bbb create view aaa create view bbb with schemabinding with schemabindingwith schemabinding with schemabindingAs asAs asselect select 学号学号, ,姓名姓名, ,总学分总学分 select select 学号学号, ,姓名姓名, ,总学分总学分from dbo.xsqk from dbo.aaafrom dbo.xsqk from dbo.aaa删除视图删除视图aaaaaa看效果看效果鼎联缠砌榜皋光拘矾绝相氰未锅莉爬君啮慌番巢岂蝎悲娶螺握澄绵津僳漠数据库原理与应用锦州师范高等专科学校计算机系数据库原理与应用锦州师范高等专科学校计算机系7/25/2024