sql查询语句练习

合集下载

SQL查询练习

SQL查询练习

SQL查询练习SQL查询练习⼀、有三个关系,试⽤关系代数表达式表⽰下列查询语句:S(sno,sname,age,sex,sdept)C(cno,cname,cdept,tname) tname表⽰授课⽼师名SC(sno,cno,grade)(1) 检索年龄⼩于22岁的男学⽣的学号与姓名。

(2) 检索学号为S3学⽣所学课程的课程名与任课教师名。

(3) 检索王⽼师所授课程的课程号、课程名。

(4) 检索⾄少选修王⽼师所授课程中⼀门课的男学⽣姓名。

(5) 检索陈同学不学的课程的课程号。

(6) 检索全部学⽣都选修的课程的课程号、课程名。

(7) 检索选修课程包含王⽼师所授课程的学⽣学号。

(8) 检索⾄少选修两门课程的学⽣学号。

(9) 查询⾄少选修了2号课程和8号课程的学⽣姓名。

(10) 查询张红的年龄。

(11) 查询李明同学不及格的课程名称。

(12) 查询选修了“计算机⽹络”的学⽣姓名。

(13) 查询“计算机⽹络”成绩在90分以上的学⽣姓名。

⼆、设有下列四个关系模式:S (SNO, SNAME, CITY);P (PNO, PNAME, COLOR, WEIGHT);J (JNO, JNAME, CITY);SPJ(SNO, PNO, JNO, QTY)。

其中,供应商关系S由供应商号(SNO)、供应商姓名(SNAME)、供应商所在城市(CITY)组成。

零件关系P由零件号(PNO)、零件名称(PNAME)、零件颜⾊(COLOR)、零件重量(WEIGHT)组成,⽤于记录各种零件的情况。

项⽬关系J由项⽬号(JNO)、项⽬名称(JNAME)、项⽬所在城市(CITY) 组成。

供应情况关系SPJ由供应商号(SNO)、零件号(PNO)、项⽬号(JNO)、供应数量(QTY) 组成。

试⽤关系代数表达式完成以下操作:(1) 检索供应项⽬J2零件的供应商号(SNO)。

(2) 检索供应项⽬J2零件P2的供应商号(SNO)。

(3) 检索供应项⽬J2⿊⾊零件的供应商姓名(SNAME)。

sql查询练习

sql查询练习

1.查询全体学生的学号和姓名.select 学号,姓名from 学生2.查询全体学生的姓名,学号,所在系.select 学号,姓名,系from 学生3.查询全体学生的详细记录select * from 学生4.查询全体学生的姓名及其出生年份select 姓名,2006-年龄from 学生[意思是2008减年龄]5.查询选修了课程的学生学号select distinct学号from 选课6.查询2系全体学生的名单.select 姓名from 学生where 系=”2”7.查询所有年龄在20岁以下的学生姓名及年龄.select 姓名,年龄from 学生where 年龄<=208.查询考试成绩有不及格的学生的学号.select distinct 学号from 选课where 成绩<609.查询年龄在20~~23岁(包括20和23岁)之间的的学生的姓名,系别,年龄.select 姓名,系,年龄from 学生where 年龄between 20 and 2310.查询1系,2系,3系的学生的姓名和性别select 姓名,性别from 学生where 系别in (“1”,”2”,”3”) [in 实际上是多个or 运算符的缩写]。

我们也可以写成这样:select 姓名,性别from 学生where 系=’1’or 系=’2’or 系=’3’11.查询既不是1系,2系也不是3系的学生的姓名和性别.select 姓名,性别from 学生where 系not in (“1”,”2”,”3”)12.查询学号为s3的学生的详细情况.select * from 学生where 学号like “s3”)或者(select * from 学生where 学号=”s3”13.查询所有的姓刘的学生的姓名,学号和性别.select 姓名,学号,性别from 学生where 姓名like ‘刘%’14.查询姓”欧阳”且全名为三个字的学生的姓名.select 姓名from 学生where 姓名like “欧阳_ ”15.查询名字中第二个字为”阳”字的学生的姓名和学号.select 姓名,学号from 学生where 姓名like “ _阳%”16.某些学生选修课程后没有参加考试,所以有选课记录,但是没有考试成绩.查询缺少成绩的学生的学号和相应的课程号select 学号,课程号from 选课where 成绩is null17.查询所有有成绩的学生学号和课程号.select 学号,课程号from 选课where 成绩is not null18.(多重条件查询)查询1系年龄在20岁以下的学生姓名.select 姓名from 学生where 系=’1’and 年龄<2019.(对查询结果进行排序)查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列.select 学号,成绩,from 选课where 课程号=’3’ order by 成绩desc20.查询全体学生情况,查询结果按所在系的系号升序排列,同一个系的学生按年龄降序排列.select * from 学生order by 系, 年龄desc21.(使用集函数)查询学生总人数.select count(*) from 学生[count的功能是计数]22.查询选修了课程的学生的总人数.select count (distinct 学号) from 选课23.计算1号课程的学生的平均成绩.select avg(成绩) from 选课where 课程号=’1’24.查询选修1号课程的学生最高分数.select max(成绩) from 选课where 课程号=’1’25.求各个课程号及相应的选课人数.select 课程号,count(学号) from 选课group by 课程号26. 查询选修了3门以上课程的学生的学号.select 学号from 选课group by 学号having count(*)>3[这里先用group by 子句按学号分组,再用集函数count 对每一组计数.having 短语指定选择组的条件,只有满足条件(即元组的个数>3,表示此学生选修的课程超过3门)的组才会被选出来.where 子句与having 短语的区别在于作用的对象不同.where子句作用于基本表或视图,从中选择满足条件的元组.having 短语作用于组,从中选择满足条件的组.]27. 查询每个学生及其选修课程的情况。

SQL语句练习及参考答案

SQL语句练习及参考答案

SQL语句练习及参考答案SQL 语句练习1.设学⽣选课数据库有关系S (sno,sname,age,sex )、SC (sno,cno,grade )和C(cno,cname,teacher ),分别表⽰学⽣、选课和课程,sno 代表学号,sname 代表学⽣姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。

试完成表⽰下列查询。

(1)检索年龄⼤于21的男学⽣学号(sno)和姓名(sname)。

(2)建⽴性别只能为“男”、“⼥”的约束。

(3)创建⼀个视图v1,该视图⽤来查询学⽣的选课情况,要求包含:学⽣姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。

(4)检索选修课程号为k1和k5的学⽣学号(sno)。

(5)检索全部学⽣都选修的课程的课程号(cno)和课程名(cname)。

(6)删除所有男同学的选课记录。

1.(1)select sno,snae from s where sex=’男’ and age>21 (2)alter table s add constraint c1 check sex in (‘男’,’⼥’)(3)create view v1 as select sname,cname,teacher,grade from s,sc,c where s.sno=sc.sno and/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o (4)select sno fromsc sc1 where cno=’k1’ and exists (se lect * fromsc sc2 where sc1.sno =sc2.sno and/doc/62176c89fe4733687e21aaca.html o=’k5’)(5)select cno,cnam from c where not exists (select * from s where not exists (select * from sc where/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o and s.sno=sc.sno)(6)delete from sc where sno in (select sno from s where sex=’男’)或delete sc from sc,s where s.sno=sc.sno and sex=’男’2.设图书借阅数据库有关系图书(图书编号,书名,作者,出版社,出版时间,图书类别)、读者(读者编号,姓名,读者类别)和借阅(读者编号, 图书编号, 借阅⽇期,还期)。

50条数据库sql语句及答案

50条数据库sql语句及答案
(select count(courseid) from tblCourse where teaid = (
select teaid from tblTeacher where teaname = '叶平')))
--练习
select stuid from tblScore where courseid in (
--11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
------运用连接查询
SELECT DISTINCT ST.* FROM tblStudent ST, tblScore SC WHERE ST.STUID = SC.STUID
AND SC.COURSEID IN
select stuid from tblScore GROUP BY STUID HAVING max(SCORE)<60)
--10、查询没有学全所有课的同学的学号、姓名;
--练习
SELECT TS.STUID,TS.STUNAME,COUNT(TSC.SCORE) FROM tblStudent TS
TC.COURSEID INNER JOIN tblTeacher TT ON TC.TEAID = TT.TEAID
WHERE TT.TEANAME ='叶平')
--对
SELECT STUID, STUNAME FROM tblStudent WHERE STUID NOT IN(
where A.SCORE > B.SCORE
--老师讲的方法
SELECT T.* FROM tblScore T WHERE T.COURSEID = 1 AND

SQL查询语句练习资料

SQL查询语句练习资料

SQL查询语句一.单表查询1.选择表中的若干列(即关系代数中的“投影”运算)1)查询指定列例1 查询全体学生的学号和姓名。

