数据库查询实验
实验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. 连接查询速度是影响关系数据库性能的关键因素。
实验:数据库单表查询

实验:数据库单表查询一、实验目的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六、出现问题及解决办法如:某些查询操作无法执行,如何解决?。
数据库实验报告(通用3篇)

数据库实验报告(通用3篇)数据库试验报告篇1一、实训时间:20_年5月13日至5月24日二、实训地点:三、实训目的与意义:1,这次实习可以使我们在课本上学到的学问用于实践增加了我对电脑技巧的一些认知。
2,通过这次实习也可以让我体验到上班族的生活为我将来毕业后找工作打下了基础。
3,并且这次实习可以非常好的关心我完成将来的毕业论文。
四、实训感悟:还依旧记得来的第一天对这里很茫然,不知道实习要做些什么。
然后经过老师的急躁讲解,熟悉了自己实习要做些什么,得到了许多心理熟悉,对许多问题都有了一些更深的了解。
同时,我熟识了河北玛世电子商务有限公司,总部位于国家命名的“中国丝网之乡”、“中国丝网产业基地”、中国丝网产销基地“、”中国丝网出口基地“—河北省安平县。
使我们队公司有了更进一步的了解实习,就是在实践中学习。
经过这半个月的实习训练,我了解到自己所学的如何在实践中运用。
当然学的更多的是如何在更新网站内容和添加商品,每天不厌其烦的更新添加,观察自己的胜利更多的是兴奋。
还有发布了一些关于公司产品的博客,比如新浪,网易。
而后又尝试在百度知道上提问与回答,在回答问题的过程中,通过网站搜寻相关内容来回答各种丝网问题,通过百度知道这个平台,我对公司又了更一步的了解。
经过半个月的实训我学到了许多之前没有学过没有接触到的东西,熟悉到自己的不足,需要更加努力,才能尽快的学会在社会上生活,敢于面对社会的压力,使自己可以在社会上成长进展。
数据库试验报告篇2由于平常接触的都是一些私人项目,这些项目大都是一些类库,其他人的沟通相对可以忽视不计,因此也就不考虑规范化的文档。
实际上从学习的经受来看,我们接触的学问体系都是属于比较老或比较传统的,与现在进展快速的IT行业相比许多状况已不再适用,尤其是当开源模式渐渐走近开发者后更是如此。
虽然这次是一个数据库课程设计,由于本人在选择项目的时候是本着对自己有实际应用价值的角度考虑的,所以其中也涉及到一些数据库以外的设计。
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 分以上的学生姓名及所在系。
数据库查询实验报告步骤

一、实验目的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实验项目数据查询实验地点实验学时实验类型验证性指导教师实验员专业班级学号姓名年月日成绩: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.掌握数据查询的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.查询病人表,显示所有病人的病人编号、保险公司名称、电话号码(别名:病人电话)。
实验三 数据库中的数据查询及视图操作实验报告

实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。
通过本实验,我们可以掌握使用SQL语句进行数据查询和创建视图的方法,进一步提高对数据库的操作能力。
二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统下进行实验。
三、实验内容本实验主要包括以下内容:1. 数据查询:使用SELECT语句查询数据库中的数据,并进行排序、过滤和聚合操作。
2. 视图操作:创建和删除视图,以及对视图进行查询和更新操作。
四、实验步骤与结果1. 数据查询首先,我们需要连接到数据库,并选择要查询的表。
假设我们选择的表名为"students",包含以下字段:学号、姓名、性别、年龄、班级。
a. 查询所有学生的信息:```sqlSELECT * FROM students;```执行以上SQL语句后,我们可以得到所有学生的信息,包括学号、姓名、性别、年龄和班级。
b. 查询男生的信息:```sqlSELECT * FROM students WHERE 性别 = '男';```执行以上SQL语句后,我们可以得到所有性别为男的学生的信息。
c. 查询年龄小于20岁的学生的姓名和班级:```sqlSELECT 姓名, 班级 FROM students WHERE 年龄 < 20;```执行以上SQL语句后,我们可以得到年龄小于20岁的学生的姓名和班级。
d. 查询学生按照年龄降序排列的结果:```sqlSELECT * FROM students ORDER BY 年龄 DESC;```执行以上SQL语句后,我们可以得到按照年龄降序排列的学生信息。
e. 查询学生按照班级分组,并统计每个班级的人数:```sqlSELECT 班级, COUNT(*) AS 人数 FROM students GROUP BY 班级;```执行以上SQL语句后,我们可以得到每个班级的人数统计结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二:数据库的简单查询和连接查询
实验目的:
掌握简单表的数据查询、数据排序和数据联结查询的操作方法。
实验内容:
简单查询操作和连接查询操作。
实验步骤:
一. 单表查询:
1. 查询全体学生的学号和姓名:
select sno, sname from student
2. 查询全体学生的所有信息:
select * from student
或者 select sno, sname, ssex,sage, sdept from student
3. 查询全体学生的姓名, 出生年份,和所在系, 并用小写字母表示所有系名: VFP中: select sname, '出生年份为: ', year(date() - sage, lower(sdept) from student
SQLServer中: select sname, '出生年份为: ', year(getdate()) - sage, lower(sdept) from student
4. 查询选修了课程的学生的学号:
select distinct sno from sc
比较: select sno from sc
5. 查询年龄在20岁以下的学生的姓名及其年龄:
select sname, sage from student where sage<20
6. 查询考试成绩有不及格的学生的学号:
select distinct sno from sc where grade<60
比较: select sno from sc where grade<60
7. 查询年龄在20-30岁直接的学生的姓名, 姓名, 所在系:
select sname, ssex, sdept from student where sage between 20 and 30
8. 查询 IS,CS,MA系的所有学生的姓名和性别:
select sname, ssex from student where sdept in ('IS', 'MA','CS')
9. 查找所有姓’李’的学生的姓名, 学号和性别:
select sname, sno, ssex from student where sname like '李%'
比较: 将学生表中的’95001’号学生的姓名’李勇’改为’李勇勇’, 再执行: select sname, sno, ssex from student where sname like '李_'
10. 查询没有先行课的课程的课程号cno和课程名cname:
select cno, cname from course where pcno is null
二. 查询结果排序
11. 查询选修了3号课程的学生的学号和成绩, 并按分数降序排列:
select sno, grade from sc where cno='3' order by grade DESC
12. 查询全体学生的情况,查询结果按所在系号升序排列, 同一系中的学生按年龄降序排列:
select * from student order by sdept ASC, sage DESC
三. 连接查询:
13. 查询每个学生及其选修课程的情况:
select student.*, sc.* from student, sc where student.sno=sc.sno
14. 查询每一门课程的间接先行课(只求两层即先行课的先行课):
select o, Second.pcno 间接先行课from course First, course Second where First.pcno=o
比较:
select o, Second.pcno 间接先行课 from course First, course Second where First.pcno=o and Second.pcno is not null
15. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息: SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno
VFP中: select s.sno, sname, ssex,sdept, cno, grade from student s left join sc sc on s.sno=sc.sno
16. 查询每个学生的学号, 姓名, 选修的课程名和成绩:
select S.sno, sname, cname, grade
from student S, course C, sc SC
where S.sno=SC.sno and o=o
思考:
如何求出不及格学生的学号, 姓名, 不及格的课程名以及成绩。