例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx

上传人:b****8 文档编号:29499720 上传时间:2023-07-24 格式:DOCX 页数:15 大小:17.44KB
下载 相关 举报
例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx_第1页
第1页 / 共15页
例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx_第2页
第2页 / 共15页
例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx_第3页
第3页 / 共15页
例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx_第4页
第4页 / 共15页
例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx

《例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx》由会员分享,可在线阅读,更多相关《例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx(15页珍藏版)》请在冰豆网上搜索。

例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用.docx

例51查询学生基本信息表中的所有信息在查询分析器中运行如下研究应用

【例5-1】查询学生基本信息表中的所有信息。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM学生基本信息表

GO

【例5-2】在学生基本信息表中查询学生的学号、姓名、性别和族别信息。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT学号,姓名,性别,族别FROM学生基本信息表GO

【例5-3】从学生基本信息表中查询学生由几个民族构成。

从例2结果可知,学生的族别有多行重复,要快速查询学生的民族构成,实际上就是对相

同值的族别只需要显示一行,可使用DISTINCT关键字实现。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECTDISTINCT族别FROM学生基本信息表GO

【例5-4】显示课程信息表中前5行的信息。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECTTOP5*FROM学生基本信息表

GO

运行结果如图5-4所示,只显示查询结果的前5行数据。

【例5-5】从学生基本信息表中只显示5%的信息。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECTTOP5PERCENT*FROM学生基本信息表GO

【例5-6】从学生基本信息表中查询所有团员的信息资料,并形成新表为团员基本信息表。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*INTO团员基本信息表FROM学生基本信息表WHERE政治面貌='团员'

GO

SELECT*FROM团员基本信息表

GO

【例5-7】从成绩表中查询学生成绩。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM成绩表

GO

【例5-8】从相关表中查询每一位学生的学号、姓名、课程名称、成绩。

从各表数据可知,“学号”存在于“学生基本信息表”和“成绩表”,“姓名”存在于“学生基本信息表”,“课程名称”存在于“课程信息表”,“成绩”存在于“成绩表”,要实现本例查询,则需要对“学生基本信息表”、“课程信息表”、“成绩表”进行多表检索,也可以来自不同的数据库。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT学生基本信息表.学号,姓名,课程名称,成绩FROM学生基本信息表,课程信息表,成绩表

WHERE学生基本信息表.学号=成绩表.学号AND课程信息表.课程编号=成绩表.课程编号GO

【例5-9】在课程信息表中查找“Delphi程序设计”课程的任课老师。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT任课教师FROM课程信息表

WHERE课程名称='Delphi程序设计'

GO

【例5-10】查询少数民族学生的基本情况。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM学生基本信息表

WHERE族别<>'汉族'

GO

【例5-11】检索1985年1月1日以后出生的女生基本信息。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM学生基本信息表

WHERE出生日期>'1985-01-01'AND性别='女'

GO

【例5-12】查询每位同学的课程门数、总成绩、平均成绩。

查询每位学生的课程成绩情况,实际上就是按照“学号”列分类统计,可使用GROUPBY学号子句,统计课程门数、总成绩、平均成绩分别可以使用聚合函数COUNT(课程编号)、SUM(成绩)、AVG(成绩)。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT学号,COUNT(课程编号)AS'课程门数',SUM(成绩)AS'总成绩',AVG(成绩)AS'平

均成绩'FROM成绩表

GROUPBY学号

GO

【例5-13】从学生基本信息表中统计各民族学生人数。

此例实际上是将要对学生按民族进行分类统计,可使用聚合函数COUNT(族别)实现功能。

查询分析器中运行如下命令:

USEXSCJ

GO

SELECT族别,COUNT(族别)AS'学生人数'FROM学生基本信息表GROUPBY族别

GO

【例5-14】从学生基本信息表中统计汉族学生的人数。

此例就是在上例统计出各民族学生人数的基础上进一步限定查询汉族学生人数,可在GROUP

BY子句之后跟HAVING族别='汉族'子句实现此功能。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT族别,COUNT(族别)AS'学生人数'FROM学生基本信息表GROUPBY族别

HAVING族别='汉族'

GO

此例也可使用WHERE子句完成功能。

USEXSCJ

GO

SELECT族别,COUNT(族别)AS'学生人数'FROM学生基本信息表WHERE族别='汉族'

GROUPBY族别

GO

