数据库原理实验2数据查询
数据库原理及应用 数据库查询 实验二

《数据库原理及应用》实验报告实验名称数据库查询实验室502 实验日期求选修了课程的学生学号。
Use 学生课程GoSelect 学号from 学生where 学号in (select 学号from where 课程号 is not null)求选修1102课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。
Use 学生课程GoSelect 学号,成绩 from 课程,选课 where 课程.课程号and 课程号=1102 order by 成绩 desc,学号 asc求选修课程1102且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0.8输出。
Use 学生课程GoSelect 学号,成绩*0.8 as 成绩 from选课 where 成绩 between 80 and求数学系或计算机系姓张的学生的信息。
Use 学生课程GoSelect * from 学生,课程,选课 where 学生.学号=选课.学号 and 课程号=课程.课程号and 姓名like ’张%’and (所在系=’数学’在系=’计算机’)求缺少了成绩的学生的学号和课程号。
Use 学生课程GoSelect 学号,课程号 from 选课 where 成绩 is null连接查询实验语句在“学生选课”数据库中实现下列数据连接查询操作。
查询每个学生的情况以及他(她)所选修的课程。
Use 学生课程GoSelect * from 学生,选课,课程 where 学生.学号=选课.学号课程号=课程.课程号求学生的学号、姓名、选修的课程名及成绩。
Use 学生课程GoSelect 学号,姓名,课程名,成绩 from 学生,选课,课程 where学生求选修1105课程且成绩为90分以上的学生学号、姓名及成绩。
Use 学生课程GoSelect 学号,姓名,成绩 from 学生,选课 where 学生.学号=选课and 课程号=1105 and 成绩>90查询每门课的选课人数。
实验二数据库查询

才有权利执行数据操纵语言。
SELECT语句的语法形式如下:
SELECT select_list
[INTO new_table]
FROM table_source [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition]
或Execute to Grid方式。
发布执行命令,查看查询结果;如果结果不正确,进
行修改,直到正确为止。
查询分析器及使用方法
查询分析器是在开发数据库应用系统时使用最多的工
具。查询分析器的主要作用是编辑Transact-SQL,将 其发送到服务器,并将执行结果及分析显示出来(或进 行存储)。
定义的数据类型等。这些对象的创建、修改和删除等
都可以通过使用CREATE、ALTER、DROP等语句来完成。
数据操纵语言(DML)
数据操纵语言是指用来查询、添加、修改和删除数据
库中数据的语句,这些语句包括SELECT、INSERT、 UPDATE、DELETE等。在默认情况下,只有sysadmin、 dbcreator、db_owner或db_datawriter等角色的成员
五、练习
在学生选课库中实现其数据查询操作:
1、求选修C1课程的学生学号和成绩,并要求对查询 结果按成绩的降序排列,如果成绩相同则按学号的升 序排列。 2、求选修课程C1且成绩在80~90分之间的学生学号 和成绩,并将成绩乘以系数0.8输出。 3、求数学系或计算机系姓张的学生的信息。 4、求选修了高等数学的学生学号和姓名。 5、求C1课程的成绩高于张三的学生学号和成绩。 6、求其他系中比计算机系学生年龄都小的学生。
数据库实验二数据查询

