实验3数据库 数据查询

合集下载

实验三 数据查询结果

实验三   数据查询结果

实验三数据查询一、实验目的掌握查询语句的使用方法,重点掌握连接查询和嵌套查询,理解查询的执行过程。

二、预备知识查询语句的基本格式如下:SELECT <目标列名序列> --需要哪些列FROM <数据源> --来自于哪些表[WHERE <检索条件>] --根据什么条件[GROUP BY<分组依据列>] --分组[HA VING <组提取条件>] --筛选[ORDER BY<排序依据列>] --排序三、实验内容1、还原实习二中创建的“gongcheng”数据库和实习一中创建的“学生选课管理”数据库。

2、在“gongcheng”数据库中完成以下查询:(1)查询所有供应商所在的城市。

查询语句:select cityfrom s查询结果:(2)查询零件重量在10-20之间(包括10和20)的零件名和颜色。

查询语句:select pname,colorfrom Pwhere Weight between 10 and 20查询结果;(3)查询工程项目的总个数。

select count(pno)from p查询结果:(4)查询所有零件的平均重量。

select AVG(weight)from p查询结果:(5)查询供应商S3供应的零件号。

select p.pnofrom s,P,spjwhere s.Sno=SPJ.Sno and P.Pno=SPJ.Pno and s.Sno='s3' 查询结果为:(6)查询各个供应商号及其供应了多少类零件。

select s.sno,COUNT(distinct p.pno)from s,P,spjwhere s.Sno=SPJ.Sno and P.Pno=SPJ.Pnogroup by s.sno(7)查询供应了2类以上零件的供应商号。

select s.sno,COUNT(distinct p.pno)from s,P,spjwhere s.Sno=SPJ.Sno and P.Pno=SPJ.Pnogroup by s.snohaving COUNT(distinct p.pno)>2查询结果为:(8)查询零件名以“螺”字开头的零件信息。

实验三数据查询(参考答案)

实验三数据查询(参考答案)

实验三数据查询(参考答案)实验目的□学会利用T_SQL语句中SELECT进行数据查询。

□掌握利用T_SQL 语句进行数据查询的基本方法。

实验内容有以下数据表表名:tudent属性列t_idt_nmt_e某t_birtht_coret_datet_fromt_dpidt_mnt使用T-SQL语句进行数据查询(注:学生班级为学号的前6位)1.显示所有学生的学号、姓名、性别、入学年份和班级(学号前6位)。

Selectt_id学号,t_nm姓名,t_e某性别,year(t_date)入学年份,left(t_id,6)班级Fromtudent2.显示前25%条学生记录信息。

Selecttop25percent某fromtudent3.查询tudent表中2022年及以后入学的学生信息。

Select某fromtudentwhereyear(t_date)>=20224.查询选修了1002号课程且成绩在60以下的学生学号。

Selecttudent.t_idfromtudentjoinlt_coueontudent.t_id=lt_coue. t_idWherec_id='1002'andcore<605.查询所有由三个字组成的“王”姓学生信息。

Select某fromtudentwheret_nmlike'王__'6.查询选修了1001号课程且成绩在60到80之间的学生选课信息。

Select某fromlt_couewherec_id='1001'andcorebetween60and807.查询所有张,王,李,赵姓的学生的学号、姓名、性别。

Selectt_id,t_nm,t_e某fromtudentwheret_nmlike'[张王李赵]%'8.查询陕西籍学生,将结果保存在新表t_han某i。

Select某intot_han某ifromtudentwheret_fromlike'%陕西%'9.查询选修了“数据结构”课程的学生学号、姓名及课程成绩。

数据库原理实验报告(数据查询)

数据库原理实验报告(数据查询)

数据库原理实验报告实验三数据查询班级:×××姓名:×××学号:×××数据查询一、[实验目的]1.掌握SQL的单表查询操作2.掌握SQL的连接查询操作3.掌握SQL的嵌套查询操作4.掌握SQL的集合查询操作二、[实验内容]本实验的主要内容是:1.简单查询操作。

包括投影、选择条件表达,数据排序,使用临时表等。

2.连接查询操作。

包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。

3.在SQL Server查询分析器中,使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。

4.组合查询与统计查询。

(1)分组查询实验。

该实验包括分组条件表达、选择组条件的表达方法。

(2)使用函数查询的实验。

