实验:数据库单表查询

合集下载

数据库查询实验报告

数据库查询实验报告

数据库查询实验报告数据库查询实验报告一、引言数据库查询是数据库管理系统中的重要功能之一,通过查询可以从数据库中获取所需的信息。

本实验旨在通过实际操作,掌握数据库查询的基本方法和技巧,并对查询结果进行分析和解读。

二、实验环境本次实验使用的是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.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件表达式和使用方法;3.掌握GROUP BY 子句的作用和使用方法;4.掌握HAVING子句的作用和使用方法;5.掌握ORDER BY子句的作用和使用方法。

二、实验环境已安装SQL Server 2005 企业版的计算机;具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解数据库查询;2.了解数据库查询的实现方式;3.完成实验报告;五、实验内容及步骤以《实验:管理SQL Server表数据》数据库中数据为基础,请使用T-SQL 语句实现以下操作:1.列出所有不姓刘的所有学生;GOselect*from studentwhere sname not like'刘%'2.列出姓‚沈‛且全名为3个汉字的学生;USE studentGOselect*from studentwhere sname like'王_[^ ]'3.显示在1985年以后出生的学生的基本信息;GOselect*from studentwhere sage<(year(getdate())-1985)4.按照‚性别、学号、姓名、年龄、院系‛的顺序列出学生信息,其中性别按以下规定显示:性别为男显示为男生,性别为女显示为女生,其他显示为‚条件不明‛;USE studentGOselect ssex=case ssexwhen'男'then'男生'when'女'then'女生'else'条件不明'end,sno,sname,sage,sdeptfrom student5.查询出课程名含有‚数据‛字串的所有课程基本信息;USE studentGOselect*from coursewhere cname like'%数据%'6.显示学号第八位或者第九位是1、2、3、4或者9的学生的学号、姓名、性别、年龄及院系;USE studentGOselect sno,sname,ssex,sage,sdept from studentwhere sno like'_______[1-4,9]%'or sno like'________[1-4,9]'7.列出选修了‘1’课程的学生,按成绩的降序排列;USE studentGOselect student.sno,sname,ssex,sage,sdept,grade from student,scwhere cno=1 and student.sno=sc.snoorder by grade DESCGO8.列出同时选修‚1‛号课程和‚2‛号课程的所有学生的学号;USE studentGOselect a.sno from sc a,sc bwhere o=1 and o=2 and a.sno=b.sno9.列出课程表中全部信息,按先修课的升序排列;USE studentgoselect*from courseorder by cpno ASCGo10.列出年龄超过平均值的所有学生名单,按年龄的降序显示;USE studentgoselect*from studentwhere sage>(select avg(sage)from student)order by sage DESC11.按照出生年份升序显示所有学生的学号、姓名、性别、出生年份及院系,在结果集中列标题分别指定为‚学号,姓名,性别,出生年份,院系‛;USE studentgoselect sno 学号,sname 姓名,ssex 性别,(year(getdate())-sage)出生年份,sdept 院系from studentorder by(year(getdate())-sage)ASC12.按照院系降序显示所有学生的‚院系,学号、姓名、性别、年龄‛等信息,其中院系按照以下规定显示:院系为CS显示为计算机系,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明;USE studentgoselect院系=case sdeptwhen'CS'then'计算机系'when'IS'then'信息系'when'MA'then'数学系'when'EN'then'外语系'when'CM'then'中医系'when'WM'then'西医系'else'院系不明'end, sno 学号,sname 姓名,ssex 性别,sage 年龄from studentorder by sdept DESC13.显示所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段‚院系规模‛,其中若该院系人数>=5则该字段值为‚规模很大‛,若该院系人数大于等于4小于5则该字段值为‚规模一般‛,若该院系人数大于等于2小于4则该字段值为‚规模稍小‛,否则显示‚规模很小‛;USE studentgoselect distinct'院系'=sdept,'院系规模'=casewhen count(*)>=5 then'规模很大'when count(*)>=4 and count(*)<5 then'规模一般'when count(*)>=2 and count(*)<4 then'规模稍小'else'规模很小'end from studentgroup by sdept14.按照课程号、成绩降序显示课程成绩在70-80之间的学生的学号、课程号及成绩;USE studentgoselect sno,cno,grade from scwhere grade between 70 and 80order by cno DESC,grade DESCgo15.显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为‚学生总人数,平均年龄‛;USE studentgoselect'学生总人数'=count(*),'平均年龄'=A VG(sage)from student16.显示选修的课程数大于3的各个学生的选修课程数;USE studentgoselect sno 学号,'选修课程数'=count(cno)from scgroup by snohaving count(cno)>317.按课程号降序显示选修各个课程的总人数、最高成绩、最低成绩及平均成绩;use studentgoselect distinct cno,'选修人数'=count(sno),'最高成绩'=MAX(grade),'最低成绩'=MIN(grade),'平均成绩'=A VG(grade)FROM scgroup by cnoorder by cno DESC18.显示平均成绩大于‚200515001‛学生平均成绩的各个学生的学号、平均成绩;use studentgoselect sno 学号,'平均成绩'=avg(grade)from scgroup by snohaving avg(grade)>(select avg(grade)from scwhere sno='200515001')19.显示选修各个课程的及格的人数、及格比率;use studentgoselect distinct cno ,'及格人数'=sum(case when grade>60 then 1 else 0 end),'及格比率'=sum(case when grade>60 then 1 else 0 end)/count(*)from scgroup by cno20.显示选修课程数最多的学号及选修课程数最少的学号;use studentgoselect distinct'学修课程最多的学号'=sno,'选修课程数'=count(cno)from scgroup by snohaving count(cno)>=all(select count(cno)from scgroup by sno)select distinct'学修课程最少的学号'=sno,'选修课程数'=count(cno)from scgroup by snohaving count(cno)<=all(select count(cno)from scgroup by sno)21.显示各个院系男女生人数,其中在结果集中列标题分别指定为‚院系名称、男生人数、女生人数‛;use studentgoselect distinct sdept 院系名称,'男生人数'=sum(case ssex when'男'then 1 else 0 end), '女生人数'=sum(case ssex when'女'THEN 1 ELSE 0 end)from STUDENTgroup by sdept22.列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩;USE studentgoselect distinct'不及格学生学号'=sno,'平均分数'=avg(grade)from sc group by snohaving sum(case when grade<60 then 1 else 0 end)>=2六、出现问题及解决办法如:某些查询操作无法执行,如何解决?。

