实验2-数据查询的简单操作
- 格式:doc
- 大小:45.00 KB
- 文档页数:4
数据库查询实验报告数据库查询实验报告一、引言数据库查询是数据库管理系统中的重要功能之一,通过查询可以从数据库中获取所需的信息。
本实验旨在通过实际操作,掌握数据库查询的基本方法和技巧,并对查询结果进行分析和解读。
二、实验环境本次实验使用的是MySQL数据库管理系统,该系统具有广泛的应用和较好的稳定性。
实验所需的数据表包括学生表(student)、课程表(course)和成绩表(score)。
三、实验步骤1. 创建数据库和数据表首先,在MySQL中创建一个名为"学生成绩管理系统"的数据库,并创建三个数据表:student、course和score。
其中,student表包含学生的学号、姓名、性别等信息;course表包含课程的编号、名称、学分等信息;score表包含学生的学号、课程编号和成绩等信息。
2. 插入测试数据为了进行查询实验,需要向数据表中插入一些测试数据。
通过INSERT语句,向student表中插入若干学生信息;向course表中插入若干课程信息;向score表中插入若干学生成绩信息。
3. 执行查询语句根据实验要求,设计不同的查询语句,包括简单查询、条件查询、多表连接查询等。
通过执行这些查询语句,可以从数据库中获取所需的信息。
4. 分析查询结果根据查询结果,对数据进行分析和解读。
可以通过统计、排序、分组等方式,对数据进行进一步处理和展示。
例如,可以统计每个学生的平均成绩,对学生成绩进行排名等。
四、实验结果与分析通过实验,我们得到了一些有关学生成绩的查询结果。
根据这些结果,我们可以得出以下结论:1. 学生A的平均成绩为80分,居于全班第一名;2. 课程B的平均成绩最高,为85分;3. 学生C在课程A和课程B中都取得了优异的成绩。
五、实验总结本次实验通过数据库查询的实际操作,使我们对数据库查询的基本方法和技巧有了更深入的了解。
同时,通过对查询结果的分析和解读,我们也对数据有了更全面的认识。
实验二数据库的查询实验实验目的和要求(1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。
(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
实验内容和原理在实验一定义的“学生成绩数据库”中,使用T-SQL 语句完成以下查询:(1 )求计算机系学生的学号和姓名。
(2)求选修了数学的学生学号、姓名和成绩。
(3)求选修01 课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
(4)查找选修课程的平均成绩位于前三名的学生的学号。
(5)查询计算机系的姓刘且单名的学生的信息。
(6)查询至少选修两门课程的学生学号。
(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。
(8)查询选修“数据库”课程,且成绩在80 分以上的学生的学号和成绩。
(9)查询所有姓“王”的同学没有选修的课程名。
(请分别用exists和in完成该查询) (10)查询选修了全部课程的学生的姓名。
(请至少写出两种查询语句)(11)求选修了学生“ 95001”所选修的全部课程的学生学号和姓名。
(12)查询每一门课的间接先修课。
(13)列出所有学生所有可能的选课情况。
(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。
(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。
(请至少写出两种查询语句)(16)查询至少被两名男生选修的课程名。
(17)对被两名以上学生所选修的课程统计每门课的选课人数。
要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列。
(18)列出选修课程超过 3 门的学生姓名及选修门数。
(19)检索至少选修课程号为01 和03 的学生姓名。
(20)检索至少选修课程“数学”和“操作系统”的学生学号。
(21 )查询‘操作系统'课程的最高分的学生的姓名、性别、所在系(22)查询数据结构的成绩低于操作系统的成绩的学生姓名及该生的这两门课的成绩(23)所有成绩都在70 分以上的学生姓名及所在系。
一、实验目的1. 熟悉数据库查询的基本概念和操作方法。
2. 掌握SQL语言中SELECT语句的使用,包括基本查询、条件查询、排序查询、分组查询和子查询等。
3. 提高数据库查询的实际操作能力,为后续课程学习和实践打下基础。
二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 数据库:实验数据库(包含学生信息、课程信息、成绩信息等)三、实验步骤1. 登录数据库管理系统打开MySQL命令行客户端,输入用户名和密码登录数据库管理系统。
2. 创建实验数据库在MySQL命令行客户端中,创建一个名为“实验数据库”的数据库。
```sqlCREATE DATABASE 实验数据库;```3. 创建数据表在“实验数据库”中,创建以下数据表:(1)学生信息表(student)```sqlCREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,gender VARCHAR(10),class_id INT);```(2)课程信息表(course)```sqlCREATE TABLE course (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),credit INT);```(3)成绩信息表(score)```sqlCREATE TABLE score (id INT PRIMARY KEY AUTO_INCREMENT,student_id INT,course_id INT,score INT,FOREIGN KEY (student_id) REFERENCES student(id), FOREIGN KEY (course_id) REFERENCES course(id) );```4. 插入数据向数据表中插入一些数据,以供查询使用。
课下实验2-数据查询课后实验2、查询数据库-学生选课系统一、导入学生选课系统数据库JXGL(jxgl.sql)二、JXGL数据库介绍●Students(sno, sname,class,ssex,bday,bplace,mgrade,photo,sfzh,zxf)该表是学生基本信息表其中:sno-学号,sname-姓名,class-班级,ssex-性别,bday-出生日期,bplace-籍贯,mgrade-入学成绩,photo-照片,sfzh-身份证号码,zxf-总学分●Course(cno,cname,cpno,credit)该表是课程情况表其中:cno-课程号,cname-课程名称,cpno-先修课程号,credit—学分●SC(term,sno,cno,grade,point)该表是学生选课成绩表其中:term-学期,sno-学号,cno-课程号,grade-成绩,point-绩点●TC(term,class,cno,tno,period)该表是教师上课情况表其中:list—序号,term-学期;class-班级;cno-课程号;tno-教师编号;period-学时●Teachers (tno,tname,ps,wday,dept,pay,marry,tel,resume)该表是教师基本情况表:其中t no-教师编号;tname-教师姓名;ps-职称;wday-入校日期;dept-系别;pay-工资;marry-婚否;tel—联系电话;resume-简历三、在JXGL数据库中完成以下查询。
(1)查询03物流1学生的详细信息(2)查询“入学成绩”在350到400分之间的学生的姓名和班级(3)查询students表中现有的班级(要求查询结果中班级名称不要重复)(4)查询具有“教授”或“副教授”职称的教师的教师编号和姓名(5)查询姓“陈”,且籍贯是“宁波”的学生的姓名,出生日期,入学成绩(6)查询students表中“09级”的学生信息(7)查询姓名中包含“菲”字的学生的学号、姓名、性别、班级(8)查询教师上课情况表中还没有安排好上课教师的班级和对应的课程号(9)查询全体学生情况,查询结果按所在班级名升序排列,同一班级中的学生按出生日期降序排列(10)统计03物流1班学生“入学成绩”的平均分、最高分、最低分(11)统计students表中的学生人数(12)统计各个班级的学生人数,按统计结果做降序排列(13)统计各门课程的平均成绩,结果显示课程号和平均成绩(14)查询平均成绩80以上的课程编号(15)查询平均成绩75分以上的学生的学号(16)查询教师人数在5人以上的学院,查询结果显示学院名称和教师人数,查询结果按教师人数作降序排列(17)查询选修了课程学生的学号、姓名、所选课程号、课程名称以及取得的成绩(18)查询选修了‘计算机基础’这门课程的学生的学号、姓名、班级、成绩(19)查询和“刘涛”在一个班级的学生的信息思考:可以用什么方法完成本次查询?(20)查询没有选修过任何课程的学生的信息(学号、姓名、班级)思考:还可以用什么方法完成本次查询?(21)查询教师“姚明”给哪些班级上课?(22)查询教师“姚明”上哪些课程,要求查询结果包含课程编号和课程名称?(23)查询学号为“0311102”学生选修所有课程的平均分和总学分(24)查询其他班中比“03计算应用1”所有学生入学成绩高的学生的姓名和入学成绩(25)查询选课门数等于或大于2门的学生的平均成绩和选课门数(26)查询“计算机基础”这门课程的平均成绩(27)查询选修了“0000027”课程,且成绩高于此课程平均成绩的学生的学号和获得的成绩(28)查询既选修了“计算机基础”或者选修了“C语言基础”的学生的学号(29)查询既选修了“计算机基础”又选修了“C语言基础”的学生的学号(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系的全体学生姓名与学号。
实验训练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()函数取得总金额。
数据查询实验1. 实验目的本实验旨在通过实践的方式,帮助学生掌握数据查询的基本概念和方法,提高其数据查询与分析能力。
2. 实验环境本实验需要使用以下工具和环境:•数据库管理系统(DBMS)•SQL查询语言•Markdown编辑器3. 实验步骤3.1 创建数据库首先,我们需要创建一个数据库来存放我们的数据。
可以使用任何一种数据库管理系统来完成这个步骤,比如MySQL、SQLite等。
在此假设我们使用MySQL作为例子。
打开MySQL客户端,运行以下命令来创建一个新的数据库:CREATE DATABASE数据库名;3.2 创建数据表接下来,我们需要创建一个数据表用于存放数据。
数据表是用来组织和存储数据的基本单位。
在本次实验中,我们将创建一个简单的学生信息表。
首先,我们需要切换到我们刚刚创建的数据库,然后运行以下命令来创建数据表:USE数据库名;CREATE TABLE学生 (学号INT PRIMARY KEY,姓名VARCHAR(20),年龄INT,性别VARCHAR(2),成绩FLOAT);3.3 插入数据在数据表创建完成之后,接下来我们需要向数据表中插入一些数据。
运行以下命令来插入数据:INSERT INTO学生 (学号, 姓名, 年龄, 性别, 成绩) VALUES(1, '张三', 20, '男', 90),(2, '李四', 21, '女', 85),(3, '王五', 19, '男', 95),(4, '赵六', 22, '女', 88);3.4 查询数据完成数据的插入之后,我们可以开始进行数据查询操作了。
运行以下命令来查询学生表中的所有数据:SELECT*FROM学生;3.5 数据分析除了简单的数据查询之外,我们还可以进行一些数据分析操作。
例如,可以运行以下命令来计算学生的平均成绩:SELECT AVG(成绩) FROM学生;同时,我们还可以使用一些其他的SQL函数和运算符来进行更加复杂的数据分析操作。
实验内容: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表的创建和数据记录的插入操作。
实验2数据库的简单查询
一、实验目的
掌握单表查询中各个子句(Select、From、Where、Group、Having、Order)的用法,特别要掌握比较运算符和逻辑运算符的使用。
二、实验环境
Windows XP操作系统,SQL Server 2005软件。
三、实验课时
2课时。
四、实验内容
在已建立的数据库和数据表的基础上,用Select语句完成下列查询操作。
1、查询全体学生的学号和姓名。
SELECT sno,sname
FROM student;
2、查询全体学生的所有基本信息(仅针对Student表)。
SELECT*
FROM student;
3、对SC表查询全体学生的选课记录,在显示结果中为“Grade”列增加5分。
SELECT sno,cno,grade=grade+5
FROM sc;
4、查询全体学生的学号和姓名,将原来的英文列名设置中文别名。
SELECT sno AS学号,sname AS姓名
FROM student;
5、显示所有选课学生的学号,去掉重复结果。
SELECT DISTINCT sno
FROM sc;
6、查询成绩在80分以上的学生选课记录。
SELECT*
FROM sc
WHERE grade>80;
7、查询经济系所有学生的学号和姓名。
SELECT sno,sname
FROM student
WHERE sdept='经济';
8、查询成绩在80~90分的学生选课记录。
SELECT*
FROM sc
WHERE grade BETWEEN 80 AND 90;
9、查询年龄不在22~25的学生记录。
SELECT*
FROM student
WHERE sage NOT BETWEEN 22 AND 25;
10、查询所有姓“刘”的学生记录。
SELECT*
FROM student
WHERE sname LIKE'刘%';
11、查询无考试成绩(成绩为空值)的学号、课程号。
SELECT sno,cno
FROM sc
WHERE grade IS NULL;
12、查询考试成绩非空值的学号、课程号。
SELECT sno,cno
FROM sc
WHERE grade IS NOT NULL;
13、查询数学系年龄小于20岁的学生记录。
SELECT*
FROM student
WHERE sdept='数学'AND sage<20;
14、查询选修了“101”或“102”课程的选课记录。
SELECT*
FROM sc
WHERE cno in('101','102');
15、查询学生总人数。
SELECT COUNT(DISTINCT sno)总人数
FROM student;
或者:
SELECT COUNT(*)总人数
FROM student;
16、查询选修了课程的学生人数。
SELECT COUNT(DISTINCT sno)人数
FROM sc;
17、查询选修了“101”课程的学生的平均成绩。
SELECT AVG(grade)avg
FROM sc
WHERE cno='101';
18、查询学号为“01003”的学生的考试总成绩。
SELECT SUM(grade)总成绩
FROM sc
WHERE sno='01003';
19、查询“101”课程的最高分和最低分。
SELECT MAX(grade)最高分,MIN(grade)最低分
FROM sc
WHERE cno='101';
20、查询每门课程的选课人数。
SELECT cno,COUNT(sno)人数
FROM sc
GROUP BY cno
21、查询每个学生的学号、选课数、平均成绩和总成绩。
SELECT sno,COUNT(cno)选课数,AVG(grade)avg,SUM(grade)SUM FROM sc
GROUP BY sno;
22、查询选课数超过2的学生学号及其选课数。
SELECT sno,COUNT(cno)选课数
FROM sc
GROUP BY sno
HAVING COUNT(*)>2;
23、查询所有学生信息,查询结果按年龄降序排列。
(针对Student表操作)SELECT*
FROM student
ORDER BY sage DESC;
24、查询所有学生信息,查询结果按系名升序,同系学生按年龄降序排列。
SELECT*
FROM student
ORDER BY sdept,sage DESC;
25、查询选课数超过2的学生学号及其选课数,查询结果按选课数降序排列。
SELECT sno,COUNT(cno)选课数
FROM sc
GROUP BY sno
HAVING COUNT(*)>2
ORDER BY COUNT(cno)DESC;。