该实验包括统计函数和分组统计函数的使用方法。

(3)组合查询实验。

(4)计算和分组计算查询的实验。

三、[实验方法]1.将查询需求用Transact-SQL语言表示。

2.在SQL Server查询分析器的输入区中输入Transact-SQL查询语句。

3.设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。

4.发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。

5查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。

查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。

图5- 错误!未定义书签。

SQL Server 2000查询分析器查询分析器的界面如图5- 错误!未定义书签。

所示。

在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查询语句;右下方为结果区,用于显示查询结果和分析结果。

实验三 数据库中的数据查询及视图操作实验报告

实验三  数据库中的数据查询及视图操作实验报告

实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。

通过本实验,我们可以掌握使用SQL语句进行数据查询和创建视图的方法,进一步提高对数据库的操作能力。

二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统下进行实验。

三、实验内容本实验主要包括以下内容:1. 数据查询:使用SELECT语句查询数据库中的数据,并进行排序、过滤和聚合操作。

2. 视图操作:创建和删除视图,以及对视图进行查询和更新操作。

四、实验步骤与结果1. 数据查询首先,我们需要连接到数据库,并选择要查询的表。

假设我们选择的表名为"students",包含以下字段:学号、姓名、性别、年龄、班级。

a. 查询所有学生的信息:```sqlSELECT * FROM students;```执行以上SQL语句后,我们可以得到所有学生的信息,包括学号、姓名、性别、年龄和班级。

b. 查询男生的信息:```sqlSELECT * FROM students WHERE 性别 = '男';```执行以上SQL语句后,我们可以得到所有性别为男的学生的信息。

c. 查询年龄小于20岁的学生的姓名和班级:```sqlSELECT 姓名, 班级 FROM students WHERE 年龄 < 20;```执行以上SQL语句后,我们可以得到年龄小于20岁的学生的姓名和班级。

d. 查询学生按照年龄降序排列的结果:```sqlSELECT * FROM students ORDER BY 年龄 DESC;```执行以上SQL语句后,我们可以得到按照年龄降序排列的学生信息。

e. 查询学生按照班级分组,并统计每个班级的人数:```sqlSELECT 班级, COUNT(*) AS 人数 FROM students GROUP BY 班级;```执行以上SQL语句后,我们可以得到每个班级的人数统计结果。

实验三 数据查询

实验三 数据查询

实验三数据查询【实验目的】1.学会使用企业管理器查询数据2.掌握使用SQL语句查询数据【实验内容】1.使用企业管理器进行数据查询2.在查询分析器内使用SQL语句进行数据查询【实验准备】1.复习与本次实验内容相关知识2.复习查询分析器的使用3.对本次实验中要求自己完成的部分做好准备(第二部分,请预先写出来) 【实验步骤】1.用企业管理器进行数据查询o启动企业管理器,注册连接。

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

o在需要查询的表上单击右键,在弹出的快捷菜单中选择"打开表(O)",其下级菜单即为查询命令:▪返回所有行(A) --该命令以网格方式显示指定表的所有记录▪返回首行(T)... --该命令以交互方式输入要返回的行数▪查询(Q) --打开查询窗口,以图形方式设计查询oo请从学生表(U_STUDENTS)上右击,使用"查询(Q)"命令建立一个查询,请选中学号(ID)、姓名(NAME)两个字段,再单击上面的执行按钮(!按钮)执行查询,查看结果。

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

执行该查询,查看结果。

结果如下图所示。

(注意查看SQL窗格内的SQL查询语句)oo该操作实现了从班级表、学生表中查询出所有学生的学号(ID)、姓名(NAME)、班级(CLASS_ID)、所在系(DEPARTMENT)的记录数据。

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

实验3 数据查询

实验3  数据查询

实验3 数据查询数据查询是数据库的核心操作。

在本实验中,我们学习如何使用SELELCT 查询语句实现单表查询、连接查询、嵌套查询、集合查询及相关操作。

实验3.1 单表查询【实验目的】●熟悉SELECT查询语句各个子句的功能。

●掌握使用SELECT查询语句实现单表查询。

【实验内容】●使用SELECT查询语句对学生管理数据库SCT中三张表(Student、Course、SC)进行单表查询。

●对照教材“3.4.1单表查询”中的例题进行练习。

●Into子句的使用。