数据库实验指导(071125)

数据库实验指导(071125)

《数据库系统原理》实验指导书索剑2007-11实验1:数据库模式设计及建立(2学时)实验目的:1.掌握数据库模式设计及建立的方法,建立数据库及关系2.比较SQL命令方式和可视化环境管理器方式设计的异同点3.熟悉 SQL SERVER 的企业管理器和查询分析器实验类型:验证实验内容:1.在SQL Server环境中建立“学生-课程”数据库2.使用SQL语言及可视化环境建立“学生-课程”数据库中的表3.观察“学生-课程”数据库的E-R图、逻辑模式以及文件存储之间的联系操作步骤:1.描述教材P59中所叙述的“学生-课程”数据库概念模式2.仔细分析“学生-课程”数据库关系逻辑模式(尤其是实体完整性、参照完整性规则)Student(学生表):Sno Sname Ssex Sage Sdept95001 李勇男20 CS95002 刘晨女19 IS95003 王敏女18 MA95004 张立男18 IS95005 王强男17 IS95015 张三男20 CS95019 李四男20 CS95020 陈冬男18 ISCourse(课程表):Cno Cname Cpno Ccredit1 数据库 5 42 数学 23 信息系统 1 44 操作系统 6 35 数据结构7 46 数据处理 27 Pascal语言6 4SC(选修表):Sno Cno Grade95001 1 6595001 2 8895001 3 5795001 4 7995001 5 4595001 6 9095001 7 8195002 2 9095002 3 8095002 4 5595003 2 095019 2 6695020 13.熟悉SQL SERVER的企业管理器和查询分析器4.在企业管理器可视化环境下创建“学生-课程”数据库,仔细观察物理模式的形成过程5.在可视化环境下建立如上所述关系模式,建立相应的实体、参照完整性,添加关系数据,仔细观察逻辑模式的形成过程6.启动“查询分析器”,编制SQL语言再次实现上述过程。

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

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

数据库原理实验报告实验三数据查询班级:×××姓名:×××学号:×××数据查询一、[实验目的]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的查询语句;右下方为结果区,用于显示查询结果和分析结果。

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

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

实验报告课程名称数据库原理与应用实验名称数据查询系别专业班级指导教师学号姓名实验日期_实验名称:数据查询一、实验目的1.熟悉各种基本的数据查询的含义。

2.掌握数据查询的SQL语句编写方法。

3.能根据要求写出正确的查询语句。

4.掌握基本的调试方法。

二、实验环境1.硬件环境:微机2.软件环境:Windows,Sql server2000或更高版本三、实验内容及步骤题目根据要求编写以下SQL查询语句第一题简单查询1.查询病人表,显示所有病人的病人编号、保险公司名称、电话号码(别名:病人电话)。

2.查询病人表,显示病人编号、病人姓名(病人姓+病人名)、保险公司名称,并在每个“电话号码”前面显示字符串“病人电话:”。

3.查询病人表,要求显示保险公司名称,并消除重复的值。

4.查询病人表,要求只显示前五条的全部病人信息。