SELECT 学号,姓名FROM 学生;2)查询全部列例2 查询全体学生的详细记录。

SELECT *FROM 学生;3)查询经过计算的值例3 查询全体学生的姓名及其年龄。

SELECT 姓名,ROUND ( ( DATE()-出生日期) / 365,1 ) AS 年龄FROM 学生;2.选择表中的若干记录(即关系代数中的“选择”运算)1)消除取值重复的行例4 查询选修了课程的学生学号。

SELECT DISTINCT 学号FROM 成绩;2)查询满足条件的记录a)比较大小例5 查询所有少数民族同学的姓名和民族。

SELECT 姓名,民族FROM 学生WHERE民族<>”汉”b)字符匹配(模糊查询)例6 查询所有姓李的学生的姓名和性别。

SELECT 姓名,性别FROM 学生WHERE 姓名LIKE “李*”;例7 查询所有名字第2个字为“小”的学生姓名和性别。

SELECT 姓名,性别FROM 学生WHERE 姓名LIKE “?小*”;c)涉及空值的查询例8 查询缺少成绩的学生的学号和相应的课程号。

SELECT 学号, 课程编号FROM 成绩WHERE 成绩IS NULL;d)多重条件查询例9 查询所有白族男同学的姓名。

SELECT 姓名FROM 学生WHERE 性别=”男” AND 民族=”白族”;3.对查询结果排序例10查询选修了S0105 课程的学生的学号及其成绩,查询结果按分数降序排列。

SELECT 学号,成绩FROM 成绩WHERE 课程编号=”S0105”ORDER BY 成绩DESC;例11 查询全体学生情况,查询结果按所属院系的编号升序排列,同一系的学生按年龄升序排列。

SELECT *FROM 学生ORDER BY 所属院系ASC,出生日期DESC;4.使用集函数COUNT ([DISTINCT | ALL]*) 统计记录个数COUNT ([DISTINCT | ALL] <>) 统计一列中值的个数SUM ([DISTINCT | ALL] <>) 计算一列值的总和(此列必须是数值型)A VG ([DISTINCT | ALL] <>) 计算一列值的平均值(此列必须是数值型)MAX ([DISTINCT | ALL] <>) 求一列值中的最大值MIN ([DISTINCT | ALL] <>) 求一列值中的最小值例12 查询学生总人数。

SQL查询练习题

