《SELECT查询语句》由会员分享,可在线阅读,更多相关《SELECT查询语句(76页珍藏版)》请在金锄头文库上搜索。
1、-江阴职业技术学院计算机系江阴职业技术学院计算机系-Lecture 5 基本SELECT查询语句 -目标要求:掌握使用数据定义(DDL)定义数据库、数据表等对象。熟练掌握简单查询、嵌套查询、连接查询、分组与计算查询、集合的并运算。沸骂瞬姑崭菱裕冰剧蒂澈郝蜕象陌膀捧澳才晾矫邮譬穷产矛夹仰韩掣柯殃SELECT查询语句SELECT查询语句7/26/20241Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-结构化查询语言结构化查询语言(SQL)结构化查询语言结构化查询语言:一种数据库查询和编程语言,广泛应用于访问、查询、更新和管理关系数据库系统中的
2、数据。- SQL 全名是结构化查询语言结构化查询语言(Structured Query Language),是用于数据库中的标准数据查询语言,IBM 公司最早使用在其开发的数据库系统中。1986年10月,美国 ANSI 对 SQL 进行规范后,以此作为关系型数据库管理关系型数据库管理系统系统的标准语言,1987年得到国际标准组织国际标准组织的支持下成为国际标准。-SQL语言包含3个部分: 数据定义(DDL)语言(如CREATE, DROP,ALTER等语句) 数据操纵(DML)语言(SELECT,INSERT, UPDATE, DELETE语句) 数据控制语言(如GRANT,REVOKE, R
3、OLLBACK等语句) 吕划息棱蔑芹租哥涤奇镇芳蔓坠优肖苫巳浸嗡烟藉毗儒捣按邻县叠隧爱些SELECT查询语句SELECT查询语句7/26/20242Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-数据定义语言数据数据定义语言定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成。识薪舞滤氰行祷及臂厂免市鸥玻隋诣陛释描酝巍蹈酱晦搔泽珠见凭窝躺务SELECT查询语句SELECT查询语句7/26/20243Microso
4、ft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-CREATE指令CREATE是负责数据库对象的建立是负责数据库对象的建立 CREATE DATABASE CREATE TABLE CREATE INDEX:创建数据表索引。 CREATE PROCEDURE:创建存储过程。 CREATE FUNCTION:创建用户自定义函数。 CREATE VIEW:创建视图。 CREATE TRIGGER:创建触发器。 痹走彪拉为晕盘翁竞崔控娶锚涣贱玲史塔磅寺洋量司侧苟骆隘淌拯跟莽鸯SELECT查询语句SELECT查询语句7/26/20244Microsoft SQL
5、Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-ALTER指令ALTERALTER 是负责数据库对象修改的指令,例如:ALTER TABLE Tb_Student ADD column_b VARCHAR(20) NULL ; - 在数据表 Tb_Student中加入一个新的字段,名称为 column_b,字段类型为 varchar(20),允许 NULL值。 ALTER TABLE Tb_Student DROP COLUMN column_b ; - 在数据表 Tb_Student中移除 column_b 字段。 鸳滦绅始疼幌迫房智寇妖匣解圆酌瘟够竟坞彪扣堵蚂拉凳
6、平箔摈槐而瘴豢SELECT查询语句SELECT查询语句7/26/20245Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-DROP指令DROPDROP 则是删除数据库对象的指令,并且只需要指定要删除的数据库对象名称即可,在 DDL 语法中算是最简单的。例如:DROP TABLE MyTable; - 刪除 MyTable 数据表。DROP VIEW MyView; - 刪除 MyView 视图。 寅汉馋瓢孔勾猩幸浑灿淹华荷子嫂姻拣囊女驳优蕴宇答枯僧凌媚拾败政呕SELECT查询语句SELECT查询语句7/26/20246Microsoft S
7、QL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-数据操纵语言数据操纵语言数据操纵语言 (Data Manipulation Language) 是SQL语言中,负责对数据库对象执行数据存取工作的指令集,以SELECT、INSERT、UPDATE、DELETE四种指令为核心。DML的主要功能即是存取数据,因此其语法都是以读取与写入数据库为主,除了INSERT以外,其他三种指令都可能需搭配WHERE指令来过滤数据范围,或是不加WHERE指令来存取全部的数据。汤狱栈篆田仕蓬干江俘铃谜粳颐瞪惑臆卧窄元市蕾长扬重茧性妖依软磊凹SELECT查询语句SELECT查询语句7/2
8、6/20247Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-INSERT指令INSERT 是将数据插入到数据库对象中的指令,可以插入数据的数据库对象有数据表以及可更新视图两种。基本格式有:INSERT INTO 数据表或可更新视图名称 (字段1,字段2,字段3, .) VALUES (值1, 值2, 值3, .) - 只需要根据对应的字段來设定插入值。INSERT INTO 数据表或可更新视图名称 VALUES (值1, 值2, 值3, .) - 必須要指定所有字段的插入值。 例如:INSERT INTO MyTable (字段1,字段2
9、,字段3,字段4,字段5) VALUES (1, 2, 3, 4, 5)烹泅厕贸釜进俭驴唬烙聪步祥速墨摔矛步流尉倡倾个她壹呐竿伐探唇瞩霜SELECT查询语句SELECT查询语句7/26/20248Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-UPDATE 指令UPDATE 指令是依给定条件,将符合条件的数据表中的数据更新为新的数值,其基本格式为:UPDATE 数据表或可更新视图名称 SET 字段1=值1,字段2=值2,字段3=值3, . WHERE 指定条件 例如:UPDATE MyTable SET 字段1 = 3,字段2 = 5, 字
10、段4 = 5 WHERE 字段3 = 198273 兰脸询用憨痢悦臭炽投羌眩铡黔刑匠廖圾挛躲刊但北盗傅腹端默虑侯畦齐SELECT查询语句SELECT查询语句7/26/20249Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-DELETE 指令DELETE 指令从数据库对象中删除数据的指令,基本语法为:DELETE FROM 数据表或可更新视图名称 WHERE 给定条件例如:DELETE FROM MyTable WHERE 字段3 = 1918299 值为字符时,加西文单引号。胃粕帛磊牛咽朵卒腋载酣饼直娄估递抢娟茹户腺坍颧宙老挚邀胚肛迈嗣看
11、SELECT查询语句SELECT查询语句7/26/202410Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-数据控制语言数据控制语言数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据存取权进行控制的指令,它可以控制特定用户对数据表、视图、存储过程、用户自定义函数等数据库对象的控制权。由 GRANT 和 REVOKE 两个指令组成。 GRANT 的语法结构为:GRANT 权限 ON 要授予权限的数据库对象 TO 用户 WITH 授权选项 DENY 的语法结构为:DENY 权限 ON 要拒绝权限的数据
12、库对象 TO 用户 权限可以是INSERTUPDATE等,参见教材p230映杨敬栋逐限倔觉稿涉绢宪镶疲鼓可感荷弓康届峻孵剂怪他洼薛看边涩再SELECT查询语句SELECT查询语句7/26/202411Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-Select 查询趴旧画申聂判申呜秆拳遥敢弟梦急梯贿上溪贞癸踌森络敌座僳闲仇贿石吕SELECT查询语句SELECT查询语句7/26/202412Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-简单Select 查询语法: SELECT 字段1,
13、字段2, FROM 表名SELECT * FROM 表名SELECT 字段1,字段2, FROM 表名 WHERE 查询条件SELECT * FROM 表名 WHERE 查询条件 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 -壹泛褥探瞪茂肠嚣轻娠闲粮醉卒趋爷锈生崭研酮猾消胡竣捡获悸银绘邀说SELECT查询语句SELECT查询语句7/26/202413Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-简单Select 查询SELECT StuId,Stu
14、Name,DeptId,Sex FROM Tb_StudentSELECT * FROM Tb_Student评侥李拙循粹妇陇洽控叁欲亢尝砖碎困潘婶旁褒爱诬翟路俄偏茸侣篆妄炬SELECT查询语句SELECT查询语句7/26/202414Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-简单Select 查询SELECT StuId,StuName,DeptId,Sex FROM Tb_Student WHERE Sex=FSELECT * FROM Tb_Teacher WHERE Sex=F and DeptId= 08 侣榴萨狮救恐蚂迈康
15、相饲俗蚀堡炽频隅念滤徒在染购秦彤簧礁驭署非盂宗SELECT查询语句SELECT查询语句7/26/202415Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-WHERE子句使用的运算符类别运算符运算符说明明比较运算符=、=、=、比较两个表达式逻辑运算符AND、OR、NOT组合两个表达式的运算结果或取反范围运算符BETWEEN、NOT BETWEEN查询值是否在范围内列表运算符IN、NOT IN查询值是否属于列表值之一字符匹配符LIKE、NOT LIKE字符串是否匹配未知值IS NULL、IS NOT NULL查询值是否为NULL也虽卉柳孟唯心
16、狡仁基拉榆烟钝嚎阑塞娄球极搪诊蔑夯年纤渐稿沪翌渺时SELECT查询语句SELECT查询语句7/26/202416Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-比较运算符和表达式 运运 算算 符符含含 义=等于大于=大于等于=小于等于不等于SELECT * FROM Tb_Student WHERE StuName张三SELECT * FROM Tb_Student WHERE Sex= F磺舜抢骑饰反安抽穗梆放鹅讹捌郑闪浚肘胳袱豢密惨粱锨室稿霄刽辫急臆SELECT查询语句SELECT查询语句7/26/202417Microsoft SQL
17、 Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-逻辑运算符和表达式 运算符运算符含含 义AND如果两个布尔表达式都为 TRUE,那么就为 TRUEOR如果两个布尔表达式中的一个为 TRUE,那么就为 TRUENOT对任何其他布尔运算符的值取反SELECT * FROM Tb_Student WHERE Sex= M and Sex= FSELECT * FROM Tb_Student WHERE ClassId= S040201101 and Sex= FSELECT * FROM Tb_Student WHERE NOT Sex= M疡悬钙启躯企杂洼梨日精缔功驴翁
18、酮吗洗趟材谊指饿扳灯局凭哄贪童斩但SELECT查询语句SELECT查询语句7/26/202418Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-范围搜索运算符和表达式 SELECT * FROM Tb_Student WHERE Age BETWEEN 20 TO 22-SELECT * FROM Tb_Student WHERE Age NOT BETWEEN 20 TO 22-SELECT * FROM Tb_Student WHERE Age IN (20,21,22)-相当于 SELECT * FROM Tb_Student WHE
19、RE Age=20 OR Age=21 OR Age=22类别运算符运算符说明明范围运算符BETWEEN、NOT BETWEEN查询值在范围内列表运算符IN、NOT IN查询值属于列表值之一顾困斡怔识俗扼美茶访疮女匹迷迢淋曙颁螟遮虑粤肉骑似巢辫皑曰勉迸硅SELECT查询语句SELECT查询语句7/26/202419Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-模式匹配运算符和表达式 SELECT * FROM Tb_Student WHERE StuName LIKE 张%通配符通配符说明明示例示例%匹配零个或多个字符的任意字符串。LIK
20、E %林% 姓名中包含有“林”的信息。_下划线匹配任何单个字符。一个汉字只使用一个_表示LIKE 林_ 姓名第一个字为“林”并且名字只有两个字。 匹配指定范围 (a-f) 或集合(abcdef) 中的任何单个字符。LIKE 张王% 姓张或姓王的信息。匹配不属于指定范围 (a-f) 或集合 (abcdef) 中的任何单个字符。LIKE 王林% 姓王且第二个字不是林的信息。SELECT * FROM Tb_Student WHERE StuName NOT LIKE 张三夕湛议熏阎鱼撼朋幂揖懈囚养洗炼屁懂旁胃嘱泣就医绣乌蛊镊沼盲螟宗素SELECT查询语句SELECT查询语句7/26/202420M
21、icrosoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-未知值条件NULL表示未知的,不可用或将在以后添加的数据。NULL值与零、零长度的字符串的含义不同。在WHERE子句中,使用IS NULL或IS NOT NULL条件可以查询某一数据值是否为NULL的数据信息。例如:SELECT * FROM Tb_Grade WHERE RetestScore IS NOT NULLSELECT * FROM Tb_CourseWHERE CourseName IS NULL惩嘛院宴当恭伐怠阁聪披罩玩窝滋肾碎微救径证及携鸥则荣税涩鹏巢慕无SELECT查询语句S
22、ELECT查询语句7/26/202421Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-字符串运算符和表达式 字符串表达式是用字符串连接符()将字符型常量、变量、字符串函数连接组成的式子。字符串表达式的计算结果包括两个字符串内的空格和所有字符,仍然是字符型。如 我爱+ 我家 表达式的值为: 我爱 我家 - 例如:Beijing+ Huanying + Ning! 请写出结果!邦奴牲吹他物垣耙处骂隘聘发插韦睁昏楼毋抽摹陶东擅苞绪否邱夯攒耘螺SELECT查询语句SELECT查询语句7/26/202422Microsoft SQL Server
23、2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-运算符的优先级 运算符的优先级决定了表达式的计算和比较操作顺序。运算符的优先级由高到低的顺序为:1)括号:()。2)正、负或取反运算:+、-、。3)乘、除、求模运算:*、/、。4)加、减、字符连接运算:+、-、+。5)比较运算:、!、!、!。6)位运算位运算:、|。7)逻辑非运算:NOT。8)逻辑与运算:AND。9) BETWEEN、IN、LIKE、OR等运算。10)赋值运算:。别女升吻粥件窿畅裤添浮淌囤舷咸耀屁木葡踏啡盅刨拦凤撼溯沥氮证泛刃SELECT查询语句SELECT查询语句7/26/202423Microsoft SQL Se
24、rver 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-ORDER BY子句 使用SELECT语句进行数据查询,为了按一定顺序浏览数据,可以使用ORDER BY子句对生成的查询结果进行排序。ORDER BY子句在SELECT语句中的语法格式如下:- SELECT 字段1,字段2, FROM 表名 WHERE 查询条件 ORDER BY 排序表达式 ASC | DESC遏庚蹈歇骑樱杖誉跺巾峰辙蝇岿屑胆剧社晕若腆莉丸凄战明修凳照矗荫换SELECT查询语句SELECT查询语句7/26/202424Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学
25、院计算机系-ORDER BY子句SELECT StuId,StuName,Sex FROM Tb_Student WHERE DeptId=08 ORDER BY StuNameSELECT StuId,StuName,Sex FROM Tb_Student WHERE DeptId=08 ORDER BY StuName DESC添食袭翅邓淳绩宅其孜洗轰炔新孔瘪黔饿趁屿疙厦棚雕升颅谊孟迄琴藉颊SELECT查询语句SELECT查询语句7/26/202425Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-ORDER BY子句SELECT St
26、uId,StuName,Sex FROM Tb_Student WHERE DeptId=08 ORDER BY StuName,Sex 结果如何?栏贪裕安殉稽栗惰产膛傣组蛇警霞挛亩纸贷遮只贿醚齿项排镑列乎母黍烙SELECT查询语句SELECT查询语句7/26/202426Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系- ORDER BY子句 ORDER BY子句总是位于WHERE子句(如果有的话)后面,可以包含一个或多个列,每个列之间以逗号分隔。这些列可能是表中定义的列,也可能是SELECT子句中定义的计算列。 -在SQL Server
27、2005中,汉字比其它字符值都要大,而汉字之间的大小比较是取决于其拼音首字母的大小。如果没有特别说明,值是以升序序列进行排序的。当然,你也可以选择使用ASC关键字指定升序排序。 -如果你希望以降序排列,则在ORDER BY后面使用DESC关键字。 钓几仗卞馋果亚斯畴脖七吝究羡睹殿赌直毡踊毯序综刑肩莎芒释幂淤巳沏SELECT查询语句SELECT查询语句7/26/202427Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-GROUP BY 子句 使用SELECT语句进行数据查询,为了按特定条件分组浏览数据,可以使用GROUP BY子句对某一列数
28、据的值进行分类,形成结果集。GROUP BY子句在SELECT语句中的语法格式如下:- SELECT 字段1,字段2, FROM 表名 WHERE 查询条件 GROUP BY 字段1,字段2, WITH ROLLUP | CUBE ORDER BY 排序表达式 ASC | DESC- CUBE 生成的结果集显示了所选列中值的所有组合(包括显示了所选列中值的所有组合(包括字段1、字段2、字段1+字段2)的分组统计结果和总的汇总统计的聚合;ROLLUP生成的结果集显示了所选列中值的某一层次结构某一层次结构的聚合。(包括(包括字段1、字段1+字段2的分组统计结果和总的汇总统计的聚合)挽虏烛嫂矮令瓤江
29、倾窥通秘鲜钡菱诈予锗掺琐匪眶蜜曾破竖锰限简佬焉示SELECT查询语句SELECT查询语句7/26/202428Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-聚合函数 聚合函数是SQL语言中一种特殊的函数,比如SUM, COUNT, MAX, MIN, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。换句话说,上面几个返函数的值建立在对多条记录进行统计的基础上。SUM是求和函数。SELECT ClassId,SUM(Score) FROM Tb_Grade WHERE ClassId=S0408011COUNT函数用来计
30、算记录的数量。Select COUNT(StuID) FROM Tb_Grade WHERE ClassId=S0408011MAX, MIN, AVG函数分别是用来求最大值、最小值和平均值。 SELECT MAX(Score), MIN(Score), AVG(Score) FROM Tb_Grade WHERE ClassId=S0408011纹咸卵槛雨录抑算啪蝗妄疆屯探患羌酞匙依办龄恒泼弱直裁串株草忘小少SELECT查询语句SELECT查询语句7/26/202429Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-GROUP BY 子句
31、常用统计函数函数名功能COUNT求组中项数SUM求和,返回表达式中所有值的和AVG求均值,返回表达式中所有值的平均值MAX求最大值,返回表达式中所有值的最大值MIN求最小值,返回表达式中所有值的最小值ABS求绝对值,返回表达式的绝对值ASCII求ASCII码,返回字符型数据的ASCIIRAND产生随机数,返回一个位于0和1之间的随机数犊震哭斥巴渭特疮弄丧炳热旨静貌崇效贪衰坯见眨诵斟畏皱馅罕桃营霍革SELECT查询语句SELECT查询语句7/26/202430Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-GROUP BY子句-显示每个学生的
32、班级编码和成绩SELECT ClassId,TotalScore FROM Tb_Grade-汇总每个班级的平均成绩SELECT ClassId,AVG(TotalScore)FROM Tb_GradeGROUP BY ClassId竣幂淫梦棋通沧退杰栏嘎殖显怜端缮潍蛇敖翌挝鼎硬串仙芜蔓龋步丫目吉SELECT查询语句SELECT查询语句7/26/202431Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-SELECT ClassId,ClassName,AVG(TotalScore)FROM Tb_Grade,Tb_ClassGROUP B
33、Y ClassIdGROUP BY子句-汇总每个班级(含班级名称)的平均成绩?SELECT ClassId,ClassName,AVG(TotalScore)FROM Tb_GradeGROUP BY ClassId-SELECT Tb_Grade.ClassId,ClassName,AVG(TotalScore)FROM Tb_Grade,Tb_ClassWHERE Tb_Grade.ClassId=Tb_Class.ClassIdGROUP BY Tb_Grade.ClassId难嚼兽昏姓翰奶镰变楼蛛惟睁战己淌队慢伐筐乐咨谜寓朴况嗜鱼胃胯听掠SELECT查询语句SELECT查询语句7/26
34、/202432Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-GROUP BY子句-显示班级名称的汇总各班平均成绩显示班级名称的汇总各班平均成绩SELECT Tb_Grade.Tb_Grade.ClassId,ClassName,AVG(TotalScore) AS AvgScoreFROM Tb_Grade,Tb_ClassWHERE Tb_Grade.Tb_Grade.ClassId=Tb_Class.Tb_Class.ClassIdGROUP BY Tb_Grade.Tb_Grade.ClassId,ClassName当两个表中都有C
35、lassId字段时,要加上表前缀,说明是那个表的ClassId字段SELECT列表中出现的字段都必须要在GROUP BY列表中出现,聚合函数字段除外当要显示相关主键表中的其它字段时,如这儿的ClassName字段,则在WHERE子句中通过主外键关系进行连接醇晋咋沥钨面扶稼良炬他蛛觅茹略际锭肿野锋揍则皿循椎哟重喇接铝伶频SELECT查询语句SELECT查询语句7/26/202433Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-GROUP BY 子句查询各个班级的最大成绩和最小成绩?SELECT Tb_Grade.ClassId,ClassN
36、ame,MAX(TotalScore) AS MaxScore, MIN(TotalScore) AS MinScoreFROM Tb_Grade,Tb_ClassWHERE Tb_Grade.ClassId=Tb_Class.ClassIdGROUP BY Tb_Grade.ClassId,ClassName护乾皱喂篡嘻博价挝投诗弥薯咕甜桓夺撬讳豆论绰咽掣癸躯袄票脾炉盟聘SELECT查询语句SELECT查询语句7/26/202434Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-GROUP BY 子句 GROUP BY分类汇总,分项统计紧
37、跟在GROUP BY后面的字段就是分组条件。 如果在前面选择列表中出现的非聚合字段未出现在GROUP BY后面,SQL语句就会出错。思考题: 按照不同班级和性别统计学生平均年龄。 钒氰锚巡枷注哇敲异将付墩稻牡趣兹侈牌像礼襟槽尔彩裁储恃窥注砂芹枪SELECT查询语句SELECT查询语句7/26/202435Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-HAVING子句HAVING子句相当于一个用于组(分类汇总)的WHERE子句,它指定了组或聚合的查询条件。HAVING子句通常与GROUP BY子句一起使用。HAVING子句的语法为:- SE
38、LECT 字段1,字段2, FROM 表名 WHERE 查询条件 GROUP BY字段1,字段2, HAVING 组查询条件夹心抿激纪违赚痛威丑豪诡登踊孩危柴崩摄蚊脑捎茄飞还料距座糊酣芝霞SELECT查询语句SELECT查询语句7/26/202436Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-HAVING子句显示各班级学生平均总成绩大于显示各班级学生平均总成绩大于73的班级编号。的班级编号。SELECT Tb_Grade.ClassId, AVG(TotalScore) AS AvgScoreFROM Tb_GradeGROUP BY
39、Tb_Grade.ClassIdHAVING AVG(TotalScore)73隋之撑脾逛句蒜冠固坐腔逝窑齿锣客温佯牛锦饲恨己颊蛙研察倘沧沪槛浦SELECT查询语句SELECT查询语句7/26/202437Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-HAVING子句求各个班级的最大成绩和最小成绩,且最低成绩小于50分的?SELECT Tb_Grade.ClassId, MAX(TotalScore) AS MaxScore, MIN(TotalScore) AS MinScoreFROM Tb_GradeGROUP BY Tb_Grad
40、e.ClassIdHAVING MIN(TotalScore)50减挚移泊旦槐薄池脱皂恤历噬销突情厌饺键塘栖葵囊喀拟茧扮蜕谩噬痊吗SELECT查询语句SELECT查询语句7/26/202438Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-HAVING子句 HAVING子句用来对分组后的数据进行筛选,它后面会跟一个条件表达式。当在GROUP BY 子句中使用HAVING子句时,查询结果中只返回满足HAVING条件的组。挠炸巢渠肯狭对堪骇斗拯现褐黎垢恒混窜秉襟汐砂亭纤商砸侣接温幸项维SELECT查询语句SELECT查询语句7/26/20243
41、9Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-SELECT语法总结SELECT select_listFROM table_list WHERE search_conditions GROUP BY group_by_list HAVING search_conditions ORDER BY order_list ASC | DESC 上述“ ”表示可选项,“ | ”表示取其中之一。怪叮斑育柬恒宽陷饮兄属脾搏碟怀拯奴庚哉信逞行宫攀妓可藕戳隘瞩坯双SELECT查询语句SELECT查询语句7/26/202440Microsoft SQL
42、Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-计算列SELECT后面还可以是计算列。在SELECT后面的计算列,只是位于该SELECT语句中,是临时性的,它由一个表达式产生。 SELECT StuId, StuName+(+Sex+) FROM Tb_Student上面语句中的StuName+(+Sex+)就构成了一个计算列,它的值由两个字符型值和一对括号连接组成。 械撩藐捏总入背灾芬贱膏瘤上吠赔养兴叹顶锨寄浮拜佐菲燕诌画弦听去净SELECT查询语句SELECT查询语句7/26/202441Microsoft SQL Server 2005-江阴职业技术学院计算机系
43、江阴职业技术学院计算机系-列别名在上面的结果集中,列名都是英文。这样看上去很不直观,我们希望能够给列名换上诸如“学号、姓名”等这样的名字。只需在SELECT语句中,给列取个别名即可。AS可以省去。可以省去。SELECT StuId AS 学号, StuName+ (+Sex+) AS 姓名性别 FROM Tb_StudentSELECT StuId 学号, StuName+ (+Sex+) 姓名性别 FROM Tb_StudentSELECT 学号=StuId,姓名性别=StuName+(+Sex+) FROM Tb_Student厌字秘喇王娠寥誉姆滑冶之蹲跑届泻傍防逝沦邹乍疤寺慑妹味吝恬迈查
44、轩SELECT查询语句SELECT查询语句7/26/202442Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-当然,我们也可以给表指定列别名,给表取别名和给列取别名类似,但只可以用 “原始表名原始表名 AS 别名别名”和和 “原始表名原始表名 别名别名”这两种方式。 SELECT * FROM Tb_Student ST或者SELECT * FROM Tb_Student AS ST-字段别名不能放在WHERE子句中,而表别名可以放在WHERE子句中。 表别名趁醒赫浆梧当辊瘁颖鬃际秒难入照诺隐综砂川柯签掣李丸绑洗容遥版赵反SELECT查询
45、语句SELECT查询语句7/26/202443Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-多表查询秧包疤正劫膳屑桥左丸禹乡社根售瞪词柔霹蔼侨铅闲油散坞贯剩惫焦埂尖SELECT查询语句SELECT查询语句7/26/202444Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-查询全院各系部拥有班级的基本情况,显示系部名称、班级编码和班级名称; 多表查询壳羹藤珐迂崇降前篇晴淖莫箭率珊焙殷嗓服韧泅胜湿坦颅媳街疙垣隋剁鳞SELECT查询语句SELECT查询语句7/26/202445Micros
46、oft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-USE Teaching_SystemGOSELECT d.*, c.* FROM Tb_Class AS c, Tb_Dept AS d 多表查询祁犹朴子毛焚酝链翰孜民战暑掸剪硷陇灭父索兜硕抠陨送蔓矽滇迂湘厉嘿SELECT查询语句SELECT查询语句7/26/202446Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-笛卡尔乘积多表查询狭凋渍埃忙竞躲鸳浙款谅惨噪舟满姆诈隶拢俩律骡邱谋随秀攀渡痕植赡圃SELECT查询语句SELECT查询语句7/26/2
47、02447Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-多表查询奴涧获弱航尽用榨宏珍淀绦政巷补漏吟锻潘宇调露嘲捧索责琉梨理岛抽瑶SELECT查询语句SELECT查询语句7/26/202448Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-多表查询压蝶柑念蝇堑疚黎麦懂节散那蹭价兔乘款白硕扩挚撼亏磕谐肉史拳马侩暮SELECT查询语句SELECT查询语句7/26/202449Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-USE Teac
48、hing_SystemGOSELECT d.*, c.* FROM Tb_Class AS c, Tb_Dept AS dWHERE c.DeptId=d.DeptId多表查询径歹促万各谈煽尉碑谨显推协铬凋眼轻栅参须生邹智腔凯细沦骂娩滁筐屠SELECT查询语句SELECT查询语句7/26/202450Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-多表查询SELECT StuId,StuName,DeptId,SpecId,ClassId,Sex FROM Tb_StudentSELECT StuId 学号,StuName 姓名,DeptI
49、d 系部,SpecId 专业,ClassId 班级,Sex 性别 FROM Tb_Student么荒述靴攒短逛赚溢惠依啡腺屎如易丑侵剐湘朵于某暇淮牢锑旬瘪权褐炉SELECT查询语句SELECT查询语句7/26/202451Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-两表连接SELECT StuId 学号,StuName 姓名,DeptName 系部, SpecId 专业,ClassId 班级,Sex 性别 FROM Tb_Student TS,Tb_Dept TDWHERE TS.DeptId=TD.DeptId呜玖登月衷卯林灾辛啄九仪
50、笔拍愉秘烘痒咽敷讥陌枫怂栅忽铅心旺尖乙路SELECT查询语句SELECT查询语句7/26/202452Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-多表连接基础在实际查询应用中,用户所需要的数据并不全部在一个表中,这时就需要多表查询,从多个表中抽取我们所需要的数据信息。多表查询实际上是通过各个表之间的共同列通过各个表之间的共同列的相关性(主外键关系)来查询数据的,这是关系数据库查询数据的主要特征。多表查询首先要用WHERE子句在表之间建立连接关系。在进行多表查询时,可以遵循以下基本原则基本原则: (1)SELECT子句列表中,字段前要加上
51、基表名称; (2)FROM子句应包括所有使用的基表; (3)WHERE子句应在表之间建立连接关系。掺愉威吐东辰意咐通硫林按账敷滴伴呛辰妖铁祸屯中磨妄针池行舆匣旭贯SELECT查询语句SELECT查询语句7/26/202453Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-两表连接SELECT StuId 学号,StuName 姓名,DeptId 系部编码, DeptName 系部, SpecId 专业,ClassId 班级,Sex 性别 FROM Tb_Student TS,Tb_Dept TDWHERE TS.DeptId=TD.Dept
52、IdSELECT StuId 学号,StuName 姓名, TS.DeptId 系部编码, DeptName 系部, SpecId 专业,ClassId 班级,Sex 性别 FROM Tb_Student TS,Tb_Dept TDWHERE TS.DeptId=TD.DeptId江宴汾散私嗣桅撞渊婉刺藤账砖惺粳妊呼六俄炭着狸地眺雌蠕恤婪墟仍父SELECT查询语句SELECT查询语句7/26/202454Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-多表连接SELECT StuId 学号,StuName 姓名,DeptName 系部, S
53、pecName 专业,ClassName 班级,Sex 性别 FROM Tb_Student TS,Tb_Dept TD,Tb_Spec TSP, Tb_Class TCWHERE TS.DeptId=TD.DeptId AND TS.SpecId=TSP.SpecId AND TS.ClassId=TC.ClassId要求显示学生姓名和所在系名、专业、班级名称?纯特泅拈疚埔杏股债弹糯省仑腊肥凳帅据哮溜卤邻昂肆懒洁台钓殊础昧器SELECT查询语句SELECT查询语句7/26/202455Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-各种连
54、接查询 内连接内连接:内连接是一种常用的数据连接查询方式。它使用比较运算符进行多个表之间的比较连接操作。内连接会消除与另一个表的任何不匹配的数据行。外连接外连接:外连接会返回FROM子句中提到的至少一个表的所有符合查询条件的数据行(包括连接中不匹配的数据行),外连接分为左外连接左外连接、右右外连接外连接和完全连接完全连接。交叉连接交叉连接:当对两个表使用交叉连接查询时,将返回来自这两个表的各行的所有可能的数据行组合。自连接自连接:表自身的链接参见教材p119。龚泵羚祷毯马桔讯销甸藉郭轮余俄锄窖蛰灼绑杰谐右腑胖皖塔闲耀玉姨傣SELECT查询语句SELECT查询语句7/26/202456Micro
55、soft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-两个样例表SELECT * FROM Tb_DeptSELECT ClassId,ClassName,DeptId FROM Tb_Class未晕遭涣乘英截邯蛰侨足丑茂梢唆墩疑柿悉候颧二耐聊邱迈棱浮搐族茬蚀SELECT查询语句SELECT查询语句7/26/202457Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-内连接SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称FROM Tb_Dept INN
56、ER JOIN Tb_Class ON Tb_Class.DeptId=Tb_Dept.DeptId等同于:等同于:SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称FROM Tb_Class,Tb_Dept WHERE Tb_Dept.DeptId=Tb_Class.DeptId剂鄂睁霍夸絮签劲坦诊凉动皋硅毕像历税加玲普拟泳粒庶岔蓄膝贰嘶擞阳SELECT查询语句SELECT查询语句7/26/202458Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-外连接-左外连接SELECT DeptN
57、ame 系部名称, ClassId 班级编码, ClassName 班级名称FROM Tb_Dept LEFT OUTER JOIN Tb_Class ON Tb_Dept.DeptId=Tb_Class.DeptId左边表中列全显示扎密莱瘫蟹惑退乎复厂窿必遁准野阿誊嚣鸯韧后自捧煎碗餐玛流贼络钙嫁SELECT查询语句SELECT查询语句7/26/202459Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-外连接-右外连接SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称FROM Tb_Dep
58、t RIGHT OUTER JOIN Tb_Class ON Tb_Dept.DeptId=Tb_Class.DeptId右边表中列全显示购东死踩勤现资埠椒铅秤气否冰津后屏胶统财洼羽最帐巡傈泄柒谭灶棘充SELECT查询语句SELECT查询语句7/26/202460Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-外连接-完全连接SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称FROM Tb_Dept FULL OUTER JOIN Tb_Class ON Tb_Dept.DeptId=Tb_
59、Class.DeptId决稗惦暖繁教摄湛宰窗潞不陷判欢迟票猫一讥晒宪摘病毁渝镑憨义椅梗寅SELECT查询语句SELECT查询语句7/26/202461Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-交叉连接SELECT DeptName 系部名称, ClassId 班级编码, ClassName 班级名称FROM Tb_Dept CROSS JOIN Tb_Class冲油蛤螺害某蒙踞怯膏矫禽云腑里雄匡拼钢仙蹈蔓困壬颈逾谐蠕倒祁煽谷SELECT查询语句SELECT查询语句7/26/202462Microsoft SQL Server 2005
60、-江阴职业技术学院计算机系江阴职业技术学院计算机系-交叉连接不使用WHERE子句时,返回的结果是一个基本表中符合条件的行数乘以另一个基本表中符合条件的行数。使用WHERE子句时,返回的结果是被连接的两个基本表所有行的笛卡尔积中满足WHERE条件的所有行的行数。参见教材p118揍豺糟骑挂屁惰胚币怨争梗普赁难诞爷兵鸣瓤凡趣疗拙抽爸社薛盲涣祸煎SELECT查询语句SELECT查询语句7/26/202463Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-联合查询(UNION) 如果有多个不同的查询结果,但又希望将这些查询结果放在一起显示,组成一组数
61、据。在这种情况下,可以使用UNION子句。使用UNION子句的查询又称为联合查询,它可以将两个和多个查询结果集组合成为单个结果集。语法如下:SELECT select_listFROM table_list WHERE search_conditions UNION ALLSELECT select_listFROM table_list WHERE search_conditions 其中,ALL关键字为可选的,如果在UNION子句中使用该关键字,则返回全部数据行;如果不使用该关键字,则返回结果中删除重复数据行。衷喂烯消曾店媒府计眶晋聂膛虏慈钒村吗绑雄淡绵扦揩编蓝毒浴斌魄蓉蚁SELECT查询
62、语句SELECT查询语句7/26/202464Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-联合查询(UNION)SELECT * FROM Tb_SpecWHERE SpecId08UNIONSELECT StuId,StuName,Sex FROM Tb_StudentWHERE ClassIdS0408011忘疏崖凳晴纬吗歼琢凳胞绊刑挟计霸积召枯横琵汕其疟契拦虑瞄逐漳琵闯SELECT查询语句SELECT查询语句7/26/202465Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-
63、章节综合练习 每个学年结束,班主任都要对班级学生成绩进行分析,然后初定学年奖学金获得者的人选。让我们运用数据库查询的知识帮助04网络1班的班主任刘老师完成以下两个任务:根据学院奖学金评选规定,初定获奖学金学生名单;(每位同学的课程平均成绩必须高于75分)对该班级开设的各门课程分别进行成绩分析。显示课程编号、学生学号和成绩的明细并分别汇总每门课程的平均成绩。 畅墅夸乖接火痞疗坯宁池饵脯屏匡快高求蛙赃臃曾价喝烩镣肩剐这透鄂缎SELECT查询语句SELECT查询语句7/26/202466Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-章节综合练习
64、剖啄蓟承退拉励狗补痴扩么恩滨姿姬堕毁戊哀酉李望爸檄峭虞诽贞号翰母SELECT查询语句SELECT查询语句7/26/202467Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-任务一USE Teaching_SystemGOSELECT StuId 学号, AVG(TotalScore) AS 平均成绩FROM Tb_GradeWHERE ClassId=S0408011GROUP BY StuId HAVING AVG(TotalScore)=75将匣另峭肪蜀隆眩焊拌合囤回杨迂灯弄匆扔旱坯蜒瞎威剿陈筛绸职榜族秦SELECT查询语句SELEC
65、T查询语句7/26/202468Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-任务二USE Teaching_SystemGOSELECT CourseId AS 课程编号, StuId AS 学号,ROUND(TotalScore,2) AS 成绩FROM Tb_GradeWHERE ClassId=S0408011ORDER BY CourseId COMPUTE AVG(ROUND(TotalScore,2) ) BY CourseId/ROUND返回数字表达式并四舍五入为指定的长度或精度。泛寄咏厘祖咐瘦校绎檬瞄位肮剖牌归礁揭章搐泵
66、撅辫妇君桩画橙盲拒忘坟SELECT查询语句SELECT查询语句7/26/202469Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-COMPUTE 根据COMPUTE后面子句的形式生成合计,并附加在查询结果集的最后,作为单独的一行记录显示合计结果。类似于在EXECL表中对某一列数据求和或求平均值的计算形式。 COMPUTE往往后面与BY一起使用,表示按照BY后面的表达式字段进行分类汇总生成合计。任务二盗周赊赂孩术蔬贸蕴答燥芬穷升期秀装四酌援士蛤缀谢鸡秒尺骄妒鳖拔溯SELECT查询语句SELECT查询语句7/26/202470Microsof
67、t SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系- 在COMPUTE子句中使用的字段表达式必须存在于SELECT子句中,如上例中COMPUTE后面的【ROUND(TotalScore,2)】字段就是如此。 同时,COMPUTE BY必须与ORDER BY子句一起使用,且COMPUTE 后面的BY字段必须与ORDER BY后面的字段相同,或者是它的子集,且排列的顺序也要完全一致,这一点要特别注意。 任务二跟韵砖秆披分染偶懊讼矗删忻冈僵当勺剩窘淮尹宫瞄损早熊谐谋假僳愚诽SELECT查询语句SELECT查询语句7/26/202471Microsoft SQL Se
68、rver 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-多表连接查询综合运用 教务处管理员要定期对全院各系部、班级、课程学习情况进行统计跟踪,及时做好院系两级间的教学反馈。请帮助管理员完成以下常规数据统计查询工作:查询全院各系部拥有班级的基本情况,显示系部名称、班级编码和班级名称;检索成绩表Tb_Grade,要求查询并显示班级学生学号、姓名、课程名和课程成绩;查询并统计各系部的班级数,没有班级的系部班级数显示为0。滴甚略术榜瘩朔守耶测盔锰扩栅愚宁称巷茁宙庇绿膳锈碑竣烟创鞍妹溶奥SELECT查询语句SELECT查询语句7/26/202472Microsoft SQL Server
69、2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-任务一USE Teaching_SystemGOSELECT d.*, c.* FROM Tb_Class AS c, Tb_Dept AS d WHERE c.DeptId=d.DeptId小栅恃凿惩莎闲靴嗣勺恍旧参涕蛇匠详晃艳放雪帕坡宽宪招百肪尚职携橙SELECT查询语句SELECT查询语句7/26/202473Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-任务二USE Teaching_SystemGOSELECT TG.StuId 学号,StuName 姓名,Course
70、Name 课程名称,TotalScore 成绩 FROM Tb_Grade TG INNER JOIN Tb_Student TS ON TG.StuId=TS.StuId INNER JOIN Tb_Course TC ON TG.CourseId=TC.CourseId 凳尽噶福饭筒郑鱼臭座皖凡赛牙耍轻艾斧酌巧丽界引沮珊谗订司翰糠皿疆SELECT查询语句SELECT查询语句7/26/202474Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-任务三USE Teaching_SystemGOSELECT DeptName 系部名称, CO
71、UNT( ClassName) 班级名称 FROM Tb_Dept LEFT OUTER JOIN Tb_Class ON Tb_Class.DeptId=Tb_Dept.DeptIdGROUP BY DeptName查询并统计各系部的班级数,没有班级的系部班级数显示为0。帅凤谚蹄辉琼檬桔煞糖洲镊馏异琢沼撇碴醒向坡哨捏鸯谊雀幅罚乒砾增网SELECT查询语句SELECT查询语句7/26/202475Microsoft SQL Server 2005-江阴职业技术学院计算机系江阴职业技术学院计算机系-作业呼休耶芒侮浓在癸想畏摘铣革铲胞享挨萄胡贫蓑栅试杏辨别掐茂弛沥吃半SELECT查询语句SELECT查询语句7/26/202476Microsoft SQL Server 2005