5.查询病人表,要求显示最年轻的前6位病人的病人编号,病人姓名,病人年龄6.给医生表取别名:doctors,并显示医生表的所有信息7.要求查询在“人民保险公司”投保的所有病人的信息8.要求查询病人年龄在20~60岁之间的所有病人信息9.要求查询姓“王”、姓“李”或姓“关”的所有病人的信息。

(提示:用“in”或者用“or”两种方法查询。

)10.查询电话号码为空的病人信息11.要求按年龄从大到小显示病人信息12.要求先按病人姓的升序;如果姓一样,再按年龄的降序,来显示病人信息13.要求查询电话号码的最后一个数字为6的病人编号,病人姓名,电话号码14.要求查询倒数第二个数字为7的病人编号,病人姓名,电话号码。

15.要求查询除区号外的第二个数字为2的病人编号,病人姓名,电话号码。

(注:手机号不算。

)16.要求查询电话号码的最后一个数字为6、为3、为1的病人编号,病人姓名,电话号码。

(注:至少两种方法可以实现)17.要求查询电话号码的最后一个数字除1、3、6外的病人编号,病人姓名,电话号码。

步骤(写出以上SQL语句)--1.查询病人表,显示所有病人的病人编号、保险公司名称、电话号码(别名:病人电话)。

数据库实验答案

数据库实验答案

实验3 使用T-SQL语言完成单表查询一、实验目的掌握使用T—SQL语言完成单表查询掌握常用谓词的用法掌握where子句的用法掌握order by 子句的用法掌握group by 子句和having短语的用法二、实验环境Microsoft SQL Server 2000。

三、实验内容和要求1.查询全体学生的详细信息。

2.查询所有课程的详细信息.3.查询所有选课记录的详细信息,要结果表中的列名以中文的形式显示,分别为:学号,课程号,成绩。

4.查询已被学生选修了的课程的编号。

5.查询系别编号为“d002”的学生的姓名和性别。

6.查询年龄在19至21岁或者性别为“女”的学生的学号和所在系别编号。

7.查询系别编号为d001、d002和d003的学生的学号和姓名。

8.查询课程名为“C_”开头的课程名和学分.9.某些学生入学后还没有确定所在的系,查询还没有确定系的学生的姓名。

10.查询成绩大于60分的学生的学号、课程号和成绩,并将查询结果按课程编号升序排列,同一课程的成绩按分数降序排列。

11.查询学校所开设的总的课程数.12.计算2号课的学生成绩总和以及平均成绩,对应的列名分别为“总成绩”和“平均成绩”。

13.查询选修了3号课程的学生的最高分和最低分,对应的列名分别为“最高分”和“最低分"。

14.求各个系别的编号以及各系的人数。

15.查询选课人数大于等于2人的课程编号以及选课的人数。

16.查询学生200215122选修课程的总成绩对应的列名为“总成绩”,并显示出学号。

17.查询有2门以上课程是80分以上的学生的学号及课程数。

18.查询选修了1号课的学生的学号和成绩,结果按成绩降序、学号升序排列.实验1 使用T-SQL语言建库、建表实验2 向表中增、删、改数据四、实验目的掌握使用T-SQL建库、建表、修改表;掌握使用T-SQL对表中数据进行插入、删除和修改.五、实验环境Microsoft SQL Server 2000.六、实验内容和要求19.建立数据库STDB20.在数据库STDB中建立四个表:Student表Department表Course表21.分别向以上四个表中增加数据。

实验三 数据库的查询

实验三    数据库的查询

实验三数据库的查询一、目的与要求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)对被两名以上学生所选修的课程统计每门课的选课人数。

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

单表查询实验报告

单表查询实验报告

《数据库系统概论》实验报告实验名称:单表查询实验人:实验地点:实验楼317实验日期:2009-10-5一、实验准备1.硬件及软件环境要求为了使该实验顺利进行,需要有一台计算机,计算机必须安装Windows 2000、Windows XP或Windows NT操作系统,还必须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版)。

实验开始之前,必须将实验1.2节中创建好的SCDB数据库和ShiYan数据库附加到当前SQL数据库服务器中。

2.本实验涉及的主要SQL语句的语法格式(1) SELECT子句指定由查询返回的列。

SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT ] [ WITH TIES ] ]< select_list >< select_list > ::={ * |{table_name|view_name|table_alias}.*|{column_name|expression|IDENTITYCOL|ROWGUIDCOL}[[AS]column_alias] | column_alias = expression } [ ,...n ]【说明】ALL:默认设置,指定在查询结果集中可以显示重复行。

DISTINCT:指定在查询结果集中不显示重复行,空值被认为相等。

TOP n:指定只从查询结果集中输出前n行。

