数据库实验四 查询

合集下载

数据库原理实验4多表查询

数据库原理实验4多表查询

数据库原理实验4多表查询实验四多表查询1 实验目的与要求(1) 熟练掌握SQL语句的使用。

(2) 熟练使用SQL语句进行连接操作。

2 实验内容(1) 找出同一天进入公司效劳的员工。

(2) 查找与“陈诗杰〞在同一个单位工作的员工姓名、性别、部门和职务。

(3) 在Employee表中查询薪水超过员工平均薪水的员工信息。

(4) 查找有销售记录的客户编号、名称和订单总额。

(5) 查询没有订购商品的客户编号和客户名称。

(6) 使用子查询查找32M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男〞、“女〞表示。

(7) 查询OrderMaster表中订单金额最高的订单号及订单金额。

(8) 在订单主表中查询订单金额大于“E2022002业务员在2022-1-9这天所接的任一张订单的金额〞的所有订单信息。

(9) 查询单价高于400元的商品编号、商品名称、订货数量和订货单价。

(10) 分别使用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商品名称、订货数量和订货单价,并分析比拟检索的结果。

(11) 使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额,其中订货日期不要显示时间,日期格式为“yyyy-mm-dd〞,按客户编号排序,同一客户再按订单金额降序排序输出。

(12) 查找每个员工的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期,其中性别使用“男〞和“女〞表示,日期使用“yyyy-mm-dd〞格式显示。

(13) 查找16M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男〞、“女〞表示。

(14) 找出公司男业务员所接且订单金额超过2000元的订单号及订单金额。

(15) 查询每种商品的总销售数量及总销售金额,要求显示出商品编号、商品名称、总数量及总金额,并按商品号从小到大排列。

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。

二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。

了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。

三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带IN谓词的子查询1.查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') and sname<>'刘晨' 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2.查询选修了课程名为’信息系统’的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in (select sno from sc where cno in(select cno from course where cname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (select sno from sc where cno='1')and sno in (select sno from sc where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。

数据库实验 数据查询

数据库实验  数据查询

内容一简单SELECT 语句一.实验目的1. 观察查询结果, 体会SELECT语句实际应用;2. 要求学生能够在查询分析器中使用SELECT语句进行简单查询。

3. 熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

二.实验内容1.简单查询操作对EDUC数据库实现以下查询:(1)求计算机系的学生学号和姓名(2)求选修了课程的学生学号;(3)求选修C1 课程的学生学号和成绩,并要求对查询结果按成绩降序序排列,如果成绩相同则按学号的升序排列;(4)求选修课程C1 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;(5)求计算机系和数学系的姓张的学生的信息(6)求缺少了成绩的学生的学号和课程号。

(7)将2000以后的成绩大于90分的学生成绩存入永久成绩表;将2000年以前的成绩存入临时成绩表中2.连接查询操作(1)查询每个学生的情况以及他(她)所选修的课程;(2)求学生的学号、姓名、选修的课程名及成绩;(3)求选修C1 课程且成绩在90 分以上的学生学号、姓名及成绩;(4)查询每一门课的间接先行课。

三.实验步骤(详细)1.简单查询操作此部分查询包括投影、选择条件表达、数据排序、使用临时表等。

①求计算机系的学生学号和姓名;SELECT sno,snameFROM studentWHERE dno=’计算机’①求选修了课程的学生学号;代码:SELECT DISTINCT snoFROM student_course③求选修C1 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;④求选修课程C1 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;⑤求计算机系和数学系的姓张的学生的信息⑥求缺少了成绩的学生的学号和课程号。

⑦将2000以后的成绩大于90分的学生成绩存入永久成绩表;将2000年以前的成绩存入临时成绩表中。

数据库实验四-查询

数据库实验四-查询

华中科技大学《数据库技术与应用》实验报告专业班级:学生姓名:学号:实验地点:指导教师:实验日期时间:一、实验项目名称:数据查询二、实验学时:三、实验目的:1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。

2.掌握使用SELECT语句进行条件查询的方法。

3.掌握嵌套查询的方法。

4.掌握多表查询的方法。

5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。

四、实验工具或环境一台装有SQL sever2008的计算机五、实验内容、步骤、代码和结果:0. 创建studentsdb数据库及其相应表,并录入数据。

在SQL Server管理平台上,点击“新建查询”打开查询编辑器窗口,复制粘贴附件“创建数据库代码”中的代码到查询编辑器窗口,运行即可生成相关数据库和表,并有相应的数据。

1.在studentsdb数据库中,使用下列SQL语句将输出什么?(1)SELECT COUNT(*) FROM grade(2)SELECT SUBSTRING(姓名,1,2) FROM student_info(3)SELECT UPPER('kelly')(4)SELECT Replicate('kelly',3)(5)SELECT SQRT(分数) FROM grade WHERE 分数>=85(6)SELECT 2,3,POWER(2,3) 选做(7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())2.在studentsdb数据库中使用SELECT语句进行基本查询。

(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。

(2)查询学号为0002的学生的姓名和家庭住址。

select姓名,家庭住址from student_info where学号='0002'(3)找出所有男同学的学号和姓名。

数据库查询实训报告

数据库查询实训报告

实训三模糊查询应用【实训目的】熟悉ACCESS的模糊智能查询参数、数据库表之间关系的作用及应用,掌握模糊查询的使用方法,学会分析、综合应用各类函数解决实际需求。

【实训内容】从库中查找数据完成以下课堂任务:5.找出名字带“良”字教职工的办公楼6. 统计在求索楼办公的女同胞数7.请查出数学教得好的教师性别、年龄、职称与奖金【实训要求】1.分析要求2.编写相应的T-SQL语句3.通过系统查询,找出相应的数据,并将结果截图4.所编SQL语句的优化【实训分析指导】1.多个数据来源表的使用情况(基表、虚表)2.数据筛选的函数,注意“通配符”的使用。

3.拟展示的数据的项目(参数、项目)。

4.如何发挥“关系”的价值。

5.所编写SQL语句的拓展功能(应用的扩展、联系)【实训资料及准备】见课例【实训问题及解答】备注:表格空间不足可续页或另附页实训四参数查询应用【实训目的】熟悉ACCESS参数查询的设计方法、并结合各类函数进行查询的设计方法,学会分析需求、结合模糊查询等进行综合应用解决实际问题。

【实训内容】从库中查找数据完成以下课堂任务:8.根据姓名查询他所授课的授课效果;9. 根据教工编号或部分姓名查询他所上课程的授课门数、学时总数;10. 统计奖金在指定范围的已婚人士都在哪些部门【实训要求】1.分析要求2.编写相应的T-SQL语句3.通过系统查询,找出相应的数据,并将结果截图【实训分析指导】1.分析题目需求2. 考虑各类问题的分解3. 分布重点5.所编写SQL语句的实际应用(窗体)【实训资料及准备】见课例【实训问题及解答】备注:表格空间不足可续页或另附页。

数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]