SQL查询练习题
或 SELECT S#,SNAME FROM S WHERE S# IN (SELECT S# FROM SC WHERE C# IN (SELECT C# FROM C WHERE CNMAE=‘MATHS’))
设教学数据库中有三个关系: 学生关系 S (S#,SNAME,AGE,SEX) 选课关系 SC(S#,C#,GRADE) 课程关系 (4)C查(C询#,选CN修A课M程E,号TE为ACC2H或ERC)4的学生学号。 SELECT S# FROM SC WHERE C#=‘C2’ OR C#=‘C4’
SQL查询练习题
It is applicable to work report, lecture and teaching
设教学数据库中有三个关系: 学生关系 S(S#,SNAME,AGE,SEX) 选课关系 SC(S#,C#,GRADE) 课程关系 C(C#,CNAME,TEACHER) 下面用SQL语句实现下面每个查询: (1)查询学习课程号为C2的学生学号与成绩。
设教学数据库中有三个关系: 学生关系 S(S#,SNAME,AGE,SEX) 选课关系 SC(S#,C#,GRADE) 课程关系 C(C#,CNAME,TEACHER)
(17)求年龄大于所有女同学年龄的男学生和年龄。 SELECT SNAME,AGE FROM S WHERE SEX=‘男’ AND AGE>ALL(SELECT AGE FROM S WHERE SEX=‘女’)
设教学数据库中有三个关系: 学生关系 S(S#,SNAME,AGE,SEX) 选课关系 SC(S#,C#,GRADE) 课程关系 C(C#,CNAME,TEACHER)
(13)在SC表中检索成绩为空值的学生学号和课程号。 SELECT S#,C# FROM SC WHERE GRADE IS NULL

SQL查询习题及答案

SQL查询习题及答案

36.设教学用的四个基本表(S,C,T,SC)(2)查询年龄大于23岁的女同学的学号和姓名select 姓名,学号from swhere 性别='女' and 年龄>23(3)查询至少选修了刘老师所讲授课程中的一门课程的女同学姓名select s.姓名from s,scwhere s.性别='女'and s.学号=sc.学号and sc.课程编号in(select c.课程编号from c,twhere c.教师编号=t.教师编号and t.姓名='刘%')(4)查询至少选修了2门课程的学生学号select sc.学号from scgroup by 学号having count(课程编号)>2(5)查询全部学生都选修的课程号与课程名select c.课程编号,c.课程名称from c,scwhere sc.课程编号=c.课程编号and sc.学号=(select distinct s.学号from s)(6)计算机系每个教师讲授的课程号select t.教师编号,课程编号from c,twhere t.所在系='计算机系(7)查询没有选修过任何一门课程的学生的学号select s.学号from swhere s.学号not in(select distinct sc.学号from sc)(10)统计个系教师的人数select count (教师编号)from tgroup by 所在系(11)统计出教师人数超过10人的系的名称select t.所在系from tgroup by 所在系having count(教师编号)>10(12)在选课表SC中查询成绩为NULL的学生的学号和课程号select 学号课程编号from scwhere 成绩='NULL'(13)姓王的同学的年龄、姓名、选课名称、成绩select 年龄,姓名,课程名称,成绩from s,c,scwhere s.学号=sc.学号and c.课程编号=sc.课程编号and s.姓名='王%'(14)查询年龄大于女同学平均年龄的男同学姓名和年龄select 姓名,年龄from swhere 性别='男' and 年龄>(select avg(年龄)from swhere 性别='女')37.在数据库{USER、ORDER}中,用户需要查询“所有于2009年5月25日下订单的女顾客姓名”。

sql语句练习50题

sql语句练习50题

sql语句练习50题Student(Sid,Sname,Sage,Ssex) 学⽣表Course(Cid,Cname,Tid) 课程表SC(Sid,Cid,score) 成绩表Teacher(Tid,Tname) 教师表练习内容:1.查询“某1”课程⽐“某2”课程成绩⾼的所有学⽣的学号;SELECT a.sid FROM (SELECT sid,score FROM SC WHERE cid=1) a,(SELECT sid,score FROM SC WHERE cid=3) b WHEREa.score>b.score AND a.sid=b.sid;此题知识点,嵌套查询和给查出来的表起别名2.查询平均成绩⼤于60分的同学的学号和平均成绩;SELECT sid,avg(score) FROM sc GROUP BY sid having avg(score) >60;此题知识点,GROUP BY 语句⽤于结合合计函数,根据⼀个或多个列对结果集进⾏分组。

group by后⾯不能接where,having代替了where3.查询所有同学的学号、姓名、选课数、总成绩SELECT Student.sid,Student.Sname,count(SC.cid),sum(score)FROM Student left Outer JOIN SC on Student.sid=SC.cid GROUP BY Student.sid,Sname4.查询姓“李”的⽼师的个数;select count(teacher.tid)from teacher where teacher.tname like'李%'5.查询没学过“叶平”⽼师课的同学的学号、姓名;SELECT Student.sid,Student.Sname FROM Student WHERE sid not in (SELECT distinct( SC.sid) FROM SC,Course,Teacher WHERE SC.cid=Course.cid AND Teacher.id=Course.tid AND Teacher.Tname='叶平');此题知识点,distinct是去重的作⽤6.查询学过“```”并且也学过编号“```”课程的同学的学号、姓名;select a.SID,a.SNAME from (select student.SNAME,student.SID from student,course,sc where cname='c++'and sc.sid=student.sid and sc.cid=course.cid) a,(select student.SNAME,student.SID from student,course,sc where cname='english'and sc.sid=student.sid and sc.cid=course.cid) b where a.sid=b.sid;标准答案(但是好像不好使)SELECT Student.S#,Student.Sname FROM Student,SC WHERE Student.S#=SC.S# ANDSC.C#='001'and exists( SELECT * FROM SC as SC_2 WHERE SC_2.S#=SC.S# AND SC_2.C#='002');此题知识点,exists是在集合⾥找数据,as就是起别名7.查询学过“叶平”⽼师所教的所有课的同学的学号、姓名;select a.sid,a.sname from (select student.sid,student.sname from student,teacher,course,scwhere teacher.TNAME='杨巍巍' and teacher.tid=course.tid and course.cid=sc.cid and student.sid=sc.sid) a标准答案:SELECT sid,Sname FROM Student WHERE sid in (SELECT sid FROM SC ,Course ,Teacher WHERE SC.cid=Course.cid AND Teacher.tid=Course.tid AND Teacher.Tname='杨巍巍' GROUP BY sid having count(SC.cid)=(SELECT count(cid) FROM Course,Teacher WHERE Teacher.tid=Course.tid AND Tname='杨巍巍'))8.查询课程编号“”的成绩⽐课程编号“”课程低的所有同学的学号、姓名;select a.sid,a.sname from(select student.SID,student.sname,sc.SCORE from student,sc where student.sid=sc.sid and sc.cid=1) a, (select student.SID,student.sname,sc.score from student,sc where student.sid=sc.sid and sc.cid=2) b where a.score<b.score anda.sid=b.sid标准答案:SELECT sid,Sname FROM (SELECT Student.sid,Student.Sname,score ,(SELECT score FROM SC SC_2 WHERE SC_2.sid=Student.sid AND SC_2.cid=1) score2 FROM Student,SCWHERE Student.sid=SC.sid AND cid=1) S_2 WHERE score2 <score;9.查询所有课程成绩⼩于分的同学的学号、姓名;SELECT sid,Sname FROM Student WHERE sid not in (SELECT Student.sid FROM Student,SC WHERE Student.sid=SC.sid AND score>60);此题知识点,先查出⼤于60分的,然后not in 就是⼩于60分的了10.查询没有学全所有课的同学的学号、姓名;SELECT Student.sid,Student.Sname FROM Student,SCWHERE Student.sid=SC.sid GROUP BY Student.sid,Student.Sname having count(cid) <(SELECT count(cid) FROM Course);11.查询⾄少有⼀门课与学号为“”的同学所学相同的同学的学号和姓名;12.查询⾄少学过学号为“”同学所有⼀门课的其他同学学号和姓名;SELECT student.sid,student.Sname FROM Student,SC WHERE Student.sid=SC.sid AND cid in (SELECT cid FROM SC WHERE sid=1)此题知识点,SELECT sid,Sname FROM Student,SC WHERE Student.sid=SC.sid AND cid in (SELECT cid FROM SC WHEREsid=1)这样写是错误的,因为from后⾯是两个表,不能明确是哪个表⾥⾯的sid和sname所以错误提⽰是“未明确定义列”13.把“SC”表中“叶平”⽼师教的课的成绩都更改为此课程的平均成绩;update sc set score=(select avg(score) from sc,course,teacher where course.cid=sc.cid and course.tid=teacher.tid andteacher.tname='杨巍巍')14.查询和“”号的同学学习的课程完全相同的其他同学学号和姓名;SELECT sid FROM SC WHERE cid in (SELECT cid FROM SC WHERE sid=6) GROUP BY sid having count(*)=(SELECT count(*) FROM SC WHERE sid=6);此题知识点,⽤数量来判断15.删除学习“叶平”⽼师课的SC表记录;delete from sc s where s.cid in (select c.cid from teacher t,course c where t.tid = c.tid and tname='李⼦')此题知识点,嵌套查询可以分布考虑,先查出李⼦⽼师都交了什么课的id,然后再删除那些id的值16.向SC表中插⼊⼀些记录,这些记录要求符合以下条件:没有上过编号“”课程的同学学号、课程的平均成绩;Insert into SC SELECT sid,2,(SELECT avg(score) FROM SC WHERE cid=2) FROM Student WHERE sid not in (SELECT sid FROM SC WHERE cid=2);17.按平均成绩从⾼到低显⽰所有学⽣的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显⽰:学⽣ID,,数据库,企业管理,英语,有效课程数,有效平均分;(没做出来)18.查询各科成绩最⾼和最低的分:以如下形式显⽰:课程ID,最⾼分,最低分;select cid as 课程号,max(score)as 最⾼分,min(score) as 最低分 from sc group by cid标准答案(但是运⾏不好使)SELECT L.cid As 课程ID,L.score AS 最⾼分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.cid = R.cid ANDL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.cid = IL.cid AND IM.sid=IL.sidGROUP BY IL.cid)AND R.Score = (SELECT MIN(IR.score) FROM SC AS IR WHERE R.cid = IR.cid GROUP BY IR.cid );19.按各科平均成绩从低到⾼和及格率的百分数从⾼到低顺序26.查询每门课程被选修的学⽣数select sc.cid,count(sc.sid) from sc,course where sc.cid=course.cid group by sc.cid27.查询出只选修了⼀门课程的全部学⽣的学号和姓名SELECT SC.sid,Student.Sname,count(cid) AS 选课数 FROM SC ,StudentWHERE SC.sid=Student.sid GROUP BY SC.sid ,Student.Sname having count(cid)=1;32.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列SELECT Cid,Avg(score) FROM SC GROUP BY cid ORDER BY Avg(score),cid DESC ;37.查询不及格的课程,并按课程号从⼤到⼩排列SELECT cid,sid FROM sc WHERE score <60 ORDER BY cid38.查询课程编号为且课程成绩在分以上的学⽣的学号和姓名;select student.sid,student.sname from sc,student where sc.cid=1 and sc.score>60 and sc.sid=student.sid40.查询选修“叶平”⽼师所授课程的学⽣中,成绩最⾼的学⽣姓名及其成绩select student.sname,sc.score from sc,student,teacher,course c where teacher.tname='李⼦'and teacher.tid=c.tid and c.cid=sc.cid and sc.sid=student.sid and sc.score=(select max(score)from sc where sc.cid=c.cid)41.查询各个课程及相应的选修⼈数select sc.cid ,count(sc.sid)from sc,student where sc.sid=student.sid group by sc.cid43.查询每门功成绩最好的前两名44.统计每门课程的学⽣选修⼈数(超过⼈的课程才统计)。

SQL查询语句考试及答案

SQL查询语句考试及答案

一、聚合函数练习1、统计<学生信息表>,统计共有多少个学生Select count (*) as 学生数量from A_studentinfo2、统计<学生信息表>,统计年龄大于20岁的学生有多少个Select count(*) as 学生数量from A_studentinfowhere (2008-yearofbirth)>203、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数select count(*) as 学生数量from A_studentinfowhere enrollment between '1998-01-01' and '2003-12-30'对比以下查询方式,看看有何不同,为什么?select count(*) as 学生数量from A_studentinfowhere enrollment between '1998' and '2003'4、统计<学生选修信息表>,统计学号为"S001"的学生的平均成绩Select avg(score) as 平均成绩from A_studentcoursewhere sno='S001'5、统计<学生选修信息表>,统计学号为"S001"的学生的总成绩select sum(score) as 总成绩from A_studentcoursewhere sno ='S001'6、统计<学生选修信息表>,查询课程号为”C001”的课程的最高成绩select max(score) as 最高成绩from A_studentcoursewhere cno='C001'7、统计<学生信息表>,查询所有学生中的最大年龄是多少select 2008-min(yearofbirth) as 最大年龄from A_studentinfo二、单表查询练习from A_studentinfowhere sname='张三'2、查询<学生信息表>,查询学生"张三"和”李四”的基本信息Select *from A_studentinfowhere sname='张三'or sname='李四'3、查询<学生信息表>,查询姓"张"学生的基本信息Select *from A_studentinfowhere sname like '张%'4、查询<学生信息表>,查询姓名中含有"四"字的学生的基本信息Select *from A_studentinfowhere sname like '%四%'5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。

SQL查询语句练习作业

SQL查询语句练习作业

一、创建名为“student”的表,结构见表1,内容见表2表1 student表结构字段名类型宽度学号字符型10姓名字符型10性别字符型 4出生日期日期型8专业字符型20年级数值型10表2 student表二、练习SQL查询语句——基础的select格式: select 字段名 from 表名1、写出查找student表中所有字段的语句,并在命令窗口测试2、写出查找student表中学号的语句,并在命令窗口测试3、写出查找student表中姓名的语句,并在命令窗口测试4、写出查找student表中性别的语句,并在命令窗口测试5、写出查找student表中出生日期的语句,并在命令窗口测试6、写出查找student表中专业的语句,并在命令窗口测试7、写出查找student表中年级的语句,并在命令窗口测试8、写出查找student表中学号和姓名的语句,并在命令窗口测试(注意逗号是英文状态)9、写出查找student表中学号、姓名和性别的语句,并在命令窗口测试10、写出查找student表中学号、姓名、性别和出生日期的语句,并在命令窗口测试11、写出查找student表中学号、姓名、性别、出生日期和专业的语句,并在命令窗口测试12、写出查找student表中学号、姓名、性别、出生日期、专业和年级的语句,并在命令窗口测试三、练习SQL查询语句——where条件查询格式: select 字段名 from 表名 where 条件1、查找student表中学号是101001的学生,写出语句,并在命令窗口测试2、查找student表中李玲的个人信息,写出语句,并在命令窗口测试3、查找student表中所有的男学生,写出语句,并在命令窗口测试4、查找student表中的在1992年3月1日(含)之后出生的学生,写出语句,并在命令窗口测试5、查找student表中信息管理专业的学生,写出语句,并在命令窗口测试6、查找student表中2012级的学生,写出语句,并在命令窗口测试四、练习SQL查询语句——where条件查询AND OR格式: select 字段名 from 表名 where 条件1 and/or 条件21、查找student表中学号为121001和131005的学生信息,写出语句,并在命令窗口测试2、查找student表中李泽田和王海东的个人信息,写出语句,并在命令窗口测试3、查找student表中工商管理专业的男生信息,写出语句,并在命令窗口测试4、查找student表中在1992年和1993年出生的学生,写出语句,并在命令窗口测试5、查找student表中信息管理专业和工商管理专业的女学生,写出语句,并在命令窗口测试6、查找student表中2012级和2013级中1993年出生的学生,写出语句,并在命令窗口测试五、练习SQL查询语句——where条件查询like格式: select 字段名 from 表名 where 字段名like 套式1、查找student表中姓王的学生信息,写出语句,并在命令窗口测试2、查找student表中姓王和姓贾的学生信息,写出语句,并在命令窗口测试3、查找student表中姓王、姓贾和姓李的学生信息,写出语句,并在命令窗口测试4、查找student表中姓名中含“泽”的学生信息,写出语句,并在命令窗口测试5、查找student表中姓名中含“文”的学生信息,写出语句,并在命令窗口测试6、查找student表中姓名中最后1个字是“玲”的学生信息,写出语句,并在命令窗口测试7、查找student表中姓名中最后1个字是“文”的学生信息,写出语句,并在命令窗口测试8、查找student表中姓名有3个字,中间的字是“文”的学生,写出语句,并在命令窗口测试9、查找student表中姓王的男生信息,写出语句,并在命令窗口测试10、查找student表中姓王和姓李的女生信息,写出语句,并在命令窗口测试11、查找student表中姓名中含“文”的女生信息,写出语句,并在命令窗口测试六、练习SQL查询语句——where条件查询between格式: select 字段名 from 表名 where 字段名between 值1 and 值2 1、查找student表中在1992年出生的学生,写出语句,并在命令窗口测试2、查找student表中在1992年和1993年出生的学生,写出语句,并在命令窗口测试3、查找student表中在2010级、2011级、2012级的学生,写出语句,并在命令窗口测试七、练习SQL查询语句——where条件查询order by格式: select 字段名 from 表名 where 条件 order by 字段名 asc/desc 1、把student表中的学生信息按学号降序排列显示,写出语句,并在命令窗口测试2、把student表中的学生信息按姓名降序排列显示,写出语句,并在命令窗口测试3、把student表中的学生信息按姓名升序排列显示,写出语句,并在命令窗口测试4、把student表中的学生信息按年龄升序排列显示,写出语句,并在命令窗口测试5、把student表中的学生信息按年龄降序排列显示,写出语句,并在命令窗口测试6、查找student表中所有的男生,并按学号降序排列,写出语句,并在命令窗口测试6、查找student表中所有的女生,并按姓名升序排列,写出语句,并在命令窗口测试7、查找student表中的在1992年出生的学生,并按年龄降序排列,写出语句,并在命令窗口测试8、查找student表中信息管理专业的学生,并按照姓名降序排列,写出语句,并在命令窗口测试9、把student表中的学生信息按性别分类显示,男生在前,女生在后,男生和女生,各自按照姓名升序排列,写出语句,并在命令窗口测试八、练习SQL查询语句——where条件查询count格式: select count(*) from 表名 where 条件1、统计student表中的学生总人数,写出语句,并在命令窗口测试2、统计student表中男生人数,写出语句,并在命令窗口测试3、统计student表中姓王的人数,写出语句,并在命令窗口测试。

SQL数据库查询语言练习

SQL数据库查询语言练习

SQL数据库查询语言练习:一、建立一个数据库表student,数据表computer,字段名name,number,sex,SQL2000,flash,net ,其中SQL2000,flash,net设置为数值型数据1、输出所有男生的成绩select yuyan as SQL数据库,flash as 网络动画,net as 计算机网络;from computer ;where sex2、输出所有SQL成绩在90以上的女生的成绩select SQL2000 as SQL数据库from computer ;where not sex and SQL2000>=903、输出某一科目不合格所有的男生的成绩select yuyan as SQL数据库,flash as 网络动画,net as 计算机网络;from computer ;where sex and SQL2000<60 or flash<60 or net<604、计算并显示每位同学各科的总分和平均分,并按总分从高到低排序select SQL2000+flash+net as 总分,(SQL2000+flash+net/3)as 平均分;from computer ;order by SQL2000+flash+net desc5、输出所有计算机网络成绩在70-79之间的同学select * from computer ;where flash between 70 and 796、输出所有姓“陈”和姓“李”的男生select * from computer;where sex and left(name,1) in ('李', '陈')或者use studentselect * from computerwhere sex='男' (and name like '李__'or name like '陈__')7、输出所有学号为偶数的同学成绩select num as 学号,SQL2000 as SQL数据库,flash as 网络动画,net as 计算机网络;from computer;where num%2=08、输出Flash成绩最好的5位同学select top 5 * from computer order by flash desc9、更新同学的成绩,把计算机网络成绩在55-59之间的同学该科的成绩调整为60分update computer set net=60 where net between 55 and 5910、删除平均分最低的3位同学select top 3 *,(SQL2000+flash+net)/3 as 平均分from computer;order by (SQL2000+flash+net)/3delete from computer where number in(033001,033003,033011)11、统计成绩表中平均分为90以上(含90分)人数select count(*) from computer where (SQL2000+flash+net)/3>=90二、1. 找出没有选修过“李明”老师讲授课程的所有学生姓名--实现代码:select sname from s ;where not exists;(select * from sc,c ;where o=o and c.cteacher='李明' and sc.sno=s.sno) 2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩--实现代码:select s.sno,s.sname,avg_scgrade=avg(sc.scgrade);from s,sc,(;select sno from sc;where scgrade<60;group by sno having count(distinct cno)>=2;)a where s.sno=a.sno and sc.sno=a.sno;group by s.sno,s.sname3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名--实现代码:select s.sno,s.sname;from s,(;select sc.sno;from sc,c;where o=o;and ame in('1','2');group by sno;having count(distinct cno)=2;)sc where s.sno=sc.sno4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号--实现代码:select s.sno,s.sname;from s,sc sc1,sc sc2;where o='1';and sc2.sno='2';and o=o;and sc1.scgrade>sc2.scgrade5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩--实现代码:select sc1.sno,[1号课成绩]=sc1.scgrade,[2号课成绩]=sc2.scgrade;from sc sc1,sc sc2;where o='1';and o='2';and sc1.sno=sc2.sno;and sc1.scgrade>sc2.scgrade练习题目1、查询Student表中的所有记录的Sname、Ssex和Class列。

sql语句的查询基本题(总结)

sql语句的查询基本题(总结)

1.构造SQL语句,列出在1981年入职的员工的姓名、入职时间和月收入(薪水和奖金之和),并将入职时间显示为:”1981-10月-10”这种形式。

select ename ,to_char(hiredate,'yyyy')||'-'||to_char(hiredate,'mm')||'月-'||to_char(hiredate,'dd') ,(sal+nvl(comm,0)) from EMP t whereto_char(hiredate,'yyyy')='1981';2.列出职员表中员工的姓名、薪水、所属部门名称,并按照薪水由高到低排序。

select ename,sal,dname from emp e join dept d on e.deptno=d.deptno order by sal desc;3.列出每个员工的名字(别名为EMPLOYEE)及他们的直接领导的名字(别名为MANAGER), 如果直接领导的姓名为null,显示为Boss。

select ename EMPLOYEE,nvl((select ename from emp b where a.mgr=b.empno),'BOSS') MANAGER from emp a;4.查询哪些职位的薪水总和大于5000元,列出这些职位和其薪水总和,并按薪水总和升值排序。

select job,sum(sal) from emp a group by a.job having sum(sal)>5000order by sum(sal) asc;5.查询哪个部门的平均薪水比20部门的平均薪水低,列出这些部门的编号和平均薪水值。

select deptno,avg(sal) from emp a group by a.deptno having avg(sal)<(select avg(sal) from emp a group by a.deptno having deptno='20');6.查询机构中薪水最低的五名员工,列出员工姓名和薪水值。

sql 查询 练习题

sql 查询 练习题

sql 查询练习题SQL查询练习题SQL是一种用于管理和操作关系型数据库的语言,它可以让我们轻松地从数据库中提取所需的数据。

在实际应用中,熟练掌握SQL查询语句的编写是非常重要的。

为了帮助大家提高SQL查询的能力,下面将给出一些SQL查询练习题。

1. 查询所有员工的姓名和工资。

```sqlSELECT 姓名, 工资 FROM 员工表;```2. 查询所有部门的名称和员工数量。

```sqlSELECT 部门名称, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门名称; ```3. 查询所有工资高于平均工资的员工信息。

```sqlSELECT * FROM 员工表 WHERE 工资 > (SELECT AVG(工资) FROM 员工表);```4. 查询每个部门工资最高的员工信息。

```sqlSELECT * FROM 员工表 WHERE (部门名称, 工资) IN (SELECT 部门名称, MAX(工资) FROM 员工表 GROUP BY 部门名称);```5. 查询没有分配部门的员工信息。

```sqlSELECT * FROM 员工表 WHERE 部门名称 IS NULL;```6. 查询每个部门的平均工资,并按照平均工资降序排列。

```sqlSELECT 部门名称, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门名称ORDER BY 平均工资 DESC;```7. 查询每个部门的员工数量,并按照员工数量升序排列。

```sqlSELECT 部门名称, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门名称ORDER BY 员工数量 ASC;```8. 查询员工表中工资排名前10的员工信息。

```sqlSELECT * FROM 员工表 ORDER BY 工资 DESC LIMIT 10;```9. 查询每个部门的员工工资排名前3的员工信息。

SQL查询语法30例

SQL查询语法30例

SQL查询语法30例学好SQL查询:无他,概手熟耳。

1. 基础表:学生表:老师表:课程表:成绩表:2. 题目:1、查询名字中含有"华"字的学生信息select * from 学生 where sname like '%华%'2、查询并统计同龄学生人数select sage,count(sid) from 学生 group by sage3、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列select cid,avg(Cscore) from 成绩group by cid order by avg(Cscore),cid desc4、按平均成绩从高到低显示所有学生的平均成绩select sid,avg(Cscore) from 成绩group by sid order by avg(Cscore) desc5、查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分select sc.cid 课程ID, ame 课程名, max(sc.Cscore) 最高分,min(sc.Cscore) 最低分,avg(sc.Cscore) 平均分from 成绩sc left join 课程 c on sc.cid=c.cidgroup by sc.cid6、按各科平均成绩从低到高顺序排序select cid, avg(Cscore) from 成绩group by cid order by avg(Cscore) desc7、查询学生的总成绩并进行排名select sid 学号,sum(Cscore) 总分 from 成绩 group by sid order by sum(Cscore) desc8、检索至少选修两门课程的学生学号select sid from 成绩 group by sid having count(cid) > 19、查询每门课程被选修的学生数select cid,count(cid) from 成绩 group by cid10、查询不及格的课程,并按课程号从大到小排列select * from 成绩 group by cid having cscore < 60 order by cid desc11、查询出只选修了一门课程的全部学生的学号和姓名select sid,sname from 学生 where sid in(select sid from 成绩 group by sid having count(sid) = 1)12、查询课程编号为"01"且课程成绩在60分以上的学生的学号和姓名;select sid,sname from 学生 where sid in(select sid from 成绩 wherecid = 'c01'and Cscore>=60)13、查询“01”课程比“02”课程成绩高的所有学生的学号;select sc1.sid from 成绩 sc1, 成绩 sc2 wheresc1.sid = sc2.sidand sc1.cid = 'c01'and sc2.cid = 'c02'and sc1.cscore > sc2.Cscore14、查询平均成绩大于60分的同学的学号和平均成绩;select sid, avg(Cscore) from 成绩group by sid having avg(Cscore) > 6015、查询姓“李”的老师的个数;select count(1) from 教师 where Tname like '李%'16、查询没学过“何倩文”老师课的同学的学号、姓名;select sid, sname from 学生 where sid not in(select sid from 成绩 where cid =(select cid from 课程 where Cteacher = '何倩文'))17、查询学过编号“01”并且也学过编号“02”课程的同学的学号、姓名;select sid, sname from 学生 where sid in(select sc1.sid from 成绩 sc1 where sid in(select sc2.sid from 成绩 sc2 where cid = 'c01')and cid = 'c02')select sid,sname from 学生 where sid in(select sc1.sid from 成绩 sc1,成绩 sc2 wheresc1.sid=sc2.sidand sc1.cid = 'c01'and sc2.cid = 'c02')18、查询没学过"李征辉"老师讲授的任一门课程的学生姓名select sid,sname from 学生 where sid not in(select distinct(sid) from 成绩 where cid in (select cid from 课程 where Cteacher = '李征辉'))19、查询所有同学的学号、姓名、选课数、总成绩select sc.sid, s.sname, count(sc.cid), sum(Cscore) from 成绩 sc left join 学生 s on sc.sid = s.sidgroup by sc.sid20、查询学过“张三”老师所教的课的同学的学号、姓名;select sid, sname from 学生 where sid in(select distinct(sc.sid) from 成绩 scleft join 课程 c on sc.cid=c.cid where c.Cteacher = '李征辉') order by sid21、查询课程编号“01”的成绩比课程编号“02”课程低的所有同学的学号、姓名;select sid, sname from 学生 where sid in(select sc1.sid from 成绩 sc1, 成绩 sc2 wheresc1.sid = sc2.sidand sc1.cid = 'c01'and sc2.cid = 'c02'and sc1.Cscore < sc2.Cscore22、查询所有课程成绩小于60分的同学的学号、姓名;select sid, sname from 学生 where sid not in(select distinct(sid) from 成绩 where cscore >= 60) and sid in(select sid from 成绩 group by sid having count(sid) != 0)或select sid, sname from 学生 where sid not in(select s.sid from 学生 sleft join 成绩 sc on s.sid=sc.sid where Cscore > 60 or Cscore is null)或select sid, sname from 学生 where sid in(select sc.sid from 成绩sc group by sid having max(sc.Cscore)<60)23、查询没有学全所有课的同学的学号、姓名;select s.sid, s.sname from 学生 sleft join 成绩 sc on s.sid=sc.sidgroup by s.sid having count(s.sid) != (select count(1) from 课程)24、查询至少有一门课与学号为“01”的同学所学相同的同学的学号和姓名;select sid, sname from 学生 where sid in(select distinct(sid) from 成绩 where cid in (select cid from 成绩 where sid = 's01') and sid != 's01'或select distinct(s.sid),sname from 学生 sleft join 成绩 sc on s.sid = sc.sid where sc.cid in(select cid from 成绩 where sid = 's01')and s.sid != 's01'25、查询和"01"号的同学学习的课程完全相同的其他同学的学号和姓名select s.sid from 学生 s left join 成绩 sc on s.sid = sc.sid where sc.cid in(select cid from 成绩 where sid = 's01') group by s.sidhaving count(s.sid) =(select count(cid) from 成绩 where sid='s01')and s.sid != 's01'26、把“成绩”表中“高磊”老师教的课的成绩都更改为此课程的平均成绩;update 成绩 set Cscore = (select avg(sc.Cscore) from 课程 cleft join 成绩 sc on c.cid = sc.cid where Cteacher = '高磊') where cid in (select cid from 课程 where Cteacher = '高磊')27、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩select s.sid, s.sname, avg(sc.Cscore) from 学生 sleft join 成绩 sc on s.sid = sc.sid where s.sid in(select sid from 成绩 sc where Cscore < 60 group by sid having count(sid) > 2)28、检索"01"课程分数小于60,按分数降序排列的学生信息select * from 学生 s left join 成绩 sc on s.sid=sc.sid where sc.Cscore < 60and sc.cid = 'c01'order by sc.Cscore desc29、查询不同老师所教不同课程平均分从高到低显示select c.Cteacher,ame, avg(sc.Cscore) from 成绩 scleft join 课程 c on sc.cid=c.cidgroup by sc.cidorder by avg(sc.Cscore) desc30、查询选修“李征辉”老师所授课程的学生中,成绩最高的学生姓名及其成绩select s.sname, max(sc.Cscore) from 学生 sleft join 成绩 sc on s.sid=sc.sid where sc.cid in (select cid from 课程 where Cteacher = '李征辉'。

sql语句 例题

sql语句 例题

sql语句例题当然可以。

以下是一些SQL语句的例题:1.查询所有学生信息:sql复制代码:SELECT * FROM students;2.查询年龄大于20岁的学生信息:sql复制代码:SELECT * FROM students WHERE age > 20;3.查询年龄在20到25岁之间的学生信息:sql复制代码:SELECT * FROM students WHERE age BETWEEN 20 AND 25;4.查询名字为"John"的学生信息:sql复制代码:SELECT * FROM students WHERE name = 'John';5.查询名字以"J"开头的学生信息:sql复制代码:SELECT * FROM students WHERE name LIKE 'J%';6.查询名字为"John"或"Jane"的学生信息:sql复制代码:SELECT * FROM students WHERE name IN ('John', 'Jane');7.对学生成绩进行排序,首先按分数降序,然后按名字升序:sql复制代码:SELECT * FROM students ORDER BY score DESC, name ASC;8.查询年龄最大的学生信息:sql复制代码:SELECT * FROM students ORDER BY age DESC LIMIT 1;9.查询年龄最小的学生信息:sql复制代码:SELECT * FROM students ORDER BY age ASC LIMIT 1;10.计算学生的总数:sql复制代码:SELECT COUNT(*) FROM students;。

sql查询语句(45题)

sql查询语句(45题)
WHERE A.SNO=B.SNO GROUP BY A.CLASS HAVING A.CLASS='95033'
--18、假设使用如下命令建立了一个grade 表:
create table grade(low int,upp int,rank char(1));
insert into grade values(90,100,'A');
SELECT SNO FROM SCORE GROUP BY SNO HAVING MIN(DEGREE)>70 AND MAX(DEGREE)<90
--14、查询所有学生的Sname、Cno和Degree列。
SELECT A.SNAME,O,B.DEGREE FROM STUDENT A,SCORE B WHERE A.SNO=B.SNO
SELECT A.SNO,O,A.DEGREE FROM SCORE A,SCORE B WHERE O='3-105' AND A.DEGREE>B.DEGREE AND B.SNO='109' AND O='3-105'
--20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (856,'张旭','男','1969-03-12','讲师','电子工程系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)

SQL查询语句练习及结果

SQL查询语句练习及结果

SQL查询语句练习及结果1 单表查询1.1 查询订购⽇期在1996年7⽉1⽇⾄1996年7⽉15⽇之间的订单的订购⽇期、订单ID、客户ID和雇员ID等字段的值查询语句:select 订单ID客户ID雇员ID订购⽇期from 订单WHERE 订购⽇期BETWEEN '1996-7-1' AND '1996-7-15';1.2 查询供应商的ID、公司名称、地区、城市和电话字段的值。

条件是“地区等于华北”并且“联系⼈头衔等于销售代表”。

查询语句:select 供应商ID公司名称地区城市电话from `供应商`WHERE 地区 = '华北'AND 联系⼈职务 = '销售代表';1.3 查询供应商的ID、公司名称、地区、城市和电话字段的值。

其中的⼀些供应商位于华东或华南地区,另外⼀些供应商所在的城市是天津查询语句:select 供应商ID公司名称地区城市电话from `供应商`WHERE 地区 in('华东''华南') or 城市 = '天津';1.4 查询位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值查询语句:select 供应商ID公司名称地区城市电话 from `供应商` WHERE 地区 in('华东''华南');2 多表查询2.1查询订购⽇期在1996年7⽉1⽇⾄1996年7⽉15⽇之间的订单的订购⽇期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓⽒和名字等字段的值,并将查询结果按雇员的“姓⽒”和“名字”字段的升序排列,“姓⽒”和“名字”值相同的记录按“订单ID”的降序排列查询语句:select 订购⽇期订单ID公司名称姓⽒名字from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 雇员 c on a.雇员ID = c.雇员IDWHERE 订购⽇期 BETWEEN '1996-7-1' AND '1996-7-15'order by 姓⽒名字订单ID2.2 查询“10248”和“10254”号订单的订单ID、运货商的公司名称、订单上所订购的产品的名称查询语句:select 订购⽇期订单ID公司名称姓⽒名字from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 雇员 c on a.雇员ID = c.雇员IDWHERE 订购⽇期 BETWEEN '1996-7-1' AND '1996-7-15'order by 姓⽒名字订单ID2.3 查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称、数量、单价和折扣查询语句:select a.订单IDc.产品名称b.单价b.数量b.折扣from 订单 aleft join 订单明细 b on a.订单ID = b.订单IDleft join 产品 c on c.产品ID = b.产品IDwhere a.订单ID in('10248''10254')2.4 查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称及其销售⾦额销售⾦额=单价*数量*(1-折扣)查询语句:select a.订单IDc.产品名称 round(b.单价*b.数量*(1-b.折扣)2) as 销售⾦额from 订单 aleft join 订单明细 b on a.订单ID = b.订单IDleft join 产品 c on c.产品ID = b.产品IDwhere a.订单ID in('10248''10254')3 综合查询3.1 查询所有运货商的公司名称和电话查询语句:select 公司名称电话 from 运货商3.2 查询所有客户的公司名称、电话、传真、地址、联系⼈姓名和联系⼈头衔查询语句:select 公司名称电话传真地址联系⼈姓名联系⼈职务from 客户3.3 查询单价介于10⾄30元的所有产品的产品ID、产品名称和库存量查询语句:select 产品ID产品名称库存量from 产品where 单价 BETWEEN 10 and 303.4 查询单价⼤于20元的所有产品的产品名称、单价以及供应商的公司名称、电话查询语句:select a.产品名称a.单价b.公司名称b.电话from 产品 aleft join 供应商 b on a.供应商ID = b.供应商IDwhere 单价 > 203.5 查询上海和北京的客户在1996年订购的所有订单的订单ID、所订购的产品名称和数量查询语句:select a.订单IDd.产品名称c.数量from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 订单明细 c on a.订单ID = c.订单IDleft join 产品 d on c.产品ID =d.产品IDwhere b.城市 in('上海''北京')3.6 查询华北客户的每份订单的订单ID、产品名称和销售⾦额查询语句:select a.订单IDd.产品名称 round(c.单价*c.数量*(1-c.折扣)2) as 销售⾦额from 订单 a left join 客户 b on a.客户ID = b.客户IDleft join 订单明细 c on a.订单ID = c.订单IDleft join 产品 d on c.产品ID =d.产品IDwhere b.地区 = '华北'3.7 按运货商公司名称,统计1997年由各个运货商承运的订单的总数量查询语句:select b.公司名称count(a.订单ID) as 订单总数量from 订单 aleft join 运货商 b on a.运货商 = b.运货商IDwhere year(a.订购⽇期) = 1997group by b. 公司名称3.8 统计1997年上半年的每份订单上所订购的产品的总数量查询语句:select b.公司名称sum(c.数量) as 产品总数量from 订单 aleft join 运货商 b on a.运货商 = b.运货商IDleft join 订单明细 c on a.订单ID = c.订单IDwhere 订购⽇期 between '1997-01-01' and '1997-06-30'group by b.公司名称3.9 统计各类产品的平均价格查询语句:select 类别名称round(sum(a.单价*a.数量*(1-a.折扣))/sum(a.数量)2) as 平均价格from 订单明细 a left join 产品 b on a.产品ID = b.产品IDleft join 类别 c on b.类别ID = c.类别IDgroup by c.类别名称3.10 统计各地区客户的总数量查询语句:select 地区count(客户ID) as 客户总数from 客户group by 地区。

简单的SQL语句练习大全

简单的SQL语句练习大全

简单的SQL语句练习大全一:本题用到下面三个关系表:CARD借书卡。

CNO 卡号,NAME姓名,CLASS 班级BOOKS图书。

BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY库存册数BORROW借书记录。

CNO 借书卡号,BNO 书号,RDA TE 还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。

要求实现如下15个处理:1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。

//表名borrow2.找出借书超过5本的读者,输出借书卡号及所借图书册数。

3.查询借阅了"水浒"一书的读者,输出姓名及班级。

4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。

5.查询书名包括"网络"关键词的图书,输出书号、书名、作者。

6.查询现有图书中价格最高的图书,输出书名及作者。

7.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。

8.将"C01"班同学所借图书的还期都延长一周。

9.从BOOKS表中删除当前无人借阅的图书记录。

10.如果经常按书名查询图书信息,请建立合适的索引。

11.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SA VE表中(注ORROW_SA VE表结构同BORROW表)。

12.建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)。

13.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。

14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。

SQL查询语句练习(50题)

SQL查询语句练习(50题)

SQL查询语句练习(50题)Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;2、查询平均成绩大于60分的同学的学号和平均成绩;3、查询所有同学的学号、姓名、选课数、总成绩;4、查询姓“李”的老师的个数;5、查询没学过“叶平”老师课的同学的学号、姓名;6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;9、查询所有课程成绩小于60分的同学的学号、姓名;10、查询没有学全所有课的同学的学号、姓名;11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;15、删除学习“叶平”老师课的SC表记录;16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、002号课的平均成绩;17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分19、按各科平均成绩从低到高和及格率的百分数从高到低顺序20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)21、查询不同老师所教不同课程平均分从高到低显示22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]24、查询学生平均成绩及其名次25、查询各科成绩前三名的记录:(不考虑成绩并列情况)26、查询每门课程被选修的学生数27、查询出只选修了一门课程的全部学生的学号和姓名28、查询男生、女生人数29、查询姓“张”的学生名单30、查询同名同性学生名单,并统计同名人数31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩34、查询课程名称为“数据库”,且分数低于60的学生姓名和分数35、查询所有学生的选课情况;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;37、查询不及格的课程,并按课程号从大到小排列38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;39、求选了课程的学生人数40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩41、查询各个课程及相应的选修人数42、查询不同课程成绩相同的学生的学号、课程号、学生成绩43、查询每门功成绩最好的前两名44、统计每门课程的学生选修人数(超过10人的课程才统计)。

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

Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表1.查询“001”课程比“002”课程成绩高的所有学生的学号;2.查询平均成绩大于60分的同学的学号和平均成绩;3.查询所有同学的学号、姓名、选课数、总成绩;4.查询姓“李”的老师的个数;5.查询没学过“叶平”老师课的同学的学号、姓名;6.查询所有课程成绩小于60分的同学的学号、姓名;7.查询没有学全所有课的同学的学号、姓名;8.查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;49.删除学习“叶平”老师课的SC表记录; 310.取各科平均成绩和及格率,按及格率的百分数从高到低顺序211.查询不同老师所教不同课程平均分从高到低显示512.统计列印各科,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60] 6\13.查询每门课程被选修的学生数714.查询出只选修了一门课程的全部学生的学号和姓名115.查询男生、女生人数16.查询姓“张”的学生名单17.查询同名同姓学生名单,并统计同名人数18.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列19.查询平均成绩大于85的所有学生的学号、姓名和平均成绩20.查询课程名称为“数据库”,且分数低于60的学生姓名和分数21.查询所有学生的选课情况,学号、课程号、姓名、课程名22.查询任意一门课程成绩在70分以上的姓名、课程名称和分数;23.查询有成绩不及格的课程,并按课程号从大到小排列24.查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;25.查询各个课程及相应的选修人数26.检索至少选修两门课程的学生学号27.查询没学过“叶平”老师讲授的任一门课程的学生姓名28.查询两门以上不及格课程的同学的学号及其平均成绩29.检索“004”课程分数小于60,按分数降序排列的同学学号30.删除“002”同学的“001”课程的成绩经典SQL练习题CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL,SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL,SBIRTHDAY DATETIME,CLASS VARCHAR(5))goCREATE TABLE COURSE(CNO VARCHAR(5) NOT NULL,CNAME VARCHAR(10) NOT NULL,TNO VARCHAR(10) NOT NULL)goCREATE TABLE SCORE(SNO VARCHAR(3) NOT NULL,CNO VARCHAR(5) NOT NULL,DEGREE NUMERIC(10, 1) NOT NULL)goCREATE TABLE TEACHER(TNO VARCHAR(3) NOT NULL,TNAME VARCHAR(4) NOT NULL, TSEX VARCHAR(2) NOT NULL,TBIRTHDAY DATETIME NOT NULL, PROF VARCHAR(6),DEPART VARCHAR(10) NOT NULL)INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾华' ,'男' ,1977-09-01,95033);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明' ,'男' ,1975-10-02,95031);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王丽' ,'女' ,1976-01-23,95033);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李军' ,'男' ,1976-02-20,95033);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳' ,'女' ,1975-02-10,95031);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陆君' ,'男' ,1974-06-03,95031);GOINSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-105' ,'计算机导论',825)INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-245' ,'操作系统' ,804);INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('6-166' ,'数据电路' ,856); INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('9-888' ,'高等数学' ,100); GOINSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-245',86); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-245',75); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-245',68); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-105',92); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-105',88); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-105',76); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'3-105',64); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'3-105',91); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'3-105',78); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'6-166',85); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'6-106',79); INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'6-166',81);GOINSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (804,'李诚','男','1958-12-02','副教授','计算机系');INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (856,'张旭','男','1969-03-12','讲师','电子工程系');INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (825,'王萍','女','1972-05-05','助教','计算机系');INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (831,'刘冰','女','1977-08-14','助教','电子工程系');题目:1、查询Student表中的所有记录的Sname、Ssex和Class列。

2、查询教师所有的单位即不重复的Depart列。

3、查询Student表的所有记录。

4、查询Score表中成绩在60到80之间的所有记录。

5、查询Score表中成绩为85,86或88的记录。

6、查询Student表中“95031”班或性别为“女”的同学记录。

7、以Class降序查询Student表的所有记录。

8、以Cno升序、Degree降序查询Score表的所有记录。

9、查询“95031”班的学生人数。

10、查询Score表中的最高分的学生学号和课程号。

11、查询…3-105‟号课程的平均分。

12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。

Select avg(degreeg) from score where cno like …3%‟13、查询最低分大于70,最高分小于90的Sno列。

14、查询所有学生的Sname、Cno和Degree列。

15、查询所有学生的Sno、Cname和Degree列。

16、查询所有学生的Sname、Cname和Degree列。

17、查询“95033”班所选课程的平均分。

18、假设使用如下命令建立了一个grade表:create table grade(low number(3,0),upp number(3),rank char(1));insert into grade values(90,100,‟A‟);insert into grade values(80,89,‟B‟);insert into grade values(70,79,‟C‟);insert into grade values(60,69,‟D‟);insert into grade values(0,59,‟E‟);commit;现查询所有同学的Sno、Cno和rank列。

相关文档
最新文档