【例5-15】显示平均成绩大于等于80分以上的学生情况。

此例的限定条件是AVG(成绩)>=80,只能使用HAVING子句,如果使用WHERE子句限定条件,

则系统会显示如图5-16所示的错误信息。

错误使用WHERE子句的SELECT语句如下:

USEXSCJ

GO

SELECT学号,AVG(成绩)AS'平均成绩'FROM成绩表WHEREAVG(成绩)>=80

GROUPBY学号

GO

使用HAVING子句的正确语句如下:

USEXSCJ

GO

SELECT学号,AVG(成绩)AS'平均成绩'FROM成绩表GROUPBY学号

HAVINGAVG(成绩)>=80

GO

【例5-16】将学生平均成绩按升序排序。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT学号,AVG(成绩)AS'平均成绩'FROM成绩表

GROUPBY学号

ORDERBYAVG(成绩)

GO

【例5-17】查询成绩表中的全部信息,要求查询结果首先按学号升序排序,学号相同时,按

成绩降序排序。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM成绩表

ORDERBY学号,成绩DESC

GO

【例5-18】按学号显示学生成绩,并计算每人的平均成绩和总成绩。

此例要求按人对课程及成绩进行分组显示,并计算每人的平均成绩、总成绩。

则显示成绩应

按学号分类,分组计算平均成绩、总成绩的语句为COMPUTEAVG(成绩),SUM(成绩)BY学号,

使用COMPUTEBY子句首先要用ORDERBY子句对要分组的学号列排序,即ORDERBY学号。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*

FROM成绩表

ORDERBY学号

COMPUTEAVG(成绩),SUM(成绩)BY学号

GO

【例5-19】从系部表中检索系部名称,从班级表中检索班级名称。

从系部表中检索系部名称的SELECT语句为:

SELECT系部名称FROM系部表,从班级表中检

索班级名称的SELECT语句为:

SELECT班级名称FROM班级表,合并这两个查询结果,需要

使用UNION运算符。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT系部名称FROM系部表

UNION

SELECT班级名称FROM班级表

GO

【例5-20】查询1985年出生的学生基本信息。

1985年出生的学生即出生日期在1985年1月1日至12月31日之间的学生。

在查询分析

器中运行如下命令:

USEXSCJ

GO

SELECT*FROM学生基本信息表

WHERE出生日期BETWEEN'1985-01-01'AND'1985-12-31'GO

【例5-21】查询不及格学生成绩信息。

查询不及格学生成绩信息,也就是查询0—59之间的学生成绩,可用BETWEEN关键字表示为:

WHERE成绩BETWEEN0AND59。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM成绩表

WHERE成绩BETWEEN0AND59

GO

【例5-22】查询课程编号为002、003、007、014的课程编号、课程名称、任课教师和上课时间。

课程编号为002、003、007、014可以写成:

WHERE课程编号IN('002','003','007','014'),也可写成WHERE课程编号=’002’OR课程编号=’003’OR课程编号=’007’OR课程编号=’014’。

显然,使用IN关键字进行检索比使用3个OR运算符进行检索更为简单,而且易于理解和阅读。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT课程编号,课程名称,任课教师,上课时间FROM课程信息表

WHERE课程编号IN('002','003','007','014')GO

在查询分析器中运行以下命令,也可得到相同的查询结果,但这种写法显然比较繁琐。

USEXSCJ

GO

SELECT课程编号,课程名称,任课教师,上课时间FROM课程信息表

WHERE课程编号=’002’OR课程编号=’003’OR课程编号=’007’OR课程编号=’014’GO

【例5-23】检索所有姓刘的学生基本信息。

匹配所有姓刘的学生可以表示为:

姓名LIKE‘刘%’。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM学生基本信息表

WHERE姓名LIKE'刘%'

GO

【例5-24】检索包含“技术”两字的课程信息。

匹配“技术”两字的课程名称可以表示为:

课程名称LIKE‘%技术%’。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM课程信息表

WHERE课程名称LIKE'%技术%'

GO

【例5-25】检索少数民族学生的基本信息。

少数民族学生或以表示为:

WHERE族别NOTLIKE‘汉族’。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM学生基本信息表

WHERE族别NOTLIKE'汉族'

GO

【例5-26】查询第2个字为“丽”的学生信息。

在学生基本信息表中,匹配第2个字为“丽”的学生姓名应表示为:

姓名LIKE‘_丽%’。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM学生基本信息表