数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]

实验4 SQL 语言——SELECT 查询操作1实实验验44 S S Q Q L L 语语言言————S S E E L L E E C C T T 查查询询操操作作实验示例实验示例中要使用包括如下三个表的“教学管理”数据库JXGL :(1)学生表Student ,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:Student(Sno,Sname,Ssex,Sage,Sdept),其中主码为Sno 。

(2)课程表Course ,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:Course(Cno,Cname,Cpno,Ccredit),其中主码为Cno 。

(3)学生选课SC ,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:SC(Sno,Cno,Grade),其中主码为(SNO,CNO)。

1、在SQL SERVER 查询分析器或企业管理器(以具有相应操作权限的某用户登录)的SQL 操作窗口中执行如下命令创建数据库。

需要说明的是不同数据库系统其创建数据库的命令或方式有所不同。

CREATE DATABASE JXGL2、刷新数据库目录后,选择新出现的JXGL 数据库,在SQL 操作窗口中,创建Student 、SC 、Course 三表及表记录插入命令如下:Create Table Student( Sno CHAR(5) NOT NULL PRIMARY KEY(Sno),Sname VARCHAR(20),Sage SMALLINT CHECK(Sage>=15 AND Sage<=45),Ssex CHAR(2) DEFAULT '男' CHECK (Ssex='男' OR Ssex='女'),Sdept CHAR(2));Create Table Course( Cno CHAR(2) NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),Cpno CHAR(2),Ccredit SMALLINT);Create Table SC( Sno CHAR(5) NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(2) NOT NULL,Grade SMALLINT CHECK ((Grade IS NULL) OR (Grade BETWEEN 0 AND 100)),PRIMARY KEY(Sno,Cno),数据库原理与应用实验指导2FOREIGN KEY(Cno) REFERENCES Course(Cno));INSERT INTO Student VALUES('98001','钱横',18,'男','CS');INSERT INTO Student VALUES('98002','王林',19,'女','CS');INSERT INTO Student VALUES('98003','李民',20,'男','IS');INSERT INTO Student VALUES('98004','赵三',16,'女','MA');INSERT INTO Course VALUES('1','数据库系统', '5',4);INSERT INTO Course VALUES('2','数学分析',null ,2);INSERT INTO Course VALUES('3','信息系统导论','1',3);INSERT INTO Course VALUES('4','操作系统原理','6',3);INSERT INTO Course VALUES('5','数据结构','7',4);INSERT INTO Course VALUES('6','数据处理基础',null,4);INSERT INTO Course VALUES('7','C 语言','6',3);INSERT INTO SC VALUES('98001','1',87);INSERT INTO SC VALUES('98001','2',67);INSERT INTO SC VALUES('98001','3',90);INSERT INTO SC VALUES('98002','2',95);INSERT INTO SC VALUES('98002','3',88);[例1] 查考试成绩大于等于90的学生的学号。

实验四表数据的简单查询

实验四表数据的简单查询

实验四表数据的简单查询实验学时:1学时实验类型:设计实验要求:必做一、实验目的掌握SELECT语句的基本用法。

掌握计算列的用法。

掌握WHERE子句中各类查询条件的写法。

二、实验内容1、在连接“MySQL”中新建数据库“world”,并将数据库文件world_inno.sql导入到该数据库之中2、查询world数据库的country表中的国名(Name)、洲名(Continent)和地区(Region)。

步骤:点击“新建查询”,输入以下代码,点击执行USE worldSELECT NAME,Continent,Region FROM country;运行结果如图2.1:图2.13、从world数据库的city表中搜索返回前20条的数据。

步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT * FROM city LIMIT 0,20;其中,“LIMIT M,N”中的M表示从第M条(不包括M)开始结果如图3.1:图3.14、使用WHERE 子句从world 数据库的country表中检索出所有领土面积超过一百万平方公里的国家名称(Name)、洲名(Continent)以及领土面积(SurfaceArea)。

步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT NAME,Continent,SurfaceAreaFROM countryWHERE SurfaceArea > 1000000;结果如图4.1:图4.15、查询在world数据库的country表中Name以字母C开头的国家的洲名Continent,地区Region。

步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT Name,Continent,RegionFROM countryWHERE NAME like 'C%';运行结果如图5.1:图5.16、查询world数据库Country表中所有国家的Name和Condinent,并按生日SurfaceArea 从小到大进行排列。

《数据库与信息系统》实验4指导解析_1-3

《数据库与信息系统》实验4指导解析_1-3
“起始位置”指定从哪一条记录开始;记录数表示显示记录的条数。
⚫ 格式 2:LIMIT 记录数 表示从第一条记录开始显示“记录数”的记录。如果“记录数”小于或者等于查询结果的记录
总数,那么将从第一条记录开始,显示指定条数的记录。如果“记录数”大于查询结果的记录总数, 数据库会直接显示查询出来的所有记录。
2
图 4.4 2009 年以后出版的少儿类图书(部分结果)
解析:Where 子句可以使用 year()函数从出版日期(PublishDate)字段中取得年份数据,其值为整型。 如果直接使用日期型的常量做比较,日期型常量要按照'年-月-日'完整结构来写,并且使用单引号括 起来,例如'2009-01-01 '。 参考语句:
要注意数据表名 Order 与关键字 Order 相同,在查询语句中可以使用完整的数据表名:
3
bookstore.`order`或者将数据库 bookstore 设置为当前数据库,然后在查询语句中使用单引号将 order 括起来。 参考语句: Select OrderCode, OrderTime, OrderStatus From bookstore.`orders` LIMIT 3; 或: USE bookstore; Select OrderCode, OrderTime, OrderStatus From `orders` LIMIT 3; (7)查询 TotalPrice 在 100~200 元之间的订单信息,部分结果如图 4.7 所示。
From Book;
(2)进行图书的价格汇总分析,分别显示图书的最高价、最低价、平均价、最高价与最低价的 差值,结果如图 4.11 所示。
图 4.11 图书的价格汇总分析