【实验步骤】(1)编写SQL语句:SSMS→单击工具栏上的“新建查询”按钮→录入SQL语句。

(2)测试SQL语句:单击工具栏上的“分析”按钮或按<Crtl+F5>组合键对当前SQL语句进行测试,如果语句无误,代码区下方会显示“命令已成功完成”,否则显示错误提示信息。

(3)执行SQL语句:单击工具栏上的“执行”按钮或直接按<F5>键即可执行当前SQL语句,并看到执行结果。

(4)对照教材“3.4.1单表查询”中的例题进行练习,从而熟悉SELECT语句各子句的功能。

示例3.1:查询计算机科学系年龄在20岁以下的学生姓名,见图3.1。

示例3.2:查询平均成绩大于等于90分的学生学号和平均成绩,见图3.2。

图3.1 示例3.1执行结果图3.2 示例3.2执行结果(5)Into子句的使用:在SELECT查询语句中使用into子句,可以把查询结果存放到一个新建立的表中。

示例3.3:利用学生表的数据生成一张女生表gilestudent,见图3.3,之后可在“对象资源管理器”窗格中查看新建的gilestudent表。

图3.3 示例3.3执行结果实验3.2 连接查询连接查询可以使用两种语法形式,一种是在from子句中写出所要连接的表名,而连接条件写在where子句中,从而实现表的连接;另一种是ANSI连接形式,即在from子句中使用join…on关键字,连接条件写在on之后,从而实现表的连接。

实验三 数据库的查询

实验三    数据库的查询

实验三数据库的查询一、目的与要求1、掌握数据库对象的操作过程,包括创建、修改、删除2、熟悉表的各种操作,包括插入、修改、删除、查询3、熟练掌握常用SQL 语句的基本语法,加深对SQL和Transact-SQL语言的查询语句的理解。

二、实验设备与环境使用SQL Server 数据库管理系统提供的SSMS 和查询编辑器。

三、实验内容1、创建教材P82中的学生-课程数据库,并创建相应的数据表及完整性约束。

(需要在表中添加相应的记录(10条以上),请自行设计)2、在定义的“学生-课程数据库”中,使用T-SQL语句完成以下查询:(1)求计算机系(CS)学生的学号和姓名。

(2)求选修了数学的学生学号、姓名和成绩。

(3)求选修1号课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

(4)查找选修课程的平均成绩位于前三名的学生的学号。

(5)查询计算机系的姓刘且单名的学生的信息。

(6)查询至少选修两门课程的学生学号。

(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。

(8)查询选修“数据库”课程,且成绩在80分以上的学生的学号和成绩。

(9)查询所有姓“王”的同学没有选修的课程名。

(请分别用exists和in完成该查询)(10)查询选修了全部课程的学生的姓名。

(请至少写出两种查询语句)(11)求选修了学生“200215121”所选修的全部课程的学生学号和姓名。

(12)查询每一门课的间接先修课。

(13)列出所有学生所有可能的选课情况。

(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。

(15)输出与“张立”同性别并位于同一个系的所有同学的姓名。

(请至少写出两种查询语句)(16)查询至少被两名男生选修的课程名。

(17)对被两名以上学生所选修的课程统计每门课的选课人数。

要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列。

实验3数据查询

实验3数据查询

实验3数据查询实验3 数据查询实验目的1、掌握查询语句的基本组成和使用方法;实验内容1、School数据库查询(1) 还原school数据库;RESTORE DATABASE SCHOOL FROM DISK’D:\BACK-UP’;(2) 查询全体学生的信息,将学生按年龄升序排序;SELECT * FROM STUDENTORDER BY SAGE ASC;(3) 查询“信息系”学生的学号,姓名和出生年份;SELECT SNO,SNAME,2016-SAGE AS BIRTH FROM STUDENT WHERE SDEPT=’信息系’;(4) 查询考试不及格的学生的学号;SELECT DISTINCT SNO FROM SCWHERE GRADE<’60’;(5) 查询选修了课程的学生的学号和姓名;SELECT SNO,SNAME FROM STUDENTWHERE SNO IN (SELECT SNO FROM SC )(6) 查询年龄在20-23岁之间的学生的姓名,系,年龄;SELECT SNAME,SDEPT,SAGE FROM STUDENTWHERE SAGE BETWEEN 20 AND 23;(7) 查询同时选修了“计算机导论”,“高等数学”课程的学生的学号,姓名;SELECT * FROM COURSEWHERE CNAME IN(‘高等数学’,’计算机导论’)AND NOT EXISTS(SELECT * FROM SCWHERE SNO=STUDENT.SNO ANDCNO=/doc/3210441014.html,O));(8) 查询姓“张”的学生的基本信息;SELECT * FROM STUDENT ]WHERE SNAME LINKE ‘张%’;(9) 查询选修了课程的学生的总人数;SELECT COUNT(DITINCT SNO) FROM SC;(10) 查询选修了“C05”课程的的学生成绩单,要求输出学号,姓名,成绩,结果按班级升序,成绩降序排列;SELECT SNO,SNAME, GRADE FROM STUDENT,SCWHER E(/doc/3210441014.html,O=’C05’ AND STUDENT.SNO=SC.SNO)ORDER BY LEFT(STUDENT.SNO,5) ASC,GRADE DESC;(11) 统计各门课程的成绩,要求输出课程代号,课程名,平均成绩,选修人数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三数据查询一、实验目的关系数据库的查询语句是SQL语言中最灵活的部分,必须仔细体会,多多上机练习,才能真正体会和理解其中的奥妙和细微差别。