PERCENT:指定只从查询结果集中输出前n%行,当指定时带PERCENT,则n 的值必须介于0~100之间。

WITH TIES:指定从基本查询结果集中返回附加的行。

如果使用了ORDER BY 子句,则只能使用TOP或WITH TIES选项。

select_list:指定查询列或列表达式(即查询列表)。

各查询列表之间以逗号分隔。

*:指定在FROM 子句内返回所有表和视图内的所有列。

列按FROM 子句所指定的由表或视图返回,并按它们在表或视图中的顺序返回。

最新国家开放大学电大《数据库应用技术》实验

最新国家开放大学电大《数据库应用技术》实验

最新国家开放大学电大《数据库应用技术》实验实验目的:通过使用SSMS工具,练习对数据库中的数据表进行单表查询、多表连接查询、子查询。

对数据表中的数据进行更改和删除等操作。

实验要求:将相关的SQL 语句和运行结果的截屏保存在文件中,或填写在下面的实验报告中,并通过网络提交。

实验内容:使用SSMS工具,在“可用数据库”中选中Students数据库,完成如下实验。

1.单表查询。

写出实现如下查询的SQL语句。

(1) 查询学生选课表中的全部数据。

(2) 查询计算机系的学生的姓名、年龄。

(3) 查询成绩在70~80分的学生的学号、课程号和成绩。

(4) 查询计算机系年龄在18~20岁男生的姓名、年龄。

(5) 查询C001课程的考试成绩最高分。

(6) 查询计算机系学生的最大年龄和最小年龄。

(7) 统计各系的学生人数。

(8) 统计每门课程的选课人数和考试成绩最高分。

(9) 统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。

(10)查询总成绩超过200分的学生,要求列出其学号和总成绩。

(11)查询选课门数超过2门的学生的学号、平均成绩和选课门数。

2.多表连接查询。

写出实现如下查询的SQL语句。

(12) 查询选了C002课程的学生的姓名和所在系。

(13) 查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。

(14) 查询计算机系男生选修了“数据库基础”的学生的姓名和成绩。

(15) 查询学生的选课情况,要求列出每位学生的选课情况(包括未选课的学生),并列出学生的学号、姓名、课程号和考试成绩。

(16) 查询哪些课程没有人选修,要求列出课程号和课程名。

(17) 查询计算机系没有选课的学生,列出学生的姓名。

3.使用TOP和CASE的查询。

写出实现如下查询的SQL语句。

(18) 列出“数据库基础”课程考试成绩前三名的学生的学号、姓名、所在系和考试成绩。

(19) 查询Java考试成绩最低的学生的姓名、所在系和Java成绩。

实验训练2数据查询操作

实验训练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()函数取得总金额。

数据库实验五 表连接查询

数据库实验五 表连接查询

实验五表连接查询1.查找每一个供应商供应的商品的名称,要求显示供应商名称和商品名称。

select Sname,Cnamefrom supplier,commodity,supplyingwhere supplier.Sid=supplying.Sid and commodity.Cid=supplying.Cid2.使用连接查询查找与姓名为‘李云’的采购员签订采购单的供应商的名称。

select distinct(sname)from stock,Employee,supplierwhere stock.Eid=Employee.Eid and stock.Sid=supplier.Sid and Ename like'李云'3.使用关键字IN完成查询,要求查找与姓名为‘李云’的采购员签订采购单的供应商的名称。

select Snamefrom supplierwhere Sid in(select Sidfrom stockwhere Eid in(select Eidfrom Employeewhere Ename='李云'))4.使用左外连接完成如下查询:要求查找所有采购员签订的采购合同的详细信息。

select *from Employee left outer join stock on Employee.Eid=stock.Eid5.使用左外连接完成如下查询:查找所有客户购买的商品详细信息,要求显示客户名称,商品名称,销售数量,商品单价,没有购买商品的客户也要显示。

select CUname,Cname,SDnumber,SDpricefrom customer left outer join sale on customer.CUid=sale.CUidleft outer join saleDetail on sale.SAid=saleDetail.SAidleft outer join commodity on saleDetail.cid=commodity.cid6.请使用内连接完成如下查询:查找每一个供应商供应的商品的种类,要求显示供应商名称,供应的商品的种类。

数据库实验四

数据库实验四