实验4 数据库的查询

实验4 数据库的查询

实验4 数据库的查询一、实验目的1.掌握SELECT语句的基本用法2.掌握子查询的表示3.掌握连接查询的表示4.掌握SELECT语句的GEOUP BY子句的作用和使用方法5.掌握SELECT语句的ORDER BY子句的作用和使用方法二、实验准备1.了解SELECT语句的基本语法格式2.了解SELECT语句执行方法3.了解子查询的表示方法4.了解查询的表示方法5.了解SELECT语句的GROUP BY子句的作用和使用方法6.了解SELECT语句的ORDER BY子句的作用7.了解SELECT语句的LIMIT子句的作用三、实验内容及要求1.SELECT语句的基本使用1)用SELECT语句查询Departmrnts表的所有记录。

2)用SELECT语句查询Salary表的所有记录。

3)用SELECT语句查询Departments表的部门号和部门名称列。

4)查询Employees表中部门号和性别,要求使用DISTINCT消除重复行。

5)查询月收入高于2000的员工号码。

6)查询所有1970以后出生的员工的姓名和住址。

7)查询所有财务部门的员工号码和姓名。

8)查询Empoyees表中男员工的姓名和出生日期,要求个列标题用中文表示。

9)查询Employees员工的姓名住址和收入水平,2000以下的显示为低收入,2000-3000的显示为中等收入,3000以上的显示为高收入。

10)计算Salary表中员工月收入的平均数。

11)获得Employees表中的最大的员工号码。

12)计算Salary表中所有员工的总支出。

13)查询财务部官员的最高和最低实际收入。

14)找出所有其地址含有“中山”的雇员的号码及部门号。

15)查找员工号码中倒数第二个数字为0的姓名、地址和学历。

16)找出所有部门“1”或“2”工作的雇员的号码。

2.子查询的使用1)用子查询的方法查找所有收入在2500以下的雇员的情况。

2)用子查询的方法查找研发部比财务部所有雇员收入都高的雇员的姓名。

数据库实验4 数据查询

数据库实验4 数据查询

实验4:数据查询1.实验目的:熟练掌握SQL SELECT语句,能够运用该语句完成各种查询。

2.实验要求:熟练掌握SQL SELECT语句,完成各个实验的内容,能够举一反三,灵活运用,能够通过本章介绍的一些基本语句,构造各种各样的查询。

3.实验环境与实验器材:实验环境:计算机,网络环境,投影设备。

实验相关软件:Window XP、SQL Server 2000。

4. 实验内容与步骤本实验通过使用Transact-SQL语句,对已经建立的数据库进行查询操作。

4.1 查询指定字段编写select语句,显示“学生档案表”中的学号、姓名、籍贯、专业以及班级字段。

第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select 学号,姓名,籍贯,专业,班级from 学生档案表如图:第二步:单击“SQL查询分析器”界面上部的绿色三角形“执行查询”按钮,查询对话框下半部分显示查询结果,如图:4.2 通配符“*”的使用编写select语句,显示“学生选课表”中的所有字段。

第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select * from 学生选课表如图:查询对话框下半部分显示查询结果,如图:4.3 基于字段的表达式在学生档案表中,按“XXXX年XX月XX日”的格式显示出生日期。

使用year 函数从“出生日期”字段中取得年份数据,再使用str函数将数值型的年份数据转换成字符型,最后使用“+”将字符串拼接起来。

第一步:打开“SQL查询分析器”,在界面上方选中“教学管理”数据库,在查询窗口编写如下语句:select 学号,姓名,性别,str(year(出生日期),4)+'年'+str(month(出生日期),2)+'月'+str(day(出生日期),2)+'日' as 出生日期from 学生档案表如图:查询对话框下半部分显示查询结果,如图:4.4 用WHERE子句过滤记录在学生档案表中查询所有出生日期在“1983-01-01”至“1984-12-31”之间的所有学生的信息。

数据库实验卡4-数据库多表高级查询

数据库实验卡4-数据库多表高级查询

天津师范大学软件学院数据库原理实践课程实验卡实验序号: 4 实验室名称:计信学院实验室实验名称数据库的高级查询实验类型验证计划学时 2 人组数 1 首开日期面向专业(逐个填写)主要配置仪器设备名称设备规格型号每组台件数1.计算机 12.投影仪 1消耗材料名称每组消耗量消耗材料名称每组消耗量实验项目简介实验目的:通过上机实验验证数据库的多表的高级查询。

实验内容:1、将studentw数据库还原。

2、在studentw数据库中,完成以下单表查询的操作,将每一个程序保存为.sql。

(1)查询选了Java课程的学生的学号、姓名、所在系和成绩,并对所在系进行如下处理:“计算机系”:显示“CW”;“信息管理系”:显示“IM”;“通信工程系”:显示“COM”,查询结果存入新表w1。

(2)查询“C001”课程的考试情况,列出学号和成绩,对成绩进行如下处理:如果成绩大于等于90,则在查询结果中显示“优”;如果成绩在80到89分之间,则在查询结果中显示“良”;如果成绩在70到79分之间,则在查询结果中显示“中”;如果成绩在60到69分之间,则在查询结果中显示“及格”;如果成绩小于60分,则在查询结果中显示“不及格”,查询结果存入新表w2。

(3)统计每个学生的考试平均成绩,列出学号、考试平均成绩和考试情况,其中考试情况的处理为:如果平均成绩大于等于90,则考试情况为“好”;如果平均成绩在80~89,则考试情况为“比较好”;如果平均成绩在70~79,则考试情况为“一般”;如果平均成绩在60~69,则考试情况为“不太好”;如果平均成绩低于60,则考试情况为“比较差”,查询结果存入新表w3。

