数据库实验四 查询

合集下载

数据库原理实验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 图书的价格汇总分析
  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七、总结及心得体会:选择较之以前很复杂八、对本实验过程及方法、手段的改进建议:教师评语及成绩指导教师签名年月日。

相关文档
最新文档