WHERE姓名LIKE'_丽%'

GO

【例5-27】查询课程信息表中教师未定的课程信息。

课程信息表中教师未定的表达式可以表示为:

WHERE任课教师ISNULL。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM课程信息表

WHERE任课教师ISNULL

GO

【例5-28】统计成绩表中各门课程的学生人数、总成绩、平均成绩。

统计成绩表中各门课程信息,需要将学生成绩按课程编号分组GROUPBY课程编号,统计学

生人数、总成绩、平均成绩分别需要使用聚合函数COUNT(学号)、SUM(成绩)、AVG(成绩)。

因为新生成的学生人数、总成绩、平均成绩三列没有列名,所以可使用AS子句实现。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT课程编号,COUNT(学号)AS'学生人数',SUM(成绩)AS'总成绩',AVG(成绩)AS'平

均成绩'

FROM成绩表

GROUPBY课程编号

GO

【例5-28-1】检索单科成绩高于全班平均分的学生成绩信息。

此例中,全班平均成绩为SELECTAVG(成绩)AS'平均成绩'FROM成绩表,单科成绩高于全

班平均分可以表述为WHERE成绩>(SELECTAVG(成绩)FROM成绩表)。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECTAVG(成绩)AS'平均成绩'FROM成绩表GO

SELECT*FROM成绩表

WHERE成绩>(SELECTAVG(成绩)FROM成绩表)GO

【例5-29】检索系部信息和班级信息。

此例要检索系部表和班级表的所有信息,即显示两个表的所有信息。

可在SELECT子句中使用

*、系部表.*或班级表.*,连接条件是两个表的系部编号的值要相等,即系部表.系部编号=

班级表.系部编号。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM系部表,班级表

WHERE系部表.系部编号=班级表.系部编号

GO

使用ANSI连接语法的SELECT语句如下:

USEXSCJ

GO

SELECT*FROM系部表INNERJOIN班级表

ON系部表.系部编号=班级表.系部编号

GO

【例5-30】检索系部信息和班级信息,要求连接的列只显示一次。

本例与上例的区别是对连接的列只显示一列,用SELECT子句可以写成:

SELECT系部表.*,

班级编号,班级名称。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT系部表.*,班级编号,班级名称FROM系部表,班级表WHERE系部表.系部编号=班级表.系部编号

GO

使用ANSI连接语法的SELECT语句如下:

USEXSCJ

GO

SELECT系部表.*,班级编号,班级名称FROM系部表INNERJOIN班级表

ON系部表.系部编号=班级表.系部编号

GO

【例5-31】检索没有录入成绩的课课程情况。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECTDISTINCT课程信息表.*FROM课程信息表,成绩表WHERE课程信息表.课程编号<>成绩表.课程编号GO

【例5-32】使用左外连接检索学生成绩信息(学号,姓名,课程名称)。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT学号,课程信息表.课程编号,课程信息表.课程名称,成绩FROM课程信息表LEFTJOIN成绩表ON课程信息表.课程编号=成绩表.课程编号GO

【例5-33】使用右外连接检索学生成绩信息(学号,姓名,课程名称)。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT学号,课程信息表.课程编号,课程信息表.课程名称,成绩FROM课程信息表RIGHTJOIN成绩表ON课程信息表.课程编号=成绩表.课程编号GO

【例5-34】使用全外连接检索学生成绩信息(学号,姓名,课程名称)。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT学号,课程信息表.课程编号,课程信息表.课程名称,成绩FROM课程信息表FULLJOIN成绩表ON课程信息表.课程编号=成绩表.课程编号GO

【例5-35】计算系部表和班级表的交叉连接。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECT*FROM班级表CROSSJOIN系部表

GO

此例也可用FROM子句写成如下语句,运行结果相同。

USEXSCJ

GO

SELECT*FROM班级表,系部表

GO

【例5-36】查找同名同姓的学生信息。

该例是对学生基本信息表进行行自连接,这里将学生基本信息表分别定义别名为A1、A2,将

FROM子句写成FROM学生基本信息表A1,学生基本信息表A2,连接条件为WHEREA1.姓名=A2.

姓名ANDA1.学号<>A2.学号。

在查询分析器中运行如下命令:

USEXSCJ

GO

SELECTA1.*FROM学生基本信息表A1,学生基本信息表A2WHEREA1.姓名=A2.姓名ANDA1.学号<>A2.学号

GO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1