(4)统计计算机系每个学生的选课门数,包括没有选课的学生。

列出学号、选课门数和选课情况,其中对选课情况的处理为:如果选课门数超过4,则选课情况为“多”;如果选课门数在2~4,则选课情况为“一般”;如果选课门数少于2,则选课情况为“少”;如果学生没有选课,则选课情况为“未选”。

SQL_Server实用教程(第三版)实验4_数据库的查询和视图

SQL_Server实用教程(第三版)实验4_数据库的查询和视图

实验四数据库的查询和视图T4.1 数据库的查询1.目的与要求(1)掌握select语句的基本语法;(2)掌握子查询的表示(3)掌握连接查询的表示(4)掌握select语句的group by子句的作用和使用方法(5)掌握select语句的order by子句的作用和使用方法2 实验准备(1)了解SELECT语句的基本语法格式;(2)了解SELECT语句的执行方法;(3)了解子查询的表示方法;(4)了解连接查询的表示;(5)了解SELECT语句的GROUPBY子句的作用和使用方法;(6)了解SELECT语句的ORDERBY子句的作用;3实验内容SELECT语句的基本使用。

①对于实验2给出的数据库表结构,查询每个雇员的所有数据。

新建一个查询,在查询分析器中输入如下语句并执行:USEYGGLGOSELECT *FROM Employees【思考与练习】用SELECT语句查询Departments和Salary表中所有的数据信息。

用SELECT语句查询Employees表中每个雇员的地址和电话。

新建一个查询,在查询分析器中输入如下语句并执行:Use YGGLGOSELECT Address PhoneNumberFROM Employees【思考与练习】a.用SELECT语句查询Deparments和Salary表的一列或若干列。

b.查询Employees表中的部门号和性别,要求使用DISTINCT消除重复行。

c.查询EmployeeID为000001的雇员的地址和电话。

Use YGGLGOSELECT Address PhoneNumberFROM EmployeesWHERE EmployeeID=’000001’【思考与练习】a.查询月收入高于2000元的员工号码。

b.查询1970年以后出生的员工的姓名和住址。

c.查询所有财务部的员工的号码和姓名。

查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。

数据库实验报告复杂查询

数据库实验报告复杂查询

实验五复杂查询1 实验目的与要求(1) 熟练掌握SQL语句的使用。

(2) 熟练使用SQL语句进行连接操作。

2 实验内容(1) 在订单明细表中查询订单金额最高的订单。

实验脚本:实验结果图-1 (1)查询结果(2) 找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。

实验脚本:实验结果图-2 (2)查询结果(3) 查找销售总额少于5000元的销售员编号、姓名和销售额。

实验脚本:实验结果图-3 (3)查询结果(4) 找出目前业绩未超过5000元的员工,并按销售业绩的降序排序输出。

实验结果图-4 (4)查询结果(5) 查询订购的商品数量没有超过10个的客户编号和客户名称。

实验结果图-5 (5)查询结果(6) 查找订货金额最大的客户名称和总货款。

实验脚本:实验结果:图-6 (6)查询结果(7) 查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额。

实验结果:图-7 (7)查询结果(8) 找出目前销售业绩超过4000元的业务员编号及销售业绩,并按销售业绩从大到小排序。

实验脚本:实验结果:图-8 (8)查询结果(9) 求每位客户订购的每种商品的总数量及平均单价,并按客户号、商品号从小到大排列。

实验结果:图-9 (9)查询结果(10) 查询业绩最好的的业务员号、业务员名及其总销售金额。

实验脚本:实验结果:图-10 (10)查询结果(11) 查询订购的商品至少包含了订单“200803010001”中所订购商品的订单。

实验结果:图-11 (11)查询结果(12) 查询总订购金额超过“C20070002”客户的总订购金额的客户号、客户名及其住址。

图-12 (12)查询结果(13) 查询总销售金额最高的销售员编号、订单编号、订单日期和订单金额。

实验脚本:图-13 (13)查询结果(14) 用存在量词查找没有订货记录的客户名称。

实验脚本:图-14 (14)查询结果(15) 查询既订购了“52倍速光驱”商品,又订购了“17寸显示器”商品的客户编号、订单编号和订单金额。

数据库的查询实验实验报告

数据库的查询实验实验报告
values('g9940305','孙彦巧','g99404')
因为班级号g99404在class表中不存在,由于class_id的外键约束,插入不成功,结果截屏如下:
图六
4、删除教师表中的所有数据,验证参照完整性约束;
使用Transact-SQL代码删除如下:
delete
from[dbo].[teacher]
使用sa用户访问操作,在student表中新增一条条目的实验截图如下:
图十五
如上图,新增条目的操作成功。
然后使用Transcat-SQL语句更改数据代码如下:
update[dbo].[student]
setstudent_name='彦巧'
wherestudent_name='孙彦巧'
实验截图如下:
执行结果如下:
图二
原因是student_course表中有如下的数据,表中的course_id在course表中不存在。
图三
从表中删除这两组数据之后,设置外键则可以成功。
2、向学生表插入具有相同学号的数据,验证其实体完整性约束;
Student表中原有数据如下:
图四
使用Transact-SQL语句插入如下:
grantselectonstudenttoshihexp
grantselectonstudent_coursetoshihexp
grantselectonteachertoshihexp
grantselectonteacher_course_classtoshihexp
使用企业管理器操作的实验截图如下:
数据库的查询实验
——实验报告

SQLSERVER2008实用教程实验参考答案解析(实验4)

SQLSERVER2008实用教程实验参考答案解析(实验4)

SQLSERVER2008实用教程实验参考答案解析(实验4)实验4 数据库的查询和视图一、SELECT语句的基本使用1. 查询Employees表中所有数据2. 查询Employees表中指定字段数据3. 查询Employees表中的部门号和性别,要求使用Distinct消除重复行4. 使用WHERE子句查询表中指定的数据查询编号为’000001’的雇员的地址和查询月收入高于2000元的员工查询1970年以后出生的员工的和住址5. 使用AS子句为表中字段指定别名查询Employees表中女雇员的地址和,并将列标题显示为地址和查询Employees表中男雇员的和出生日期,并将列标题显示为和出生日期6. 使用使用CASE子句查询Employees表中员工的和性别,要求Sex值为1时显示“男”,为0时显示“女”查询Employees表中员工的、住址和收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。