实验4 数据查询一、实验目的1.掌握SELECT语句的基本语法和查询条件的表示方法;2.掌握连接查询的表示方法;3.掌握嵌套查询的表示方法;4.掌握数据汇总的方法;5.掌握ORDER BY子句的作用和使用方法;6.掌握HAVING子句的作用和使用方法;二、实验内容使用SELECT查询语句,在数据库StudentCourse的Student表、Course 表和StuCourse 表上进行各种查询,包括单表查询、连接查询、嵌套查询,并进行数据汇总,以及使用GROUP BY子句、ORDER BY子句和HAVING子句对结果进行分组、排序和筛选处理。
1.SELECT语句的基本使用;2.连接查询;3.嵌套查询;4.数据汇总;5.使用GROUP BY 子句对结果分组;6.使用ORDER BY子句对结果排序;7.使用HAVING子句对分组结果进行筛选;思考与练习:1.用SELECT语句查询Course表和StuCourse表中的所有记录。
SQL语句:select * from Course;select * from StuCourse;实验结果:2.用SELECT语句查询Course表和StuCourse表中满足指定条件的一列或若干列。
SQL语句:select 课程号,课程名 from Course where 学分=5;select 学号,课程号 from StuCourse where 成绩>80;实验结果:3.查询所有姓名中包含有“红”的学生的学号及姓名。
SQL语句:select 学号,姓名 from Student where 姓名 like '%红%';实验结果:4.用连接查询的方法查找所有选修了“2001” 或“1002”号课程的学生学号和姓名。
SQL语句:selectdistinct Student.学号,姓名from StuCourse,Studentwhere(课程号='1002'or 课程号='2001')and StuCourse.学号=Student.学号;实验结果:5.用子查询的方法查找所有选修了“2001”或“1002”号课程的学生学号和姓名。
实验2 数据库的简单查询和连接查询实验

实验2 数据库的简单查询和连接查询实验1.实验目的加深对SQL语言的查询语句的理解。
熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
2.实验内容1.简单查询操作。
该实验包括投影、选择条件表达,数据排序,使用临时表等。
具体完成以下题目,将它们转换为SQL语句表示,在学生选课数据库中实现其数据查询操作。
1.查询全体学生的学号和姓名2.查询全体学生的详细记录3.查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名。
4.查询选修了课程的学生学号,去掉结果中的重复行。
5.查询所有年龄在20~23岁之间的学生姓名、系别和年龄。
6.查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别。
7.查询所有姓刘的学生的姓名、学号和性别。
8.查询DB_Design课程的课程号和学分。
9.查询计算机科学系年龄在20岁以下的学生姓名。
10.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
11.计算1号课程的学生最高分数。
12.查询选修了2门以上课程的学生学号。
13.查询缺少了成绩的学生的学号和课程号。
2.连接查询操作。
该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
14.查询每个学生的情况以及他所选修的课程15.求学生的学号、姓名、选修的课程及成绩16.求选修课程号为2且成绩在90以上的学生学号、姓名和成绩17.查询每一门课程的间接先行课(即先行课的先行课)。
数据库原理与应用实验二 复杂的数据查询

实验二复杂的数据查询
一、实验目的
掌握利用select语句进行复杂的数据查询。
二、实验要求
写出实训时碰到的问题以及解决问题的办法,完成本次实训的体会。
三、实验内容
1.检索限选人数小于平均限选人数的课程名称和教师
2.检索班级号为20000003的学生的学号、姓名、班级代码、班级名称
3.检索学生选课为第1志愿(WILLORDER)的学号、姓名、课程号、课程名称
4.按部门统计课程的平均报名人数,要求显示部门名称、平均报名人数。
5.统计各部门的班级数,要求显示部门编号、部门名称和班级数量。
6.查看“00电子商务”版的选修报名情况。
要求显示学号、姓名、课程编号、课程名称、志愿号,并按学号(升序)、志愿号(降序)排列。
7.查看“甘蕾”同学选修的课程名、学分、上课时间、志愿号,按志愿号(升序)排序查询结果。
8.按系部统计各系的最少报名人数、最多报名人数、平均报名人数和报名总数,并汇总显示所有系部的报名总数。
要求平均报名人数保留两位小数位。
四、实验作业
严格按照各题要求做实验,在实训报告中,需要对知识点进行描述,撰写实验过程及过程中遇到的难点,并给出解决办法或新的心得体会。
数据库原理与应用实验二复杂的数据查询

