实验三 数据查询

更新时间:2023-10-06 08:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验三 数据查询

【实验目的】

1. 学会使用企业管理器查询数据 2. 掌握使用SQL语句查询数据 【实验内容】

1. 使用企业管理器进行数据查询

2. 在查询分析器内使用SQL语句进行数据查询 【实验准备】

1. 复习与本次实验内容相关知识 2. 复习查询分析器的使用

3. 对本次实验中要求自己完成的部分做好准备(第二部分,请预先写出来) 【实验步骤】

1. 用企业管理器进行数据查询

o 启动企业管理器,注册连接。

o 展开服务器-->展开数据库-->展开自己的数据库-->单击表。

o 在需要查询的表上单击右键,在弹出的快捷菜单中选择\打开表(O)\其下级菜单即为查询命令 :

? 返回所有行(A) --该命令以网格方式显示指定表的所有

记录

? 返回首行(T)... --该命令以交互方式输入要返回的行数 ? 查询(Q) --打开查询窗口,以图形方式设计查询

o o

请从学生表(U_STUDENTS)上右击,使用\查询(Q)\命令建立一个查询 ,请选中学号(ID)、姓名(NAME)两个字段,再单击上面的执行按钮(!按钮)执行查询,查看结果。

o o

再在关系图窗格内右击鼠标在弹出菜单中选择添加表,添加班级表(U_CLASSES),在班级表的ID字段上按下鼠标左键,拖至学生表的CLASS_ID上建立关联,在班级表上选中班级(CLASS)、系(DEPARTMENT)字段,再在网格窗格上选择姓名(NAME)行上选择

排序类型为\升序\。执行该查询,查看结果。 结果如下图所示。(注意查看SQL窗格内的SQL查询语句)

该操作实现了从班级表、学生表中查询出 所有学生的学号(ID)、姓名(NAME)、班级(CLASS_ID)、所在系(DEPARTMENT)的记录数据。

o 关闭企业管理器

2. 用SQL语句查询数据

o 启动查询分析器

o 在查询分析器中分别执行下列查询语句(有的语句请自己写出),体会或说明各语句的功能(请将下面的语句复制到查询分析器,逐条执行--要执行一条语句请选中该语句再按F5或单击执行铵钮,如下图所示)。

o o

o --查询学生表

SELECT * FROM U_STUDENTS

SELECT * FROM U_STUDENTS ORDER BY CLASS_ID

--查询成绩表(请体会下列语句的功能) SELECT * FROM U_SCORES

SELECT * FROM U_SCORES WHERE COURSE_ID=1

SELECT * FROM U_SCORES WHERE STUDENT_ID='5103210102' SELECT * FROM U_SCORES WHERE SCORE<60

SELECT * FROM U_SCORES WHERE SCORE<60 AND COURSE_ID=1

--请比较下面三个语句,并说明其作用。 SELECT TOP 10 * FROM U_SCORES

SELECT TOP 10 * FROM U_SCORES ORDER BY SCORE

SELECT TOP 10 * FROM U_SCORES ORDER BY SCORE DESC

--下面命令将结果存放于TMP_XSB1表中。

SELECT * INTO DBO.TMP_XSB1 FROM U_SCORES WHERE SCORE<60 AND COURSE_ID=1

--请写出查询课程号为2成绩大等于70的学生成绩情况,并将其结果存放于TMP_XSCJ表中(在查询语句中参照上例用INTO DBO.TMP_XSCJ子句)。

--从成绩表中找出有哪些学生(学号)。

SELECT DISTINCT STUDENT_ID FROM U_SCORES

--查询所有学生情况(比较下面的两个语句)。

SELECT A.ID,A.NAME,B.CLASS,B.DEPARTMENT

FROM U_STUDENTS A INNER JOIN U_CLASSES B ON A.CLASS_ID=B.ID