7. 使用SELECT语句进行简单计算计算每个雇员的实际收入8. 使用置函数获得员工总数计算Salary表中员工月收入的平均数获得Employees表中最大的员工计算Salary表中所有员工的总支出查询财务部雇员的最高和最低实际收入9. 模糊查询找出所有姓王的雇员的部门号找出所有地址中含有“”的雇员的及部门号找出员工中倒数第二个数字为0的员工的、地址和学历10. Between…And…和Or的使用找出收入在2000~3000元之间的雇员编号找出部门为“1”或“2”的雇员的编号11. 使用INTO子句,由源表创建新表由表Salary创建“SalaryNew”表,要求包括编号和收入,选择收入在1500元以上的雇员由表Employees创建“EmployeesNew”表,要求包括编号和,选择所有男员工二、子查询的使用1. 查找在财务部工作的雇员情况2. 用子查询的方法查找所有收入在2500以下的雇员的情况3. 查找财务部年龄不低于研发部雇员年龄的雇员4. 用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的5. 查找比所有财务部的雇员收入都高的雇员的6. 用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的三、连接查询的使用1. 查询每个雇员的情况及薪水的情况2. 查询每个雇员的情况及其工作部门的情况3. 使用连接的方法查询名字为“王林”的雇员所在的部门4. 使用连接的方法查找出不在财务部工作的所有雇员信息5. 使用外连接方法查找出所有员工的月收入6. 查找财务部收入在2000元以上的雇员及其薪水详情7. 查询研发部在1976年以前出生的雇员及其薪水详请四、聚合函数的使用1. 求财务部雇员的平均收入2. 查询财务部雇员的最高和最低收入3. 求财务部雇员的平均实际收入4. 查询财务部雇员的最高和最低实际收入5. 求财务部雇员的总人数6. 统计财务部收入在2500元以上的雇员人数五、GROUP BY、ORDER BY子句的使用1. 查找Employees表中男性和女性的人数2. 按部门列出在该部门工作的员工的人数3. 按员工的学历分组,排列出本科、大专、硕士的人数4. 查找员工数超过2的部门名称和雇员数量5. 按员工的工作年份分组,统计各个工作年份的人数,例如工作1年的多少人,工作2年的多少人6. 将雇员的情况按收入由低到高排列7. 将员工信息按出生时间从小到大排列8. 在ORDER BY 子句中使用子查询,查询员工、性别和工龄信息,要求按实际收入从大到小排列六、视图的使用1. 创建视图(1)在数据库YGGL上创建视图Departments_View,视图包含Department表的全部列(2)创建视图Employees_Departments_View,视图包含员工、、所在部门名称(3)创建视图Employees_Salary_View,视图包含员工、和实际收入三列2. 查询视图从视图Employees_Salary_View中查询出为“王林”的员工的实际收入3. 更新视图(1)向视图Departments_View中添加一条记录(‘6’,‘广告部’,‘广告业务’)执行完命令后,分别查看Departments_View和Department表中发生的变化(2)尝试向Employees_Departments_View中添加一条记录,看看会发生什么情况(3)尝试向Employees_Salary_View中添加一条记录,看看会发生什么情况(4)将视图Departments_View中,部门号为‘6’的部门名称修改为‘生产车间’(5)删除视图Departments_View中最新增加的的一条记录4. 删除视图Employees_Departments_View5. 在界面工具中操作视图一、SELECT语句的基本使用1. 查询Employees表中所有数据SELECT*FROM Employees;2. 查询Employees表中指定字段数据SELECT EmployeeID,Name,DepartmentID FROM Employees;3. 查询Employees表中的部门号和性别,要求使用Distinct消除重复行SELECT Distinct DepartmentID,Sex FROM Employees;4. 使用WHERE子句查询表中指定的数据查询编号为’000001’的雇员的地址和Select Address,PhoneNumber FROM Employees WHERE EmployeeID='000001';查询月收入高于2000元的员工SELECT EmployeeID FROM Salary WHERE InCome>2000;查询1970年以后出生的员工的和住址SELECT Name,Address FROM Employees WHERE YEAR(Birthday)>'1970';SELECT Name,Address FROM Employees WHERE Birthday>'1970';5. 使用AS子句为表中字段指定别名查询Employees表中女雇员的地址和,并将列标题显示为地址和SELECT Address AS地址,PhoneNumber AS FROM Employees;查询Employees表中男雇员的和出生日期,并将列标题显示为和出生日期SELECT Name AS,Birthday AS出生日期FROM Employees WHERE Sex=1;6. 使用使用CASE子句查询Employees表中员工的和性别,要求Sex值为1时显示“男”,为0时显示“女”SELECT Name AS,CASEWHEN Sex=1 THEN'男'WHEN Sex=0 THEN'女'ENDAS性别FROM Employees;查询Employees表中员工的、住址和收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。

数据库原理与应用 数据库查询操作

数据库原理与应用 数据库查询操作
ConstraintCcredit_FKForeignKey(Cpno)ReferencesCourse(Cno)
自连接查询
例如:查询学生中年龄相同的学生情况。
SELECTA.Sno,A.Sname,A.Ssex,A.Sage,A.Sdept
FROMStudentAJOINStudentBONA.Sno!=B.SnoANDA.Sage=B.Sage
注意:在自然连接时,对数表必须使用别名。且本题中用自连接时必须指明条件:A.Sno!= B.Sno不然的话会出现很多重名的无用结果。
INTOGradeList
FROMStudentA,SC
WHEREA.Sno=SC.Sno
GROUPBYA.Sno,Sname,Ssex
HAVING(SUM(SC.Grade)>=200)
这句语句的语义是:将Student表中的Sno,Ssex和把SUM值作为新的数据项,存放到GradeList表中,且存放的数据需满足SUM(SC.Grade >= 200)。
2.在FROM子句中用JOIN连接符指定连接条件
例如:查询所有有2号t.Sno,Sname,Grade
FROMStudentINNERJOINSCONStudent.Sno=SC.Sno
WHERECno=2
非等值连接查询
在等值连接条件中不使用等号,而使用其他比较运算符,这就构成了非等值连接查询,可以使用的比较运算度有:> >= < <= !=还可以使用BETWEEN……AND之类的谓词。
SELECTTOP (200) Sno,Sname,Ssex, Sage,Sdept
FROMStudent
③:学习和使用QBE查询