数据库原理与应用实验二复杂的数据查询
实验二复杂的数据查询
一、实验目的
掌握利用select语句进行复杂的数据查询。
二、实验要求
写出实训时碰到的问题以及解决问题的办法,完成本次实训的体会。
三、实验内容
1.检索限选人数小于平均限选人数的课程名称和教师
2.检索班级号为20000003的学生的学号、姓名、班级代码、班级名称
3.检索学生选课为第1志愿(WILLORDER)的学号、姓名、课程号、课程名称
4.按部门统计课程的平均报名人数,要求显示部门名称、平均报名人数。
5.统计各部门的班级数,要求显示部门编号、部门名称和班级数量。
6.查看“00电子商务”版的选修报名情况。
要求显示学号、姓名、课程编号、课程名称、志愿号,并按学号(升序)、志愿号(降序)排列。
7.查看“甘蕾”同学选修的课程名、学分、上课时间、志愿号,按志愿号(升序)排序查询结果。
8.按系部统计各系的最少报名人数、最多报名人数、平均报名人数和报名总数,并汇总显示所有系部的报名总数。
要求平均报名人数保留两位小数位。
四、实验作业
严格按照各题要求做实验,在实训报告中,需要对知识点进行描述,撰写实验过程及过程中遇到的难点,并给出解决办法或新的心得体会。
实验训练2数据查询操作