本实验的目的就是让同学们通过练习掌握常用的查询语句和查询技巧。

请同学们反复练习,即使做对了也要抽时间再一次细细体会。

二、实验预习1、SQL中查询语句格式:select[all|distinct]<目标列表达式>[```]fromwheregroup by<列名>[having<条件表达式>]order by<列名>[asc|desc]2、连接查询有哪些不同的连接方式?有什么特点。

等值于非等值连接查询:连接运算符为=号时为等值连接,使用其他运算符称为非等值连接自身连接:连接操作不仅可以在两个表之间进行,也可以在一个表与其自己进行连接外连接:把舍弃的元组也保存在结果关系中,其他属性上填空值复合条件连接:where中使用多个连接谓词三、实验内容和要求在实验二建立的数据库和数据表(Student、SC、Course)的基础上,用SQL语句完成下列查询,并在SQL SERVER中得以验证:1、查询全体学生的基本信息。

(请写出两种方法)select *from student;或select Sno,Sname,Saex,Sage,Sdeptfrom student;2、现需要一个“计算机系”的点名册,点名册上只要学号、姓名、性别三个方面的信息(记得给出别名,好让查询出来的结果容易识别哦)。

Select Sno 学号,Sname 姓名,Ssex 性别From student;3、查询“信息系”学生的学号、姓名和出生年份(起个别名,不然查询出来的结果会很难看,不信你试试看,是不是结果表一点规律都没有?)。

select sno 学号,sname 姓名,2013-Sage 出生年份from studentwhere sdept=’计算机’;4、查询1号课程不及格的学生学号。

查询结果按照考试成绩降序排列。

Select snoFrom scWhere cno=1 and grade<60Order by grade desc;5、查询考试有不及格现象的学生的学号。

Select snoFrom scWhere grade<60;6、查询一下尚有无考试成绩的学生的学号和相应的课程号。

Select sno,cnoFrom scWhere grade=null;7、查询一下哪些学号的学生,选修了课,但还没有参加考试。

Select snoFrom scWhere cno!=null and grade=null;8、将全体学生按年龄升序排序(两种写法)。

Select *From studentOrder by sage desc;或select Sno,Sname,Saex,Sage,Sdeptfrom studentorder by sage;9、将全体学生按照系别升序排序,在系名相同的情况下再按照年龄降序排列。

Select *From studentOrder by sdept,sage desc;10、查询年龄在20-23岁之间的学生的学号、姓名、性别、系别。

查询结果按照系别升序、年龄升序排列。

Select sno,sname,ssex,sdeptFrom studentWhere sage between 20 and 23Order by sdept,sage;11、查询“计算机系”姓“张”的学生的基本信息。

Select *From studentWhere sname like ‘张%’and sdept=’计算机’;12、给0905111班出一个学生点名册。

要求给出学号、姓名、性别几个方面的信息。

(查询结果照学号升序了吗?不然这点名册会有多么那看啊,你自己试试)。

select sno 学号,sname 姓名,ssex 性别from studentorder by sno;13、查询课程名中有“数据库“字样的课程的基本信息。

Select *From courseWhere cname like ‘数据库%’;14、查询选修过课程的学生总人数。

Select count(distinct sno)From sc;15、查询已经选修过课程的学生学号和姓名。

Select sname,sc.snoFrom student,scWhere student.sno=sc.sno;16、查询选修了“数据库原理“这门课程的学生学号、姓名、性别、考试成绩。

将结果按照成绩降序排列。

Select student.sno,sname,ssex,gradeFrom student,sc,courseWhere student.sno=sc.sno and cname='数据库原理' and o=oOrder by grade desc;17、查询0905111班学生的选课情况,要求输出选课人的学号、姓名、课程号、课程名、成绩。

将查询结果按照学号升序排序。

Select student.sno,sname,o,cname,gradeFrom student,course,scWhere student.sno=sc.sno and o=o and left(student.sno,7)=0905111;18、输出选修了“C5“号课程的的学生成绩单,要求输出学号,姓名,成绩。

查询结果按照班级升序、成绩降序排列。

Select student.sno,sname,gradeFrom student,scWhere student.sno=sc.sno and o=’C5’Order by left(student.sno,7),grade desc;19、查询每个学生的学号、对应的平均成绩。

Select student.sno,avg(grade)From student,scWhere student.sno=sc.snoGroup by student.sno;20、查询每个课程号及其对应的选课人数、考试最高分、最低分、平均分。

Select cno 学号,count(distinct sno) 选课人数,max(grade) 最高分,min(grade) 最低分,avg(grade) 平均分From scGroup by cno;21、查询每个学期及其对应的开课门数、总学分。

Select semester 学期,count(cno),sum(ccredit)From course;22、查询每个班的班级号及其对应的班级人数、平均年龄。

提示:可用函数left。

如函数LEFT(Sno,3)表示Sno列的左面数前3个字符串)select left(sno,7),count(sno),avg(sage)from studentgroup by left(sno,7);23、查询不及格门数超过3门的学生学号。

Select snoFrom scWhere grade<60Group by snoHaving count(*)>3;24、查询不及格门数超过3门的学生学号、姓名、性别(2种方法,1班的可在后面嵌套讲完再补第2种方法)。

方法一:Select student.sno,sname,ssexFrom student,scWhere grade<60 and student.sno=sc.snoGroup by student snoHaving count(*)>3;方法二:Select sno,sname,From studentWhere sno in( select snoFrom scGroup by snoWhere count(cno)>3);25、查询平均成绩在75分以上的学生的学号、姓名、所在系。

Select sno,sname,sdeptFrom studentWhere sno in(select snoFrom scGroup by snoWhere avg(grade)>75);26、只统计80分以上的选课情况,查询选修了3门以上的学生学号、选课门数。

Select sno,count(cno)From scWhere grade>80Group by snoHaving count(sno)>3);27、只统计0905111班的同学:查询每门课程的课程号、选修人数、平均成绩。

Select cno,count(sno),avg(grade)From scHaving left(sno,7)=’0905111’;28、只统计0905111班的同学:查询每门课程的课程号、课程名、学分、选修人数、平均成绩。

Select o,cname,ccredit,count(sno),avg(grade)From course left out join sc on (o=o)Group by cnoHaving left(sno,7)=’0905111’29、统计各门课程的成绩,要求输出课程代号,课程名,平均成绩,选修人数。

(成绩为空值的不统计)Select o,cname,avg(grade),count(sno)From sc,courseWhere grade is not null and o=oGroup by cno;30、统计各门课程的不及格人数,要求输出课程代号,课程名,不及格人数。

Select o,cname,count(sno)From sc,courseWhere grade<60 and o=oGroup by cno;31、查询还没有选过任何课程的学生学号、姓名、性别。

Select student.sno,sname,ssexFrom student,scWhere student.sno=sc.sno and cno is null;32、查询选修过1、2号课程的学生学号、姓名、性别。

Select sno,sname,ssexFrom studentWhere sno in(Select snoFrom scWhere cno=’1’ or cno=’2’));33、查询选修了“计算机导论”或“高等数学”课程的学生的学号、姓名。

Select sno,snameFrom studentWhere sno in(Select snoFrom scWhere cno in(Select cnoFrom courseWhere cno=’计算机导论’ 0r cno=’高等数学’)));34、查询既选修了“计算机导论”,又选修了“高等数学”的学生学号、姓名、性别。

相关文档
最新文档