数据库实验4表的查询操作(4学时)

数据库实验4表的查询操作(4学时)

1 实验四表的查询操作(4学时)【实验目的】了解SQL 语言的使用,进一步理解关系运算,巩固数据库的基础知识。

【实验要求】掌握利用Select 语句进行各种查询操作:单表查询、多表连接及查询、嵌套查询、集合查询等。

【实验内容】在实验三创建并插入数据的表(Student ,Course ,SC ,Teacher ,TC )的基础上,完成以下操作。

1.对实验步骤中所给示例进行验证。

2.参考所给示例,完成下列各种查询操作。

(1)将教师‘罗莉’的名字改为‘罗莉莉’。

(2)将两个同学(数据自己临时设置,用后即删除)的两门课程的成绩以运行sql 程序文件的形式插入score 表中。

该题用以验证、理解和掌握关系模型的完整性规则;(3)求每门课的平均成绩,并把结果存入average 表(自行设计并创建);(4)将学生“马丽”的年龄改为2424;;(5)将所有学生的zipcode 属性列值填补上;(6)将average 表中的所有课程的平均成绩置零;(7)删除average 表中的课程号为‘表中的课程号为‘c007c007c007’的平均成绩记录;’的平均成绩记录;(8)删除所有average 表中平均成绩记录;(9)建立一个临时学生信息表()建立一个临时学生信息表(tstudent tstudent tstudent)),删除该表中的学号含‘101’的所有学生记录。

(1010)查询全体学生的学号与姓名;)查询全体学生的学号与姓名;(1111)查询全体学生的学号、姓名、所属系;)查询全体学生的学号、姓名、所属系;(1212)查询全体学生的详细记录;)查询全体学生的详细记录;(1313)查询全体学生的姓名及其年龄;)查询全体学生的姓名及其年龄;(1414)查询全体学生的姓名、出生年份;)查询全体学生的姓名、出生年份;(1515)查询所有修过课的学生的学号;)查询所有修过课的学生的学号;(1616)查询“计算机系”班全体学生名单;)查询“计算机系”班全体学生名单;(1717)查询查询所有年龄在)查询查询所有年龄在23岁以下的学生姓名及其年龄;(1818)查询考试成绩有不及格的学生的学号;)查询考试成绩有不及格的学生的学号;(1919)查询年龄在)查询年龄在20至22岁之间的学生姓名、系和年龄;(2020)查询年龄不在)查询年龄不在20至22岁之间的学生姓名、系和年龄;(2121)查询“)查询“计算机系”和“电商系”的学生的姓名;(2222)查询既不是“计)查询既不是“计1111”也不是“计”也不是“计6161”班的学生的姓名和班级信息;”班的学生的姓名和班级信息;(2323)查询学号为“)查询学号为“04262002”的学生的详细情况;(2424)查询学号以“)查询学号以“04262”打头的学生信息;(2525)查询所有姓“张”学生的学号、姓名、性别、年龄;)查询所有姓“张”学生的学号、姓名、性别、年龄;(2626)查询名字中第二个字有“海”字的学生的学号、姓名、性别、年龄;)查询名字中第二个字有“海”字的学生的学号、姓名、性别、年龄;(2727)查询所有不姓“刘”学生的姓名;)查询所有不姓“刘”学生的姓名;(2828)查询课程号以“)查询课程号以“C ”开头的最后两个字母为“”开头的最后两个字母为“050505”的课程号和课程名;”的课程号和课程名;(2929)某些学生选修某门课程后没有参加考试,所以有选修课记录,但没有考试成绩,)某些学生选修某门课程后没有参加考试,所以有选修课记录,但没有考试成绩,试查找缺少考试成绩的学生和相应的课程号;(3030)查找全部有成绩记录的学生学号、课程号;)查找全部有成绩记录的学生学号、课程号;(3131)查找“计算机系”年龄在)查找“计算机系”年龄在22岁以下的学生学号、姓名;(3232)查找选修了“)查找选修了“)查找选修了“C001C001C001”号课程的学生学号及其成绩,查询结果按分数降序排序;”号课程的学生学号及其成绩,查询结果按分数降序排序;(3333))查询全体学生情况,查询全体学生情况,查询结果按所在系升序排列,查询结果按所在系升序排列,查询结果按所在系升序排列,对同一系中的学生按年龄降序对同一系中的学生按年龄降序排列;(3434)查询学生总人数;)查询学生总人数;)查询学生总人数;(3535)查询选修了课程的学生人数;)查询选修了课程的学生人数;)查询选修了课程的学生人数;(3636)在所有课程中查询最高分的学生学号和成绩;)在所有课程中查询最高分的学生学号和成绩;)在所有课程中查询最高分的学生学号和成绩;(3737)查询学习“)查询学习“)查询学习“C001C001C001”课程的学生最高分数;”课程的学生最高分数;”课程的学生最高分数;(3838)计算各个课程号与相应的选课人数;)计算各个课程号与相应的选课人数;)计算各个课程号与相应的选课人数;(3939)查询“计算机系”选修了两门课程以上的学生学号、姓名;)查询“计算机系”选修了两门课程以上的学生学号、姓名;)查询“计算机系”选修了两门课程以上的学生学号、姓名;(4040)自然连接)自然连接student 和score 表;表; (4141)使用自身连接查询每一门课程的间接先行课(即先行课的先行课))使用自身连接查询每一门课程的间接先行课(即先行课的先行课))使用自身连接查询每一门课程的间接先行课(即先行课的先行课)(4242)使用复合条件连接查询选修“)使用复合条件连接查询选修“)使用复合条件连接查询选修“c001c001c001”号课程且成绩在”号课程且成绩在90分以上的所有同学;分以上的所有同学;(4343)使用复合条件连接查询每个学生选修的课程名及其成绩;)使用复合条件连接查询每个学生选修的课程名及其成绩;)使用复合条件连接查询每个学生选修的课程名及其成绩;(4444)查询选修了全部课程的学生;)查询选修了全部课程的学生;)查询选修了全部课程的学生;(4545)查询所有选修了)查询所有选修了C001号课程的学生学号、姓名;号课程的学生学号、姓名;(4646)查询选修了课程)查询选修了课程C001或c007的学生学号、姓名;的学生学号、姓名;(4747)查询“计算机系”的学生及年龄不大于)查询“计算机系”的学生及年龄不大于23岁的学生;岁的学生;(4848)查询既选修了课程)查询既选修了课程C001又选修了课程c007的所有学生学号、姓名;的所有学生学号、姓名;(4949)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;)查询选修了课程名为“数据库原理”的学生的学号、姓名、性别、年龄;(5050)查询其他班中比“计算机系”所有学生年龄都小的学生名单;)查询其他班中比“计算机系”所有学生年龄都小的学生名单;)查询其他班中比“计算机系”所有学生年龄都小的学生名单;(5151)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;)查询与“夏天”在同一个系学习的学生学号、姓名、性别、年龄;(5252)建立“计算机系”学生的视图)建立“计算机系”学生的视图1;(5353)建立“计算机系”学生的视图)建立“计算机系”学生的视图2,并要求进行修改与插入时,仍须保证该视图只有“计算机系”班学生;有“计算机系”班学生;(54)建立“计算机系”选修了“C001”课程的学生的视图,定义视图名为“v_cs_C001_student1v_cs_C001_student1””; (5555)建立“计算机系”班选修了“)建立“计算机系”班选修了“)建立“计算机系”班选修了“C001C001C001”课程且成绩在”课程且成绩在90分以上的学生的视图,定义视图名为“义视图名为“cs_c001_student2cs_c001_student2cs_c001_student2””; (5656)定义一个反映学生年龄的视图,定义视图名为“)定义一个反映学生年龄的视图,定义视图名为“)定义一个反映学生年龄的视图,定义视图名为“v_birth_student v_birth_student v_birth_student””; (5757)将学生表中所有女生记录定义为一个视图,视图名为“)将学生表中所有女生记录定义为一个视图,视图名为“)将学生表中所有女生记录定义为一个视图,视图名为“v_female_student v_female_student v_female_student””; (5858)将学生的学号及其平均成绩定义为一个视图,视图名为“)将学生的学号及其平均成绩定义为一个视图,视图名为“)将学生的学号及其平均成绩定义为一个视图,视图名为“v_average_student v_average_student v_average_student””; (5959)在“计算机系”学生视图中找出年龄小于)在“计算机系”学生视图中找出年龄小于22岁的学生;岁的学生;(6060)利用视图查询“计算机系”选修了“)利用视图查询“计算机系”选修了“)利用视图查询“计算机系”选修了“C001C001C001”课程的学生;”课程的学生;”课程的学生;(6161)通过()通过()通过(525252)中的“计算机系”视图修改某个学生的名字;)中的“计算机系”视图修改某个学生的名字;)中的“计算机系”视图修改某个学生的名字;(6262)通过()通过()通过(535353)中的“计算机系”视图,插入一个新学生记录。