SELECT A.ID,A.NAME,B.CLASS,B.DEPARTMENT FROM U_STUDENTS A , U_CLASSES B WHERE A.CLASS_ID=B.ID

--查询班号为2的所有学生。

SELECT A.ID,A.NAME,B.CLASS,B.DEPARTMENT FROM U_STUDENTS A , U_CLASSES B WHERE A.CLASS_ID=B.ID AND B.ID=2

--请写出从学生表查询班级为'软件031'的学生情况(学号,姓名,所在班级,所在系),并请将查询结果用INTO子句存放于DBO.TMP_XSB2表中。

--按班级统计人数。

SELECT CLASS_ID AS 班号,COUNT(*) AS 人数 FROM U_STUDENTS GROUP BY CLASS_ID

--请将上面的语句添加INTO子句,再执行一次并将结果存放于DBO.TMP_XSRS表中。

--查询所有学生成绩(试比较下面的两个语句的不同点,并看看他们的执行结果是否相同)。

SELECT A.ID, A.NAME, B.COURSE, C.SCORE

FROM U_SCORES C INNER JOIN U_STUDENTS A ON C.STUDENT_ID = A.ID

INNER JOIN U_COURSES B ON C.COURSE_ID = B.ID

SELECT A.ID,A.NAME,B.COURSE,C.SCORE

FROM U_STUDENTS A,U_COURSES B,U_SCORES C WHERE C.STUDENT_ID=A.ID AND B.ID=C.COURSE_ID

--统计各人平均分。

SELECT A.ID AS 学号,A.NAME AS 姓名,AVG(B.SCORE) AS 平均分,

MAX(B.SCORE) AS 最高分, MIN(B.SCORE) AS 最低分 FROM U_STUDENTS A INNER JOIN U_SCORES B ON B.STUDENT_ID =A.ID

GROUP BY A.ID,A.NAME ORDER BY 平均分

--查找陈姓学生。

SELECT ID, NAME FROM U_STUDENTS WHERE NAME LIKE '陈%'

--查找姓名第二个字是月的学生。

SELECT ID, NAME FROM U_STUDENTS WHERE NAME LIKE '_月%'

--请写出查询丁姓名同学的查询语句,并将其结果用INTO子句存放于DBO.TMP_XSB3中。

--查看有不及格课程的学生名单。

SELECT A.ID AS 学号,A.NAME AS 姓名 FROM U_STUDENTS A WHERE A.ID

IN (SELECT DISTINCT B.STUDENT_ID FROM U_SCORES B WHERE SCORE<60)

--查看没有不及格课程的学生名单(请参照上面的语句写出查询语句)

--查看成绩在50-60之间(含50,60)的学生及其各课程成绩。 SELECT A.ID, A.NAME, B.COURSE, C.SCORE

FROM U_SCORES C INNER JOIN U_STUDENTS A ON C.STUDENT_ID = A.ID

INNER JOIN U_COURSES B ON C.COURSE_ID = B.ID WHERE C.SCORE BETWEEN 50 AND 60

--下面第一个语句是查找有课程成绩在80分以上的学生,试与第二个语句进行比较,看看结果是不是一样,如果不一样,想想为什么。 SELECT A.ID, A.NAME FROM U_STUDENTS A

WHERE EXISTS (SELECT * FROM U_SCORES B WHERE A.ID=B.STUDENT_ID AND B.SCORE>80)

SELECT A.ID, A.NAME FROM U_STUDENTS A

WHERE NOT EXISTS (SELECT * FROM U_SCORES B WHERE A.ID=B.STUDENT_ID AND B.SCORE<=80)

查看一下,在你的数据库中是否存在下面的表 DBO.TMP_XSB1 DBO.TMP_XSB2 DBO.TMP_XSB3 DBO.TMP_XSCJ DBO.TMP_XSRS

o 如果有,那么你的实验就完成了,请关闭查询分析器,结束实验

o

本文来源:https://www.bwwdw.com/article/bdgd.html

Top