实验训练2:数据查询操作实验目的:基于实验1创建的汽车用品网上商城数据库Shopping,理解MySQL运算符、函数、谓词,练习Select语句的操作方法。
实验内容:1.单表查询【实验2.1】字段查询(1)查询商品名称为“挡风玻璃”的商品信息。
分析:商品信息存在于商品表,而且商品表中包含商品名称此被查询信息,因此这是只需要涉及一个表就可以完成简单单表查询。
(2)查询ID为1的订单。
分析:所有的订单信息存在于订单表中,而且订单用户ID也存在于此表中,因此这是只需要查询订单表就可以完成的查询。
【实验2.2】多条件查询查询所有促销的价格小于1000的商品信息。
分析:此查询过程包含两个条件,第一个是是否促销,第二个是价格,在商品表中均有此信息,因此这是一个多重条件的查询。
【实验2.3】DISTINCT(1)查询所有对商品ID为1的商品发表过评论的用户ID。
分析:条件和查询对象存在于评论表中,对此商品发表过评论的用户不止一个,而且一个用户可以对此商品发表多个评论,因此,结果需要进行去重,这里使用DISTINCT实现。
(2)查询此汽车用品网上商城会员的创建时间段,1年为一段。
分析:通过用户表可以完成查询,每年可能包含多个会员,如果把此表中的创建年份都列出来会有重复,因此使用DISTINCT去重。
【实验2.4】ORDER BY(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。
分析:从商品表中可以查询出所有类别ID为1的商品信息,结果按照商品ID的降序排列,因此使用ORDER BY语句,降序使用DESC关键字。
(2)查询今年新增的所有会员,结果按照用户名字排序。
分析:在用户表中可以完成查询,创建日期条件设置为今年,此处使用语句ORDER BY。
【实验2.5】GROUP BY(1)查询每个用户的消费总金额(所有订单)。
分析:订单表中包含每个订单的订单总价和用户ID。
现在需要将每个用户的所有订单提取出来分为一类,通过SUM()函数取得总金额。
2021年国家开放大学电大形考实验训练2 数据查询操作

实验内容:1、安装MySQL数据库安装MySQL可以参照文档“MySQL 5安装. doc”,安装MySQL并进行配置,安装成功后,即可操作管理数据库。
.方法一:从开始菜单>MySQL→MySQL Server5. 0 >MySQL Command Line Client,打开控制台界面,提示输入密码,密码输入成功后,登录MySQL数据库,如下图2.1所示方法二:将MySQL的安装路径下的bin目录添加到环境变量path中,打开控制台命令,输入mysq1 - uroot -p,在提示符下输入密码,登录MySQL服务器,如下图2.2所示。
2、安装Navicat for MySQLNavicat for MySQL是一款强大的MySQL数据库管理和开发工具,Navicat使用很好的GUI,可以使用户采用一种安全和更容易的方式创建、组织、存取和共享信息。
安装Navicat for_ _MySQL_ 10.1.7,安装向导启动界面如下图2.3所示。
2.3安装向导界面可以选择系统设置的安装路径,也可以自定义安装路径,点击“安装”按钮,进行安装。
安装完成后启动Navicat,界面显示如图2.4所示连接数据库:点击“连接”按钮连接,打开如下图2.5所示“新建连接”对话框,在“常规”选项卡下重新命名-一个“连接名”,在“密码”后的文本框中输入安装MySQL时设置的密码,点击“连接测试”,如果能够连接到数据库,则会弹出图2.6所示的连接成功提示对话框。
测试连接成功后,点击新建连接对话框中的“确定”按钮,即可连接到MySQL数据库,双击连接名,显示当前连接下的所有的数据甩,双声某个数据库名,即可显示该数据库下的表、视图、函数、事件、查询等信息如图2.7所示,打开scott数据库,有两张表,emp 和userinfo.3、使用SQL命令操作管理数据库使用第- -种或第二二种方法登录数据库,在命令行提示符下,依次输入如下的命令,即完成了scott 数据库中emp表的创建和数据记录的插入操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称数据库原理实验序号 2实验项目数据查询实验地点实验学时实验类型验证性指导教师实验员专业班级学号姓名年月日成绩:A教师该学生本次实验的内容丰富,完成的操作步骤详细具体,实验结果正确,在实验报告的填写中态度十分严谨,对数据分析有自己的见解。
四、实验过程(实验步骤、记录、数据、分析)实验准备:在实验一的基础上(包括数据库的建立、定义表和添加表内容)进行实验,下面分别为depts表、students表、courses表、reports表。
一、简单的选择与投影查询1、无条件查询1.1查询全体学生的详细记录。
这是一个无条件的选择查询,其命令为:其命令为:select * from students运行结果如右图,显示整张表的内容。
1.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(dno)。
这是一个无条件的投影查询,其命令为:select sname,ssexfrom students运行结果如右图,显示了表中的三列。
1.3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。
其命令为:select sno,sname,2017-sage as birth from students运行结果如右图,显示了三列内容。
1.4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。
其命令为:select sname,'birth:' title,YEAR(GETDATE())-sagebirthyear,LOWER(sno) lsnofrom students运行结果如右图,显示了四列内容。
1.5查询选修了课程的学生学号。
其命令为:select distinct snofrom reports运行结果如右图,distinct短语是为了消去查询结果中的重复值。
2、条件查询(1)比较条件1.1查询d03系全体学生的学号(Sno)和姓名(Sname)。
其命令为:select sno,snamefrom studentswhere dno='d03'运行结果如右图,显示了d03系的全体学生姓名与学号。
1.2查询所有年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。
其命令为:select sno,sagefrom studentswhere sage >= 18 and sage <=20运行结果如右图,共有5名在18岁到20岁的学生。
(2)谓语条件2.1查询年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。
其命令为:select sno,sagefrom studentswhere sage between 18 and 20运行结果如右图,结果与比较条件的结果一样。
2.2查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。
其命令为:select sno,sagefrom studentswhere sage not between 18 and 20运行结果如右图,共有2个人不在18岁到20岁之间。
2.3查询系别编号为d01、d02、d03学生的学号(Sno)、姓名(Sname)和性别(Ssex)。
其命令为:select sno,sname,ssexfrom studentswhere dno='d01' or dno='d02' or dno='d03'运行结果如右图,共有6个人。
2.4查询系别编号既不是d01、d02,也不是d03的学生的姓名(Sname)和性别(Ssex)。
其命令为:select sname,ssexfrom studentswhere dno not in('d01','d02','d03')运行结果如右图,因为没有其他系别的学生,因此查询出来的是空表。
2.5查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。
其命令为:select sname,sno,ssexfrom studentswhere sname like '刘%'运行结果如右图,只有一个人姓刘。
2.6查询姓“刘”而且全名不多于3个汉字的学生的姓名(sname)和所在系(dno),其命令为:select sname,dnofrom studentswhere sname like '刘__'运行结果如右图,在英文系统中下横线“_”代表一个英文字符,但在支持汉字的数据库系统中下横线“_”也代表一个汉字,所以匹配串“刘”的后面只需要跟2个“_”(下横线)2.7查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。
其命令为:select sname,sagefrom studentswhere sname not like '刘%'运行结果如右图,5个人不姓刘。
2.8查询课程名为“DB_设计”的课程号(Cno)和学分(Credits)。
其命令为:select cno,creditsfrom courseswhere cname like 'DB\_设计' escape '\'运行结果如右图,ESCAPE‘\’短语表示\为换码字符,这样匹配串中紧跟在\后面的字符“_”不再具有通配符的含义,转义为普通的“”字符。
2.9查询以"DB_"开头,且倒数第2个汉字字符为“设”的课程的详细情况。
其命令为:select *from courseswhere cname like 'DB\_设_' escape '\'运行结果如右图,这里的匹配串为“DB\_%设_。
第1个“_”前面有换码字符“\”,所以它被转义为普通的“_”字符。
由于“%”和“设”字后面的下横线“_”的前面均没有换码字符“\”,所以它们仍作为通配符。
2.10假设某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
试查询缺少成绩的学生的学号(Sno)和相应的课程号(Cno)。
其命令为:select sno,cnofrom reportswhere grade IS NULL运行结果如右图,没有缺少成绩的学生,因此查询结果为空。
IS不能用等号“=”代替,否则不能得到正确的查询结果。
2.11查询所有有成绩的学生学号(Sno)和课程号(Cno)。
其命令为:select sno,cnofrom reportswhere grade is not NULL运行结果如右图,3、查询结果排序3.1查询选修了C03号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。
其命令为:select sno,gradefrom reportswhere cno='c03'order by grade desc运行结果如右图,查询并降序排列。
3.2查询全体学生情况,查询结果按所在系的系别编号(dnot)升序排列,同一系中的学生按年龄(Sage)降序排列。
其命令为:select *from studentsorder by dno,sage desc运行结果如右图3、集函数的使用4.1查询学生总人数。
其命令为:select COUNT(*) renshufrom students运行结果如右图,学生总人数为6人。
4.2查询选修了课程的学生人数。
其命令为:select COUNT( distinct sno) renshufrom reports运行结果如右图,为了避免重复,必须在函数中使用distinct短语。
4.3计算选修C01号课程的学生平均成绩。
其命令为:select A VG(grade) 平均成绩from reportswhere cno='c01'运行结果如右图4.4查询选修C01号课程的学生最高分数。
其命令为:select max(grade) 最高分from reportswhere cno='c01'运行结果如右图4、查询结果分组5.1求各个课程号(Cno)及相应的选课人数。
其命令为:select cno,count(sno) cntsnofrom reportsgroup by cno运行结果如右图5.2查询选修了3门或3门以上课程的学生学号(Sno)。
其命令为:select snofrom reportsgroup by snohaving COUNT(cno) >=3运行结果如右图二、连接查询1、不同表之间的连接查询1.1查询每个学生及其选修课程的情况。
本查询实际上是涉及Students与Reports两个表的连接操作。
这两个表之间的联系是通过公共属性Sno实现的,因此,其操作命令为:select students.*,reports.*from students,reportswhere students.sno=reports.sno运行结果如右图1.2查询每个学生的学号(Sno)、姓名(Sname)、选修的课程名(Cname)及成绩(Grade)。
本查询涉及到三个表的连接操作,完成该查询的SQL语句如下:select students.sno,sname,cname,grade,dnamefrom students,reports,courses,deptswhere students.sno = reports.sno ando = oand students.dno = depts.dno运行结果如右图2、自身连接2.1查询每一门课的间接先修课(即先修课的先修课)。
在Courses表关系中,只有每门课的直接先修课信息,而没有先修课的先修课。
要得到这个信息,必须先对一门课找到其先修课,再按此先修课的课程号,查找它的先修课程。
这就需要要将Courses表与其自身连接。
为方便连接运算,这里为Courses表取两个别名分别为A,B。
则完成该查询的SQL语句为:select o,ame,B.Pre_Cnofrom courses A,courses BWHERE A.Pre_Cno = o运行结果如右图3、外连接把连接查询中1.2中的等值连接改为左连接。
该左连接操作在SQL Server 2000中的命令格式为:selectstudents.sno,sname,ssex,sage,dno,cno,gradefrom students,reportswhere students.sno =reports.sno运行结果如右图三、嵌套查询1、带谓词IN的嵌套查询1.1查询选修了编号为“C02”的课程的学生姓名(Sname)和所在系别编号(dno)。