数据库 实验4 简单查询(1)

数据库  实验4 简单查询(1)

实验四简单查询(1)
一、实验目的与要求:
掌握简单查询的语句。

二、实验内容
1、根据SPJ数据库和学生-课程数据库来进行简单查询
三、实验指导
1、将原有的数据库文件——学生-课程.mdf、学生-课程.ldf,复制到D盘
根目录下,然后附加到对象资源管理器中
2、根据书上例题完成以下查询
(1)查询课程表的所有信息
(2)查询课程名及其学分
(3)查询学生姓名及其出生年份,出生年份的别名为“出生年份”
(4)查询被学生选修的课程的课程名
3、使用SPJ数据库完成以下查询:
(1)查询零件的颜色有哪些(不重复)
(2)查询零件的所有信息
(3)查询供应商的名称及所在地
4、将相关语句及截图保存到word文档中,命名为完整学号+姓名,上传作业。

实验四 数据库的查询实验

实验四 数据库的查询实验

实验四数据库的查询实验(两次内容)一、实验要求1.简单查询:(1)查询班号为g00401班的学生的学号和姓名;(2) 查询“数据库开发技术”课程的学分;(3) 查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;(4) 查询学号为“g9940205”的学生选修的课程编号和成绩;(5) 查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。

2.在多表连接的查询实验中,用Transact SQL语句完成以下查询操作:(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;(2)查询所有学生的学号、姓名、选修的课程名称和成绩;(3)查询计算机科学系林红同学选修的课程名称、学分和成绩。

(考试成绩>=60有学分,否则无学分。

)3.在复杂查询实验中,用Transact SQL语句完成以下查询操作:(1)查询至少选修了三门课程的学生的学号和姓名;(2)查询选修课程号为“dep04_b001”的学生的平均成绩;(3)查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。

(4)查询严为老师2001/2002学年教的软件开发技术课程的最高成绩及此学生的学号、姓名、班级。

(5)查询数据库开发技术课程用过的教材名称,作者和出版社。

(6)查询计算机科学系讲授过数据库开发技术的老师姓名和职称。

4.在嵌套查询实验中,用Transact SQL语句完成以下查询操作,要求写嵌套查询语句:(1)查询选修了电磁波工程的学生的学号和姓名;(2)查询没有选修电磁波工程的学生的学号和姓名;(3)查询至少选修了学号为“g9940201”的学生所选修的所有课程的学生的学号和姓名。

5.建立如下视图:学生选修课程信息视图,包括以下内容:1)学生学号、姓名、所在系、授课老师姓名、课程名称、课程教材名称、出版社、学分、选课成绩2)修改以上视图,增加学生所在班级信息。

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

华中科技大学《数据库技术与应用》实验报告专业班级:学生姓名:学号:实验地点:指导教师:实验日期时间:一、实验项目名称:数据查询二、实验学时:三、实验目的:1.掌握使用Transact-SQL的SELECT语句进行基本查询的方法。

2.掌握使用SELECT语句进行条件查询的方法。

3.掌握嵌套查询的方法。

4.掌握多表查询的方法。

5.掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。