数据库概论课程实验报告(四)
2.列出姓‚沈‛且全名为3个汉字的学生;3.显示在1985年以后出生的学生的基本信息;
4.按照‚性别、学号、姓名、年龄、院系‛的顺序列出学生信息,其中性别按以下规定显示:性别为男显示为男生,性别为女显示为女生,其他显示为‚条件不明‛;
6.显示学号第八位或者第九位是1、2、3、4或者9的学生的学号、姓名、性别、年龄及院系;
7.列出选修了‘1’课程的学生,按成绩的降序排列;
8.列出同时选修‚1‛号课程和‚2‛号课程的所有学生的学号;
9.列出课程表中全部信息,按先修课的升序排列;
14. 按照课程号、成绩降序显示课程成绩在70-80之间的学生的学号、课程号及成绩
15.显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为‚学生总人数,
平均年龄‛;
16. 显示选修的课程数大于3的各个学生的选修课程数;
17. 按课程号降序显示选修各个课程的总人数、最高成绩、最低成绩及平均成绩;
18.显示平均成绩大于‚200515001‛学生平均成绩的各个学生的学号、平均成绩;
20. 显示选修课程数最多的学号及选修课程数最少的学号;
21.显示各个院系男女生人数,其中在结果集中列标题分别指定为‚院系名称、男生人数、女生人
数‛;
22.列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩;。

SQL数据库实验报告

SQL数据库实验报告

数据库实验报告学院:专业:班级:学号:姓名:实验二数据库单表查询一、实验目的1. 掌握SELECT 语句的基本语法和查询条件表示方法;2. 掌握查询条件表达式和使用方法;3. 掌握GROUP BY 子句的作用和使用方法;4. 掌握HAVING 子句的作用和使用方法;5. 掌握ORDER BY 子句的作用和使用方法。

二、实验内容利用数据库进行单表查询。

1). 查询全体学生的学号和姓名;2). 查询全体学生的所有信息;3). 查询全体学生的姓名,出生年份,和所在系,并用小写字母表示所有系名;4). 给上例的结果集指定列名;5). 查询选修了课程的学生的学号;6). 查询年龄在20 岁以下的学生的姓名及其年龄;7). 查询考试成绩有不及格的学生的学号;8). 查询年龄在20-30 岁之间的学生的姓名,性别,所在系;9). 查询IS, CS, MA 系的所有学生的姓名和性别;10). 查找所有姓’李’的学生的姓名, 学号和性别;11). 查询没有先行课的课程的课程号cno 和课程名cname。

三、实验代码及运行结果截图--建立数据库,取名为LilyCREATE DATABASE Lily;--建立学生表,取名为STUDENTCREATE TABLE STUDENT(SNO CHAR(9)PRIMARY KEY,SNAME CHAR(20)UNIQUE,SSEX CHAR(2),SAGE SMALLINT,SDEPT CHAR(20));--向学生表中插入数据INSERT INTO STUDENT VALUES(201215121,'李勇','男',20,'CS'); INSERT INTO STUDENT VALUES(201215122,'刘晨','女',19,'CS'); INSERT INTO STUDENT VALUES(201215123,'王敏','女',18,'MA'); INSERT INTO STUDENT VALUES(201215125,'张立','男',19,'IS');--建立课程表,取名为COURSECREATE TABLE COURSE(CNO CHAR(4)PRIMARY KEY,CNAME CHAR(40)NOT NULL,CPNO CHAR(4),CCREDIT SMALLINT,FOREIGN KEY(CPNO)REFERENCES COURSE(CNO));--向COURSE表中插入数据INSERT INTO COURSE VALUES(2,'数学',null,2);INSERT INTO COURSE VALUES(6,'数据处理',null,2);INSERT INTO COURSE VALUES(7,'PASCAL语言',6,4);INSERT INTO COURSE VALUES(4,'操作系统',6,3);INSERT INTO COURSE VALUES(5,'数据结构',7,4); INSERT INTO COURSE VALUES(1,'数据库',5,4); INSERT INTO COURSE VALUES(3,'信息系统',1,4);--建立选课表,取名SCCREATE TABLE SC(SNO CHAR(9),CNO CHAR(4),GRADE SMALLINT,PRIMARY KEY(SNO,CNO),FOREIGN KEY(SNO)REFERENCES STUDENT(SNO),FOREIGN KEY(CNO)REFERENCES COURSE(CNO) );--向SC表中插入数据INSERT INTO SC VALUES(201215121,1,92); INSERT INTO SC VALUES(201215121,2,85); INSERT INTO SC VALUES(201215121,3,88); INSERT INTO SC VALUES(201215122,2,90); INSERT INTO SC VALUES(201215122,3,80); INSERT INTO SC VALUES(201215122,1,59);--1查询全体学生的学号和姓名SELECT SNO,SNAMEFROM STUDENT--2查询全体学生的全体信息SELECT*FROM STUDENT--3查询全体学生的姓名,出生年份,和所在系,并用小写字母表示所有系名SELECT SNAME,2012-SAGE,LOWER(SDEPT)FROM STUDENT--4给上例的结果指定列名SELECT SNAME,2012-SAGE AS'BIRTHYEAR',LOWER(SDEPT)as'SDEPT'FROM STUDENT--5查询选修了课程的学生的学号SELECT DISTINCT SNOFROM SC--6查询年龄在20岁以下的学生的姓名及其年龄SELECT SNAME,SAGEFROM STUDENTWHERE SAGE<20--7查询考试成绩有不及格学生的学号SELECT SNOFROM SCWHERE GRADE<60--8查询年龄在20-30岁之间的学生的姓名,性别,所在系SELECT SNAME,SSEX,SDEPTFROM STUDENTWHERE SAGE BETWEEN 20 AND 30--9查询IS,CS,MA系的所有学生的姓名和性别SELECT SNAME,SSEXFROM STUDENTWHERE SDEPT IN('IS','CS','MA');--10查找所有姓李的学生的姓名,学号和性别SELECT SNAME,SNO,SSEXFROM STUDENTWHERE SNAME LIKE'李%';--11查询没有先行课的课程的课程号cno和课程名cnameSELECT CNO,CNAMEFROM COURSEWHERE CPNO IS NULL四、实验小结小结:本次实验学习了利用数据库进行单表查询,掌握了简单SQL语句的使用。