四、实验工具或环境一台装有SQL sever2008的计算机五、实验内容、步骤、代码和结果:0. 创建studentsdb数据库及其相应表,并录入数据。

在SQL Server管理平台上,点击“新建查询”打开查询编辑器窗口,复制粘贴附件“创建数据库代码”中的代码到查询编辑器窗口,运行即可生成相关数据库和表,并有相应的数据。

1.在studentsdb数据库中,使用下列SQL语句将输出什么?(1)SELECT COUNT(*) FROM grade(2)SELECT SUBSTRING(姓名,1,2) FROM student_info(3)SELECT UPPER('kelly')(4)SELECT Replicate('kelly',3)(5)SELECT SQRT(分数) FROM grade WHERE 分数>=85(6)SELECT 2,3,POWER(2,3) 选做(7)SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())2.在studentsdb数据库中使用SELECT语句进行基本查询。

(1)在student_info表中,查询每个学生的学号、姓名、出生日期信息。

(2)查询学号为0002的学生的姓名和家庭住址。

select姓名,家庭住址from student_info where学号='0002'(3)找出所有男同学的学号和姓名。

select姓名,家庭住址from student_info where性别='男'3.使用SELECT语句进行条件查询(1)在grade表中查找分数在80~90分为内的学生的学号和分数。

select学号,分数from grade where分数>='80'and分数<='90'(2)在grade表中查询课程编号为0003的学生的平均分。

select AVG(分数)as平均分from grade where课程编号='0003'(3)在grade表中查询学习各门课程的人数select COUNT(*)from grade(4)将学生按出生日期由大到小排序。

select学号,姓名,出生日期from student_info order by出生日期,学号desc(5)查询所有姓“张”的学生的学号和姓名。

SELECT学号,姓名FROM student_info WHERE姓名LIKE'张%'4.对student_info表,按性别顺序列出学生的学号、姓名、性别、出生日期及家庭住址,性别相同的按学号由小到大排序。

select学号,姓名,性别,出生日期,家庭住址from student_info order by student_info.性别,学号asc5.使用GROUP BY查询子句列出各个学生的平均成绩。

select a.学号,a.姓名,AVG(b.分数)as平均成绩from studentsdb.dbo.student_info a inner joingrade bon a.学号=b.学号group by a.姓名,a.学号6.使用UNION运算符将student_info表中姓“刘”的学生的学号、姓名与姓“张”的学生的学号、姓名返回在一个表中,如图4-1所示。

图 4-1select学号,姓名from studentsdb.dbo.student_info where姓名like'刘%'union allselect学号,姓名from studentsdb.dbo.student_info where姓名like'张%7.嵌套查询(1)在student_info表中查找与“刘卫平”性别相同的所有学生的姓名、出生日期。

select姓名,出生日期from studentsdb.dbo.student_info where性别=(select性别from student_info where姓名='刘卫平')(2)使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。

select学号,姓名,性别from studentsdb.dbo.student_infowhere学号in(select学号from grade where课程编号='0002'or课程编号='0005')(3)列出学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。

select课程编号,分数from gradewhere学号='0001'and分数>(select MIN(分数)from gradewhere学号='0002')(4)列出学号为0001的学生的分数比0002的学生的最高成绩还要高的课程编号和分数。

select课程编号,分数from gradewhere学号='0001'and分数>(select max(分数)from gradewhere学号='0002')8.多表查询(1)查询分数在80~90范围内的学生的学号、姓名、分数。

SELECT student_info.学号,姓名,分数FROM student_info,gradeWHERE student_info.学号=grade.学号 AND 分数 BETWEEN 80 AND 90(2)查询学习“C语言程序设计”课程的学生的学号、姓名、分数。

SELECT student_info.学号,姓名,分数FROM student_info inner join grade on student_info.学号=grade.学号where课程编号=(select课程编号from curriculum where课程名称='C语言程序设计')(3)查询所有男同学的选课情况,要求列出学号、姓名、课程名称、分数。

SELECT student_info.学号,姓名,curriculum.课程名称,分数FROM student_info,grade,curriculumwhere性别='男'and student_info.学号=grade.学号and curriculum.课程编号=grade.课程编号(4)查询每门课程的最高成绩,要求列出课程编号、分数。

USE studentsdbSELECT DISTINCT student_info.学号,姓名,课程编号,分数FROM grade,student_infoWHERE student_info.学号=grade.学号AND分数=(SELECT MAX(分数)FROM grade WHERE student_info.学号=grade.学号)(5)查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。

提示:使用左外连接。

select student_info.学号,姓名,sum(分数)as总成绩from student_info left outer join grade on student_info.学号=grade.学号group by student_info.学号,姓名(6)为grade表添加数据行:学号0004、课程编号为0006、成绩为76。

查询所有课程的选修情况,要求列出课程编号、课程名称、选修人数,curriculum表中没有的课程列值为空。

提示:使用右外连接。

goinsert studentsdb.dbo.grade(学号,课程编号,分数)values('0004','0006','76');select grade.课程编号,课程名称,count(*)from studentsdb.dbo.curriculumright outer join studentsdb.dbo.grade on grade.课程编号=curriculum.课程编号group by grade.课程编号,课程名称六、实验思考1.查询所有没有选修课程的学生信息,返回结果包括学号、姓名、性别。

select学号,姓名,性别from studentsdb.dbo.student_info where学号not in(select学号from studentsdb.dbo.grade)2.在student_info表和grade表之间实现交叉连接。

select*from studentsdb.dbo.student_info a cross joinstudentsdb.dbo.grade3.查询每个学生的所选课程的成绩,并列出学号生成分组汇总行(总成绩)和明细行(各课成绩)。

select学号,分数from studentsdb.dbo.grade order by学号compute sum(分数)by学号提示:使用SELECT语句的COMPUTE选项。

4.在查询语句中SELECT、FROM和WHERE选项分别实现什么运算?投影,选择,自然连接6.在查询的FROM子句中实现表与表之间的连接有哪几种方式?对应的关键字分别是什么?内连接inner join 外链接left outer right outer交叉链接cross join七、总结及心得体会:选择较之以前很复杂八、对本实验过程及方法、手段的改进建议:教师评语及成绩指导教师签名年月日。

相关文档
最新文档