数据库实验三_查询

数据库实验三_查询

南昌大学实验报告---实验三查询学生姓名:丁金芝学号:6100511080 专业班级:管理科学与工程类112班实验类型:■验证□综合□设计□创新实验日期:实验成绩:一、实验目的1.掌握select语句的基本语法2.了解select语句中各子句的作用和特点3.掌握select语句的统计函数的作用和用法4.掌握子查询的用法5.掌握连接查询的用法二、实验内容与结果(一).简单查询1.select 选择列--1、选择所有列(*),查询学生表中的所有纪录。

--2、选择特定列,查询学生表中全体学生的学号,姓名,性别。

--3、计算列,查询选课表中给每个学生加了20分后的所有课号和成绩末分数显示出来。

重复。

--6、限制返回行数--top n 关键字;只显示表中前面n条记录。

--top n percent 关键字;只显示前n%条记录。

--显示学生表中的前3条记录。

--显示学生表中的前3%条记录2 .where 子句--1、比较运算符:(1)查询分数<80分学生的学号、成绩、课号。

(2)查询学号001学生的情况。

--2、范围运算符:查询学生分数在70-80之间的学生的学号、课号。

(包括70分、80分)--3、列表运算符: (1)查询学号为'001' 、'005'、'007' 、'008'的学生学号。

(2)查询学生成绩不在60-70之间的学生的学号、课号、成绩。

--4、匹配运算符: (1)查询姓刘学生的信息。

(2)查询姓刘单名的学生信息。

(3)查询01-03年级学生的信息。

--5、空值运算符,查询变动情况为空的学生--查询学生课程编号为'05'的课程的成绩,并按成绩的降序进行排列。

4.使用函数:--1、计算学号为001的学生总分数、平均分。

--2、集合函数 avg()、count()、count(*)、max()、min()、sum()(1)查询学期成绩表中的平均分,最大分数,最小分数,总和(前面四项为查询出的相应字段)(2)统计课程表中所有记录数和各个列中值的个数,要求不能重复。

SQL实验二:数据库查询实验报告

SQL实验二:数据库查询实验报告

实验二数据库的查询实验实验目的和要求(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 分以上的学生姓名及所在系。

实验二-单表查询(2012)

实验二-单表查询(2012)

实验二单表查询学号:20103191姓名:王晓燕专业:应用物理、实验目的掌握简单SQL查询语句的应用,包括like、top、order by、compute、聚集函数的应用。

、实验内容请在上次实验所建的数据库上实现下列查询练习,并抓图显示其查询结果。

1、基本查询(1)查询Student表中全体学生的全部信息。

结果:(2)检索全体学生的学号、姓名。

结果:班级:sw希罢井丄BMhUD.2、查询时改变列标题的显示检索全体学生的学号、姓名、家庭地址信息,并分别加上 的别名信息。

结果:■臥 jTifkHUlA.Q» QQ 丈静ID心 网魁 矍™;① u 目油 工且(xi■口(凹 甘庇;口 网心.SLT I ti L.> [ d L :l J d J d 已鼻 V f ■T孰研凶■ v | : *u a&i D 3E 机#血苛4 丫缶站护 返曙(2>・ 土 Jd 丄茗主r= r j Jf^T-fift 辿 I oi CGhJri err Jrio UHU kqFh_djR 馬 >tl*T“n ZD :a3L ?L5ti_£erf rirahtr鼻粳4 j 竝畑 e J *fl 'jaurce F 1to-X .* JLfl ■ z丄NE _i STffl ;^ _j 萍 Utj ®irt a -牡H B ._-i ™ fl ww d 占M 」LS*ig 他«l i- H 2O1Q31.. MULUwrZ.Hl 11I select 勺即。

5D aiie =££4)mc.ge ■口x ;二"学生”学号”家庭地址«*fc rmirfC Zrivr3、条件查询(1)查询成绩大于80分的学生的学号及课程号、成绩。

结果朝翻J - 1行i Ch»Iw 4MM| f ^-. ] ?m, ,. HArMc^ifQLUvhN*...出…,或宅祖E卫|疔耳00邮(L:i) 皿」皿・2沌Q0 CD OD 1 Fa TMfliW Ci 酋U 1/ 5■i 証fi』越山九机#z苛4 rh 3茹lil 11hi iSl€io>-匀JS t twto *・越于|£,^1厂些之。

实验训练2:数据查询操作

实验训练2:数据查询操作

实验二MySQL数据库操作实验实验目的:基于实验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()函数取得总金额。

实验6:单表查询

实验6:单表查询

实验六SQL数据库单表查询一、实验目的及要求本实验的主要目的是掌握基于一个表的SELECT语句的语法及使用规则,并能运用各种常用的查询方式及其形式:1.掌握SELECT语句的基本语法结构。

2.掌握SQL语句中基于一个表的SELECT语句的使用规则和方式。

3.能正确设置各种常用查询条件。

4.掌握分组汇总查询的使用。

二、实验原理及背景知识1.了解SQL中SELECT语句的基本使用方式;2.理解关系代数中投影运算和选择运算的概念及原理。

SELECT实现的是投影,WHERE实现选择运算。

3.实验前需要了解所使用的数据库中表的结构。

4.实验前需要在stuManage数据库中输入模拟数据。

三、实验内容及步骤(1)输入下在的查询语句,执行后验证实验结果:1.查询专业为100165的学生的学号、姓名、性别和出生年月信息。

2.查询不姓陈的学生学号和姓名信息。

% _3.查询100165专业中1991年之前出生的学生的学号、姓名、性别及出生年月信息。

4.查询所有学生的序号、姓名及年龄信息,其中年龄由出生年月转换得到。

5.查询学号为‘091650102’同学的所有课程的平均分、最高分和最低分。

(2)输入下面查询语句,然后运行,根据结果思考并记录其功能:1.功能:2.功能:3. 功能:4. 功能:5. 功能:(3)阅读并分析下面查询语句,根据其功能,补全语句之后进行验证:1. 查询0916502班超过5人选修的课程选修人数及平均分。

SELECT AS '选课人数', AVG(mark) AS '平均分' FROM student_courseWHERE sNOGROUP BY ccNOHAVING > 52. 查询1993年之后出生的学生的学号、姓名、性别和出生年。

SELECT sNO, sName, sSex, sBirthFROM studentWHERE sBirth3. 查询姓陈而且姓名是三个字的同学的学号和姓名SELECT sNO, sName FROM studentWHERE sName4. 查询每个同学的学号、平均分、最低分和最高分,并按照平均成绩降序排列。

数据库实验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)中的“计算机系”视图,插入一个新学生记录。

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

实验:数据库单表查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件表达式和使用方法;3.掌握GROUP BY 子句的作用和使用方法;4.掌握HAVING子句的作用和使用方法;5.掌握ORDER BY子句的作用和使用方法。

二、实验环境已安装SQL Server 2005 企业版的计算机;具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解数据库查询;2.了解数据库查询的实现方式;3.完成实验报告;五、实验内容及步骤以《实验:管理SQL Server表数据》数据库中数据为基础,请使用T-SQL 语句实现以下操作:1.列出所有不姓刘的所有学生;use studentgoselect*from studentwhere sname not like'刘%'go2.列出姓‚沈‛且全名为3个汉字的学生;use studentgoselect *from studentwhere sname like '沈%' and len(sname)=3go3.显示在1985年以后出生的学生的基本信息;use studentgoselect *from studentwhere datepart(yyyy,getdate())-sage>1985go4.按照‚性别、学号、姓名、年龄、院系‛的顺序列出学生信息,其中性别按以下规定显示:性别为男显示为男生,性别为女显示为女生,其他显示为‚条件不明‛;use studentgoselect (case when ssex='男' then '男生'when ssex='女' then '女生'else '条件不明'end) as 性别,sno as 学号,sname as 姓名,sage as 年龄,sdept as 院系from studentgo5.查询出课程名含有‚数据‛字串的所有课程基本信息;use studentgoselect *from coursewhere Cname like '%数据%'go6.显示学号第八位或者第九位是1、2、3、4或者9的学生的学号、姓名、性别、年龄及院系;use studentgoselect *from studentwhere sno like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][1-4,9][1-4,9]'go7.列出选修了‘1’课程的学生,按成绩的降序排列;use studentgoselect *from scwhere cno='1'order by grade desc8.列出同时选修‚1‛号课程和‚2‛号课程的所有学生的学号;use studentgoselect sno as 学号from scwhere cno='1'intersectselect sno as 学号from scwhere cno='2'9.列出课程表中全部信息,按先修课的升序排列;use studentgoselect *from courseorder by cpnogo10.列出年龄超过平均值的所有学生名单,按年龄的降序显示;use studentgoselect *from studentwhere sage>(select avg(sage) from student)order by sage descgo11.按照出生年份升序显示所有学生的学号、姓名、性别、出生年份及院系,在结果集中列标题分别指定为‚学号,姓名,性别,出生年份,院系‛;select sno as 学号,sname as 姓名,ssex as 性别,datepart(yyyy,getdate())-sage as 出生年份,sdept as 院系from studentorder by 出生年份12.按照院系降序显示所有学生的‚院系,学号、姓名、性别、年龄‛等信息,其中院系按照以下规定显示:院系为CS显示为计算机系,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明;select sno as 学号,sname as 姓名,ssex as 性别,sage as 年龄,(casewhen sdept='CS' then '计算机系'when sdept='IS' then '信息系'when sdept='MA' then '数学系'when sdept='EN' then '外语系'when sdept='CM' then '中医系'when sdept='WM' then '西医系'else'院系不明'end) as 院系from studentorder by 院系desc13.显示所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段‚院系规模‛,其中若该院系人数>=5则该字段值为‚规模很大‛,若该院系人数大于等于4小于5则该字段值为‚规模一般‛,若该院系人数大于等于2小于4则该字段值为‚规模稍小‛,否则显示‚规模很小‛;use studentgoselect distinct(case when sdept='CS' then '计算机系'when sdept='IS' then '信息系'when sdept='MA' then '数学系'when sdept='EN' then '外语系'when sdept='CM' then '中医系'when sdept='WM' then '西医系'else'院系不明'end) as 院系,(case when count(sdept)>=5 then '规模很大'when count(sdept)<5 and count(sdept)>=4 then '规模一般'when count(sdept)<4 and count(sdept)>=2 then '规模稍小' else'规模很小'end) as 院系规模from studentwhere sdept!='NULL'group by sdept14.按照课程号、成绩降序显示课程成绩在70-80之间的学生的学号、课程号及成绩;use studentgoselect sno as 学号,cno as 课程号,grade as 成绩from scwhere grade between 70 and 80order by cno desc,grade descgo15.显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为‚学生总人数,平均年龄‛;]use studentgoselect count(*) as 总人数,avg(sage) as 平均年龄from studentgo16.显示选修的课程数大于3的各个学生的选修课程数;use studentgoselect sno as 学号,count(cno) as 选修课程数from scgroup by snohaving(count(cno)>3)go17.按课程号降序显示选修各个课程的总人数、最高成绩、最低成绩及平均成绩;use studentgoselect cno as 课程号,count(sno) as 总人数,max(grade) as 最高成绩,min(grade) as 最低成绩,avg(grade) as 平均成绩from scgroup by cnoorder by cno descgo18.显示平均成绩大于‚200515001‛学生平均成绩的各个学生的学号、平均成绩;use studentgoselect sno as 学号,avg(grade) as 平均成绩from scgroup by snohaving avg(grade)>(select avg(grade)from scwhere sno='200515001')go19.显示选修各个课程的及格的人数、及格比率;use studentgoselect cno,sum(case when grade>=60 then 1else 0end)as 及格人数,cast(cast(sum(case when grade>=60 then 1else 0end) as float)/count(*)*100 as char(8))+'%' as 及格率from scgroup by cnogo20.显示选修课程数最多的学号及选修课程数最少的学号;use studentgoselect sno as '选修课程数最多的学生',count(*) as 选修门数from scgroup by snohaving count(cno)>=all(select count(cno) from sc group by sno)goselect sno as '选修课程数最少的学生',count(*) as 选修门数from scgroup by snohaving count(cno)<=all(select count(cno) from sc group by sno)go21.显示各个院系男女生人数,其中在结果集中列标题分别指定为‚院系名称、男生人数、女生人数‛;use studentgoselect distinct(case when sdept='CS' then '计算机系'when sdept='IS' then '信息系'when sdept='MA' then '数学系'when sdept='EN' then '外语系'when sdept='CM' then '中医系'when sdept='WM' then '西医系'else'院系不明'end) as 院系,sum(case when ssex='女' then 1 else 0 end) as 女生人数,sum(case when ssex='男' then 1 else 0 end) as 男生人数from studentgroup by sdept22.列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩;use studentgoselect sno as 不及格学生的学号,avg(grade) as 平均成绩from scgroup by snohaving sum(case when grade<60 then 1else 0end)>=2go六、出现问题及解决办法如:某些查询操作无法执行,如何解决?。

相关文档
最新文档