SQL练习
SQL专项练习题
SQL专项练习题SQL专项练习题一、选择题:1、SQL语言的核心是_____。
A)数据查询B)数据定义C)数据操纵D)数据控制2、下列关于SQL语言特点的叙述错误的是_________。
A)SQL是一种一体化的语言B)SQL是一种高度过程化的语言C)SQL语言非常简洁D)SQL语言可以直接以命令方式交互使用,也可嵌入到程序中使用3、在SQL查询中,HAVING子句的作用是______。
A)指出分组查询的范围B)指出分组查询的值C)指出分组查询的条件人D)指出分组查询的字段4、在SQL中,与集合成员算术比较操作“元组<>ALL”的等价操作符是______。
A)NOT IN B)IN C)<>SOME D)=SOME5、下列利用空值查询的命令中,正确的一项是______。
A)IS NULL B)=NULL C)NULL D)SELECT NULL6、可以将两个SELECT语句的查询结果通过并运算合并成一个查询结果,需要子句_____。
A)WHERE B)UNION C)ORDER BY D)IN7、SQL的查询结果可以存放到多种类型的文件中,下列不能用来存放查询结果的是_________。
A)临时表B)永久性表C)视图D)文本文件8、下列不属于SQL数据操作功能的是_______。
A)新建表B)添加记录C)修改记录D)删除记录9、下列关于INSERT-SQL的叙述正确的是______。
A)在表末尾增加一条记录B)在表头增加一条记录C)在表中任意位置插入一条记录D)在表中可插入若干条记录10、若需统计“选课”表中已经选修了课程的学生人数,下面语句正确的是_____。
A)SELECT COUNT(DISTINCT 学生号)FROM 选课B)SELECT COUNT(学生号)FROM 选课C)SELECT COUNT(*)FROM 选课D)SELECT COUNT (DISTINCT *)FROM 选课11、“学生表”的结构为(学生号N(4),姓名C(8),性别C(2),年龄N(2)),其中学号为主索引,下面可使用SQL_INSERT插入到表中的记录是_______。
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 语句练习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.设图书借阅数据库有关系图书(图书编号,书名,作者,出版社,出版时间,图书类别)、读者(读者编号,姓名,读者类别)和借阅(读者编号, 图书编号, 借阅⽇期,还期)。
最全的SQL练习题(做完你就是高手)
最全的SQL练习题(做完你就是⾼⼿)最全的SQL练习题(做完你就是⾼⼿)补充作业⼀设有三个关系:S(SNO, SNAME, AGE, SEX,Sdept)SC(SNO, CNO, GRADE)C(CNO, CNAME, TEACHER)试⽤关系代数表达式表⽰下列查询:-- 1、查询学号为S3学⽣所学课程的课程名与任课教师名。
SELECT c.`name`, c.teacher FROM student_class sc LEFT JOIN `class` c ON o = c.NO WHERE sc.sno = 's3';-- 2、查询⾄少选修LIU⽼师所教课程中⼀门课的⼥⽣姓名。
select s.sname from student as s where s.sno in(select DISTINCT sc.sno from student_class as sc left join class as c on o=o where c.teacher='LIU')and s.sex=2;-- 3、查询WANG同学不学的课程的课程号。
select o from class as c where o not in(select DISTINCT o from student as s inner join student_class as sc on s.sno=sc.sno where s.sname='WANG');-- 4、查询⾄少选修两门课程的学⽣学号。
select sno, count(*) as cou from student_class group by sno having cou>=2;-- 5、查询选修课程中包含LIU⽼师所教全部课程的学⽣学号。
select sc.sno from student_class as sc INNER JOIN class as c on o=o where c.teacher='LIU';补充作业⼆三个关系同上,试⽤SQL语⾔表⽰下列查询:1、查询门门课程都及格的学⽣的学号⽅法1:提⽰:根据学号分组,就得到每个学⽣所有的课程成绩,在某个学⽣这⼀组成绩⾥,如果他所有的课程成绩都⼤于60分则输出该组学⽣的学号Select sno frome sc group by sno having min(grade)>=60;2、查询既有课程⼤于90分⼜有课程不及格的学⽣的学号⾃⾝连接:Select sno from sc where grade >90 and sno in (select sno from sc where grade<60)3、查询平均分不及格的课程号和平均成绩Select cno , avg(GRADE) from sc group by cno having avg(grade)<60查询平均分及格的课程号和课程名Select o , Cname from SC,C where o=o group by o having avg(grade)>=604、找出⾄少选修了2号学⽣选修过的全部课程的学⽣提⽰:不存在这样的课程y,学⽣2选修了y,⽽学⽣x没有选。
SQL经典50题练习
创建表及插⼊数据学⽣表Studentcreate table SC(SId varchar(10),CId varchar(10),score decimal(18,1));insert into SC values('01' , '01' , 80);insert into SC values('01' , '02' , 90);insert into SC values('01' , '03' , 99);insert into SC values('02' , '01' , 70);insert into SC values('02' , '02' , 60);insert into SC values('02' , '03' , 80);insert into SC values('03' , '01' , 80);insert into SC values('03' , '02' , 80);insert into SC values('03' , '03' , 80);insert into SC values('04' , '01' , 50);insert into SC values('04' , '02' , 30);insert into SC values('04' , '03' , 20);insert into SC values('05' , '01' , 76);insert into SC values('05' , '02' , 87);insert into SC values('06' , '01' , 31);insert into SC values('06' , '03' , 34);insert into SC values('07' , '02' , 89);insert into SC values('07' , '03' , 98);练习题⽬1. 查询" 01 "课程⽐" 02 "课程成绩⾼的学⽣的信息及课程分数1.1 查询同时存在" 01 "课程和" 02 "课程的情况1.2 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显⽰为 null )1.3 查询不存在" 01 "课程但存在" 02 "课程的情况2. 查询平均成绩⼤于等于 60 分的同学的学⽣编号和学⽣姓名和平均成绩3. 查询在 SC 表存在成绩的学⽣信息4. 查询所有同学的学⽣编号、学⽣姓名、选课总数、所有课程的总成绩(没成绩的显⽰为 null )4.1 查有成绩的学⽣信息5. 查询「李」姓⽼师的数量6. 查询学过「张三」⽼师授课的同学的信息7. 查询没有学全所有课程的同学的信息8. 查询⾄少有⼀门课与学号为" 01 "的同学所学相同的同学的信息9. 查询和" 01 "号的同学学习的课程 完全相同的其他同学的信息10. 查询没学过"张三"⽼师讲授的任⼀门课程的学⽣姓名11. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩12. 检索" 01 "课程分数⼩于 60,按分数降序排列的学⽣信息13. 按平均成绩从⾼到低显⽰所有学⽣的所有课程的成绩以及平均成绩14. 查询各科成绩最⾼分、最低分和平均分:以如下形式显⽰:课程 ID,课程 name,最⾼分,最低分,平均分,及格率,中等率,优良率,优秀率及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90要求输出课程号和选修⼈数,查询结果按⼈数降序排列,若⼈数相同,按课程号升序排列15. 按各科成绩进⾏排序,并显⽰排名, Score 重复时保留名次空缺15. 按各科成绩进⾏排序,并显⽰排名, Score 重复时保留名次空缺15.1 按各科成绩进⾏排序,并显⽰排名, Score 重复时合并名次16. 查询学⽣的总成绩,并进⾏排名,总分重复时保留名次空缺16.1 查询学⽣的总成绩,并进⾏排名,总分重复时不保留名次空缺17. 统计各科成绩各分数段⼈数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分⽐18. 查询各科成绩前三名的记录19. 查询每门课程被选修的学⽣数20. 查询出只选修两门课程的学⽣学号和姓名21. 查询男⽣、⼥⽣⼈数22. 查询名字中含有「风」字的学⽣信息23. 查询同名同性学⽣名单,并统计同名⼈数24. 查询 1990 年出⽣的学⽣名单25. 查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列26. 查询平均成绩⼤于等于 85 的所有学⽣的学号、姓名和平均成绩27. 查询课程名称为「数学」,且分数低于 60 的学⽣姓名和分数28. 查询所有学⽣的课程及分数情况(存在学⽣没成绩,没选课的情况)29. 查询任何⼀门课程成绩在 70 分以上的姓名、课程名称和分数30. 查询不及格的课程31. 查询课程编号为 01 且课程成绩在 80 分以上的学⽣的学号和姓名32. 求每门课程的学⽣⼈数33. 成绩不重复,查询选修「张三」⽼师所授课程的学⽣中,成绩最⾼的学⽣信息及其成绩34. 成绩有重复的情况下,查询选修「张三」⽼师所授课程的学⽣中,成绩最⾼的学⽣信息及其成 绩35. 查询不同课程成绩相同的学⽣的学⽣编号、课程编号、学⽣成绩36. 查询每门功成绩最好的前两名37. 统计每门课程的学⽣选修⼈数(超过 5 ⼈的课程才统计)。
SQL数据库查询练习题及答案(四十五道题)
SQL数据库查询练习题及答案(四⼗五道题)题⽬:设有⼀数据库,包括四个表:学⽣表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
四个表的结构分别如表1-1的表(⼀)~表(四)所⽰,数据如表1-2的表(⼀)~表(四)所⽰。
⽤SQL语句创建四个表并完成相关题⽬。
表1-1数据库的表结构表(⼀)Student (学⽣表)属性名数据类型可否为空含义Sno varchar (20)否学号(主码)Sname varchar (20)否学⽣姓名Ssex varchar (20)否学⽣性别Sbirthday datetime可学⽣出⽣年⽉Class varchar (20)可学⽣所在班级表(⼆)Course(课程表)属性名数据类型可否为空含义Cno varchar (20)否课程号(主码)Cname varchar (20)否课程名称Tno varchar (20)否教⼯编号(外码)表(三)Score(成绩表)属性名数据类型可否为空含义Sno varchar (20)否学号(外码)Cno varchar (20)否课程号(外码)Degree Decimal(4,1)可成绩主码:表(四)Teacher(教师表)属性名数据类型可否为空含义Tno varchar (20)否教⼯编号(主码)Tname varchar (20)否教⼯姓名Tsex varchar (20)否教⼯性别Tbirthday datetime可教⼯出⽣年⽉Tbirthday datetime可教⼯出⽣年⽉Prof varchar (20)可职称Depart varchar (20)否教⼯所在部门表1-2数据库中的数据表(⼀)StudentSno Sname Ssex Sbirthday class 108曾华男1977-09-0195033 105匡明男1975-10-0295031 107王丽⼥1976-01-2395033 101李军男1976-02-2095033 109王芳⼥1975-02-1095031 103陆君男1974-06-0395031表(⼆)CourseCno Cname Tno3-105计算机导论8253-245操作系统8046-166数字电路8569-888⾼等数学831表(三)ScoreSno Cno Degree1033-245861053-245751093-245681033-105921053-105881093-105761013-105641073-105911073-105911083-105781016-166851076-166791086-16681表(四)TeacherTno Tname Tsex Tbirthday Prof Depart 804李诚男1958-12-02副教授计算机系856张旭男1969-03-12讲师电⼦⼯程系825王萍⼥1972-05-05助教计算机系831刘冰⼥1977-08-14助教电⼦⼯程系查询问题:1、查询Student表中的所有记录的Sname、Ssex和Class列。
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查询练习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 检索职工表中工资大于800元的职工号,正确的命令是() A、SELECT 职工号 WHERE 工资>800 B、SELECT 职工号 FROM 职工 SET 工资>800 C、SELECT 职工号 FROM 职工 WHERE 工资>800 D、SELECT 职工号 FROM 职工 FOR 工资>8002 找出在仓库面积大于500的仓库中工作的职工号,以及这些职工工作所在的城市,正确的命令是() A、SELECT 职工号,城市 FROM 职工;WHERE (面积>500).OR.(职工.仓库号=仓库.仓库号) B、SELECT 职工号,城市 FROM 职工;WHERE (面积>500).AND.(职工.仓库号=仓库.仓库号) C、SELECT 职工号,城市 FROM 仓库,职工;WHERE (面积>500).OR.(职工.仓库号=仓库.仓库号) D、SELECT 职工号,城市 FROM 仓库,职工;WHERE (面积>500).AND.(职工.仓库号=仓库.仓库号)3 利用SQL语句,检索仓库中至少有一名职工的仓库信息,正确的命令是() A、SELECT * FROM 仓库表 WHERE IN;(SELECT 仓库号 FROM 职工表) B、 SELECT * FROM 仓库表 WHERE NOT IN;(SELECT 仓库号 FROM 职工表) C、 SELECT * FROM 仓库表 WHERE 仓库号EXISTS;(SELECT * FROM 职工表 WHERE 仓库号=仓库表.仓库号) D、 SELECT * FROM 仓库表 WHERE EXISTS;(SELECT * FROM 职工表 WHERE 仓库号=仓库表.仓库号)4 从设备表中查询单价大于100000元的设备,并显示设备名称,正确的命令是() A、 SELECT 单价>100000 FROM 设备表 FOR 设备名称 B、 SELECT 设备名称FROM 设备表 FOR单价>100000 C、SELECT 单价>100000 FROM 设备表 WHERE 设备名称 D、SELECT 设备名称 FROM 设备表 WHERE 单价>1000005 为设备表增加一个“设备总金额N(10,2)”字段,正确的命令是() A、ALTER TABLE 设备表 ADD FIELDS 设备总金额N(10,2) B、ALTER TABLE 设备表 ADD 设备总金额N(10,2) C、ALTER TABLE 设备表 ALTER FIELDS 设备总金额N(10,2) D、ALTER TABLE 设备表 ALTER 设备总金额N(10,2)6 利用SQL数据更新功能,自动计算更新每个“设备总金额”字段的字段值,该字段值等于“单价*设备数量”的值,正确命令为() A、 UPDATE 设备表 SET 设备总金额=单价*设备数量 B、UPDATE 设备表 FOR 设备总金额=单价*设备数量C、 UPDATE 设备表 WITH 设备总金额=单价*设备数量 D、UPDATE 设备表 WHERE 设备总金额=单价*设备数量7 有如下SQL语句:SELECT 使用部门,SUM(单价*设备数量)AS 总金额 FROM 设备表;WHERE .NOT.(进口);GROUP BY 使用部门执行该语句后,第一条记录的“总金额”字段值是() A、196000 B、143000 C、294000 D、172008 SQL的查询结果可以存放到多种类型的文件中,下列都可以用来存放查询结果的文件类型是( ) A、临时表、视图、文本文件 B、数组、永久性表、视图 C、永久性表、数组、文本文件 D、视图、永久性表、文本文件9 语句“DELETE FROM 成绩表 WHERE 计算机<60”的功能是() A、物理删除成绩表中计算机成绩在60分以下的学生记录 B、物理删除成绩表中计算机成绩在60分以上的学生记录 C、逻辑删除成绩表中计算机成绩在60分以下的学生记录D、将计算机成绩低于60分的字段值删除,但保留记录中其它字段值10 关于SQL的超联接查询,说法错误的是() A、在SQL中可以进行内部联接、左联接、右联接和全联接 B、SQL的超联接运算符“*=”代表左联接,“=*”代表右联接 C、Visual FoxPro同样支持超联接运算符“*=”和“=*” D、利用全联接,即使两个表中的记录不满足联接条件,也会在目标表或查询结果中出现,只是不满足条件的记录对应部分为NULL11 在SQL语句中,表达式“工资BETWEEN 1220 AND 1250”的含义是() A、工资>1220.AND.工资<1250 B、工资>1220.OR.工资<1250 C、工资>=1220.AND.工资<=1250 D、工资>=1220.OR.工资<=125012 SQL语句中修改表结构的命令是() A、ALTER TABLE B、MODIFY TABLE C、ALTER STRUCTURE D、MODIFY STRUCTURE13 删除表的SQL命令是() A、DROP TABLE B、DELETE TABLE C、ERASE TABLED、KILL TABLE14 在SQL语句中用于分组的短语是() A、MODIFY B、ORDER BY C、GROUP BY D、SUM15 要为职工表的所有职工增加100元工资,正确的SQL命令是() A、REPLACE 职工 SET 工资=工资+100 B、UPDATE 职工 SET 工资=工资+100 C、EDIT 职工 SET 工资=工资+100 D、CHANGE 职工 SET 工资=工资+10016 要为职工表的所有职工增加100元工资,正确的SQL命令是() A、UPDATE 职工 SET 工资 WITH 工资+100 B、UPDATE 工资=工资+100 FOR 职工 C、UPDATE 工资 WITH 工资+100 FOR 职工 D、UPDATE 职工 SET 工资=工资+10017 SQL语言的核心是() A、数据查询 B、数据定义 C、数据操纵 D、数据控制18 SQL除了数据查询的功能,还有() A、数据定义 B、数据操纵 C、数据控制 D、以上答案均正确19 下列关于SQL语言特点叙述错误的是() A、SQL是一种一体化的语言 B、SQL是一种高度过程化的语言 C、SQL语言非常简洁 D、SQL语言可以直接以命令方式交互使用,也可嵌入到程序中使用20 在Visual FoxPro中,SQL没有提供() A、数据查询功能 B、数据定义功能 C、数据操纵功能 D、数据控制功能21 标准的SQL基本查询语句的结构是() A、SELECT FROM ORDER BY B、SELECT WHERE GROUP BY C、SELECT WHERE HAVING D、SELECT FROM WHERE22 在SQL SELECT中,要将查询结果进行排序,应该使用短语 A、ORDER BY B、GROUP BY C、COUNT D、SUM23 嵌套查询命令中的IN相当于() A、等号(=) B、集合运算符(∈) C、加号(+) D、减号(-)24 在SQL查询中,HAVING字句的作用是() A、指出分组查询的范围 B、指出分组查询的值 C、指出分组查询的条件 D、指出分组查询的字段25 下列利用空值查询的命令是,正确的一项是() A、IS NULL B、=NULL C、NULL D、SELECT NULL26 下列关于别名和自联接的说法中,正确的是() A、SQL语句允许在WHERE 短语中为关系定义别名 B、为关系定义别名的格式为:<别名><关系名> C、在关系的自联接操作中,别名是必不可少的 D、以上说法均正确27 Visual FoxPro的SQL SELECT语句的联接格式能实现联接表的个数为() A、一个表 B、两个表 C、三个表 D、任意多的表28 在显示结果时,只需要显示满足条件的前几个记录,则必须使用短语() A、TOP B、BOTTOM C、PERCENT D、BY29 下列不属于SQL数据操作功能的是() A、新建表 B、添加记录 C、修改记录 D、删除记录30 下列关于INSERT SQL的叙述正确的是() A、在表末尾增加一条记录 B、在表头增加一条记录 C、在表中任意位置插入一条记录 D、在表中可插入若干条记录31 下列关于SQL对表的定义说法错误的是() A、利用CREATE TABLE语句可以定义一个新的数据表结构 B、利用SQL的表定义语句可以定义表中的主索引 C、利用SQL的表定义语句可以定义表的域完整性、字段有效性规则等 D、对于自由表的定义,SQL同样可以实现其完整性、有效性规则等信息的设置32 若需统计“选课”表中已经选修了课程的学生人数,下面语句正确的是() A、SELECT COUNT(DISTINCT 学生号) FROM 选课 B、SELECT COUNT (学生号)FROM 选课 C、SELECT COUNT(*)FROM 选课 D、SELECT COUNT(DISTINCT *)FROM 选课33 “学生表”的结构为(学生号N(4),姓名C(8),性别C(2),年龄N (2)),其中学号为主索引,下面可使用SQL INSERT插入到表中的记录是()A、(“1001”,“张力”,“男”,“18”) B、(1001,“张力”,NULL,18) C、(NULL,“张力”,“男”,18) D、(1001,张力,男,18)34 SQL语言是() A、层次数据库语言 B、网状数据库语言 C、关系数据库语言 D、对立的数据库语言35 下列查询类型中,不属于SQL查询的是() A、简单查询 B、嵌套查询 C、联接查询 D、视图查询36 SQL中可使用通配符() A、~ B、* C、? D、第二选项和第三选项37 在SQL的计算查询中,用于计数的函数是() A、SUM B、COUNT C、AVG D、MAX38 下列关于SQL嵌套查询的说法,正确的是() A、既能对外层查询排序,又能对内层查询排序 B、只能对外层查询排序,不能对内层查询排序 C、不能对外层查询排序,只能对内层查询排序 D、既不能对外层查询排序,也不能对内层查询排序39 在SQL命令中设置为全联接的短语是() A、INNER JOIN B、LEFT JOIN C、RIGHT JOIN D、FULL JOIN40 如果要将由表派生出的视图中的字段重新命名,需要使用的短语是() A、AS B、FOR C、WHERE D、TO41 利用SQL的CREATE命令定义一个自由表,可以定义表的() A、字段名、字段类型、字段宽度 B、字段的主索引和域完整性的约束规则 C、定义字段的有效性规则 D、以上内容均可定义42 如果要查询工资表中,基本工资在1000~2000元之间的职工记录,则下列语句正确的是() A、SELECT * FROM 工资表 WHERE 基本工资 NOT BETWEEN 1000AND 2000 B、SELECT * FROM 工资表 WHERE 基本工资 BETWEEN 1000~2000 C、SELECT * FROM 工资表 WHERE 基本工资 BETWEEN 1000 AND 2000 D、SELECT 工资表 FROM * WHERE BETWEEN 1000 AND 200043 假设有学生表和成绩表两个数据表文件,如果要查找总分在350分以上的学生姓名及名次,下列语句中正确的是() A、SELECT 姓名,名次 FROM 学生表,成绩表 WHERE (总分>350).OR.(学生表.学号=成绩表.学号) B、SELECT 姓名,名次 FROM 学生表,成绩表 C、SELECT 姓名,名次 FROM 学生表,成绩表 WHERE (总分>350).AND.(学生表.学号=成绩表.学号) D、SELECT 姓名,名次 FROM 学生表,成绩表 WHERE (总分>=350).AND.(学生表.学号=成绩表.学号)44 在SQL语句中,修改表中数据的命令是() A、ALTER B、UPDATE C、DELETED、INSERT45 SQL的数据操作语言不包括() A、INSERT B、UPDATE C、DELETE D、CHANGE46 在SELECT SQL语句中,条件短语的关键字是() A、FROM B、WHERE C、FORD、CONDITION47 如果在SQL SELECT语句的ORDER BY字句中指定了DESC,则表示() A、按升序排序 B、按降序排序 C、按索引字段排序 D、错误语句48 用于显示部分查询结果的TOP短语,必须与下列()短语连用 A、WHERE B、ORDER BY C、FROM D、GROUP BY49 将两个SELECT语句的查询结果合并成一个查询结果的运算符是() A、WHEREB、JOINC、UNIOND、INTO50 在SQL的数据定义功能中,修改表结构的命令有3种,下列说法正确的是()A、3种命令格式都可以用来添加、修改和删除字段名B、3种命令格式都可以用来定义、修改和删除字段有效性规则C、3种命令格式都有各自的功能,不能将所有功能集于一种格式中D、以上说法均不正确二.填空题:1、从职工表中检索所有的工资值,将以下命令补充完整。
SQL专项练习-学生练习
SQL过关练习
28.若要将"产品"表中所有供货商是"ABC"的产品单价下调50,则正确的SQL语 句是______。 A、UPDATE 产品 SET 单价=50 WHERE 供货商="ABC“ B、UPDATE 产品 SET 单价=单价-50 WHERE 供货商="ABC“ C、UPDATE FROM 产品 SET 单价=50 WHERE 供货商="ABC“ D、UPDATE FROM 产品 SET 单价=单价-50 WHERE 供货商="ABC"
计算机基础科学系
SQL过关练习
13.数据库中有"商品"表如下:
执行SQL命令: SELECT * FROM 商品 WHERE 单价 BETWEEN 3000 AND 10000; 查询结果的记录数是______。 A、1 B、2 C、3 D、10
计算机基础科学系
SQL过关练习
14.数据库中有"商品"表如下:
计算机பைடு நூலகம்础科学系
SQL过关练习
10.下列关于SQL命令的叙述中,正确的是______。 A、INSERT命令中可以没有VALUES关键字 B、INSERT命令中可以没有INTO关键字 C、INSERT命令中必须有SET关键字 D、以上说法均不正确 11 .下列关于查询设计视图"设计网格"各行作用的叙述中,错误的是______。 A、“总计”行是用于对查询的字段进行求和 B、“表”行设置字段所在的表或查询的名称 C、“字段”行表示可以在此输入或添加字段的名称 D、"条件"行用于输入一个条件来限定记录的选择 12 .在SELECT语句中使用ORDER BY是为了指定______。 A、查询的表 B、查询结果的顺序 C、查询的条件 D、查询的字段
sql经典50题建表语句
sql经典50题建表语句1、题目:创建一个名为"employees"的表,包含"id"、"name"和"salary"三个字段。
sql:CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),salary DECIMAL(10, 2));2、题目:创建一个名为"orders"的表,包含"order_id"、"customer_id"和"order_date"三个字段。
sql:CREATE TABLE orders (order_id INT PRIMARY KEY,customer_id INT,order_date DATE);3、题目:创建一个名为"products"的表,包含"product_id"、"product_name"和"price"三个字段。
sql:CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(50),price DECIMAL(10, 2));4、题目:创建一个名为"customers"的表,包含"customer_id"、"first_name"、"last_name"和"email"四个字段。
sql:CREATE TABLE customers (customer_id INT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),email VARCHAR(100));5、题目:创建一个名为"addresses"的表,包含"address_id"、"street"、"city"和"state"四个字段。
(完整版)sql练习题+答案
(一) 新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是’男’或’女’(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100之间cs(成绩表):其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0〜100之间,可以不输入值create table cs (sno smallint not null referencesstudent ( sno ), ----定义成外键cno smallint not null referencescourse ( cno ), ----定义成外键cj smallint constraint e check (cj between0 and 100 ),---- 检查约束一—j(成绩)只能在~100之间,可以不输入值constraint f primary key ( sno , cno )---- 定义学生学号和课程号为sc表的主键)course(课程表)其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname非空(三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。
Select sno , sname from student(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。
(3)查询全体学生的详细记录。
select * from student(4)查全体学生的姓名及其出生年份。
select sname , birth from student(5)查询学校中有哪些系。
select distinct dept from student(6)查询选修了课程的学生学号。
select sno from cs where eno is not null(7)查询所有年龄在20岁以下的学生姓名及其年龄。
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练习及答案
第1章数据库系统与数据库概念设计思考与练习一、选择题1.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(A )。
A.DBS包括DB和DBMSB.DBMS包括DB和DBSC.DB包括DBS和DBMSD.DBS就是DB,也就是DBMS2.下面列出的数据库管理技术发展的3个阶段中,没有专门的软件对数据进行管理的阶段是(D)。
I.人工管理阶段II.文件系统阶段III.数据库阶段A.I 和IIB.只有IIC.II 和IIID.只有I3.描述数据库全体数据的全局逻辑结构和特性的是(A )。
A.模式B.内模式C.外模式4.要保证数据库的数据独立性,需要修改的是(C )。
A.模式与外模式B.模式与内模式C.三级模式之间的两层映射D.三级模式5.E-R方法的三要素是(C)。
A.实体、属性、实体集B.实体、键、联系C.实体、属性、联系D.实体、域、候选区6.概念设计的结果是(B )。
A.一个与DBMS相关的要领模型B.一个与DBMS无关的概念模型C.数据库系统的公用视图数据库应用技术(SQL Server 2005)D.数据库系统的数据字典7.下列四项中,不属于数据库系统特点的是(C )。
A.数据共享B.数据完整性C.数据冗余度高D.数据独立性高第2章关系模型与数据库逻辑设计思考与练习一、选择题1.关系数据模型是目前最重要的一种数据模型,它的三个要素是(A )。
A.实体完整性、参照完整性、用户自定义完整性B.数据结构、关系操作、完整性约束C.数据增加、数据修改、数据查询D.外模式、模式、内模式2.一个关系中,能唯一标识元组的属性集称为关系的(B)。
A.副键B.关键字C.从键D.参数3.现有如下关系:患者(患者编号,患者姓名,性别,出生日期,所在单位)、医疗(患者编号,医生编号,医生姓名,诊断日期,诊断结果),其中,医疗关系中的外码是(A )。
A.患者编号B.患者姓名C.患者编号和患者姓名D.医生编号和患者编号4.关系数据库管理系统应能实现的专门关系运算包括(B )。
SQL题库(有答案)
一、选择题:1、根据关系数据基于的数据模型——关系模型的特征判断下列正确的一项:(_B__)A、只存在一对多的实体关系,以图形方式来表示。
B、以二维表格结构来保存数据,在关系表中不允许有重复行存在。
C、能体现一对多、多对多的关系,但不能体现一对一的关系。
D、关系模型数据库是数据库发展的最初阶段。
2、在“连接”组中有两种连接认证方式,其中在(_B__)方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。
A、Windows身份验证B、SQL Server 身份验证C、以超级用户身份登录时D、其他方式登录时3、SQL Server 2000 在安装之前,应注意的事项:(_C__)A、SQL Server 2000的任何版本在安装时都不用考虑操作系统的制约。
B、SQL Server 2000的安装对硬件的要求不作任何限制。
C、SQL Server 2000 在安装之前,必须在操作系统级启用TCP/IP。
D、在Windows NT Server 4.0上安装SQL Server 2000时,最低的要求是必须安装Service Pack 4(SP4)以上。
4、关系数据库中,主键是(1_A__),主键的建立有(2_C__)种方法,当运用Transact-SQL语句创建主键时,可以是(3_B__)。
⑴A、为标识表中唯一的实体B、创建唯一的索引,允许空值C、只允许以表中第一字段建立D、允许有多个主键的⑵A、一B、二C、三D、四⑶A、create table table1(column1 char(13) not null primary,column2 int not) on primary;B、alter table table1 with notcheck addconstraint [PK_table1] primary key nonclustered( column1) on primary;C、alter table table1 column1 primary key ;5、表在数据库中是一个非常重要的数据对象,它是用来(1_C__)各种数据内容的,数据库创建后就可以创建表了,创建表可以用(2_D__)等方法来创建。
SQL语句练习题
SQL语句练习题S Q L语言一、选择题1.S Q L语言是()的语言,容易学习。
A.过程化B.非过程化C.格式化D.导航式2. S Q L语言的数据操纵语句包括S E L E C T、I N S E R T、U PD A T E、D E L E T E等。
其中最重要的,也是使用最频繁的语句是()。
A.S E L E C TB.I N S E R TC.U P D A T ED.D E L E T E3.在视图上不能完成的操作是()。
A.更新视图B.查询C.在视图上定义新的表D.在视图上定义新的视图4.S Q L语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,C R E A T E、D R O P、A L T E R语句是实现哪种功能()。
A.数据查询B.数据操纵C.数据定义D.数据控制5.S Q L语言中,删除一个视图的命令是()。
A.D E L E T EB.D R O PC.C L E A RD.R E M O V E6.在S Q L语言中的视图V I E W是数据库的()。
A.外模式B.模式C.内模式D.存储模式7.下列的S Q L语句中,()不是数据定义语句。
A.C R E A T E T A B L EB.D R O P V I E WC.C R E A T E V I E WD.G R A N T8.若要撤销数据库中已经存在的表S,可用()。
A.D E L E T E T A B L E SB.D E L E T E SC.D R O P T A B L E SD.D R O P S9.若要在基本表S中增加一列C N(课程名),可用()。
A.A D D T A B L E S(C N C H A R(8))B.A D D T A B L E S A L T E R(C N C H A R(8))C.A L T E R T A B L E S A D D(C N C H A R(8))D.A L T E R T A B L E S(A D D C N C H A R(8))10.学生关系模式S(S#,S n a m e,S e x,A g e),S的属性分别表示学生的学号、姓名、性别、年龄。
SQL基本练习题(最新整理)
第一阶段题目:以下练习题是根据初始化到数据库中的表执行的,请务必先执行如下建表语句。
create table s1_student( sno varchar2(10) primary key, sname varchar2(30), sbirthday varchar2(30), ssex varchar2(10),sclass varchar2(10) );create table s1_teacher( tno varchar2(10) primary key, tname varchar2(30),tsex varchar2(10),tbirthday varchar2(30),prof varchar2(30),depart varchar2(30) );create table s1_course( cno varchar2(10), cname varchar2(30), tno varchar2(10) ); create table s1_score( sno varchar2(10), cno varchar2(10), degree number );create table s1_grade( low number, upp number, rank varchar2(2) );/*******初始化学生表s1_student******/insert into s1_student values ('108', '曾华', '1997/9/1', '男', '95033');insert into s1_student values ('105', '匡明', '1995/10/2', '男', '95031');insert into s1_student values ('107', '王丽', '1996/1/23', '女', '95033');insert into s1_student values ('101', '李军', '1996/2/20', '男', '95033');insert into s1_student values ('109', '王芳', '1995/2/10', '女', '95031');insert into s1_student values ('103', '陆君', '1994/6/3', '男', '95031');commit;/*******初始化教师表s1_teacher*******/insert into s1_teacher values ('804', '李诚','男','1979-12-2','副教授','计算机系'); insert into s1_teacher values ('856', '张旭','男','1985-3-12','讲师','电子工程系'); insert into s1_teacher values ('825', '王萍','女','1989-5-2','助教','计算机系');insert into s1_teacher values ('831', '刘冰','女','1988-8-2','助教','电子工程系'); commit;/*******初始化课程表s1_course********/insert into s1_course values ('3-105', '计算机导论', '825');insert into s1_course values ('3-245', '操作系统', '804');insert into s1_course values ('6-166', '数据电路', '856');insert into s1_course values ('9-888', '高等数学', '800');commit;/********初始化成绩表s1_score*********/insert into s1_score values ('103', '3-245', 86);insert into s1_score values ('105', '3-245', 75);insert into s1_score values ('109', '3-245', 68);insert into s1_score values ('103', '3-105', 92);insert into s1_score values ('105', '3-105', 88);insert into s1_score values ('109', '3-105', 76);insert into s1_score values ('101', '3-105', 64);insert into s1_score values ('107', '3-105', 91);insert into s1_score values ('108', '3-105', 78);insert into s1_score values ('101', '6-166', 85);insert into s1_score values ('107', '6-106', 79);insert into s1_score values ('108', '6-166', 81);commit;/********初始化成绩分类表s1_grade*********/insert into s1_grade values ('90', '100', 'A');insert into s1_grade values ('80', '89', 'B');insert into s1_grade values ('70', '79', 'C');insert into s1_grade values ('60', '69', 'D');insert into s1_grade values ('0', '59', 'E');commit;1.查询s1_student表中的所有记录的Sname、Ssex和Class列.select sname,ssex,sclass from s1_student;2.查询教师所有的单位即不重复的Depart列.select distinct depart from s1_teacher;3.查询s1_student表的所有记录.select * from s1_student;4.查询s1_score表中成绩在60到80之间的所有记录.select * from s1_score where degree between60and80;5.查询s1_score表中成绩为85,86或88的记录.select * from s1_score where degree in (85,86,88);6.查询s1_student表中“95031”班或性别为“女”的同学记录.select * from s1_student where sclass='95031'or ssex='女';7.以Class降序查询s1_student表的所有记录.select * from s1_student order by sclass desc;8.以Cno升序、Degree降序查询s1_score表的所有记录。
sql查询题库
sql查询题库
以下是一些SQL查询题,可用于练习和提高SQL查询技能:
1. 查询所有学生的姓名、年龄和性别。
2. 查询年龄大于等于18岁的学生姓名和年龄。
3. 查询所有学生的平均成绩。
4. 查询平均成绩最高的学生姓名和平均成绩。
5. 查询选修了"数学"课程的学生姓名和成绩。
6. 查询选修了多于3门课程的学生姓名。
7. 查询选修了"英语"课程且成绩在90分以上的学生姓名和成绩。
8. 查询选修了"计算机科学"课程的学生的最高成绩和最低成绩。
9. 查询没有选修"英语"课程的学生姓名。
10. 查询选修了最少一门课程的学生姓名。
11. 查询选修了课程数量最多的学生姓名。
12. 查询选修了课程数量少于3门的学生姓名。
13. 查询所有学生的学号、姓名和班级。
14. 查询班级人数最多的学生姓名和班级。
15. 查询选修了"计算机科学"课程的学生的平均成绩。
SQL语言(综合)_课堂练习和习题
SQL语言(综合)_课堂练习和习题SQL语言课堂练习和习题一、选择题1. SQL语言是( )的语言,容易学习.A.过程化B. 非过程化C.格式化D. 导航式2. SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE,DELETE等.其中最重要的,也是使用最频繁的语句是( ) .A. SELECTB. INSERTC. UPDATED. DELETE3. 在视图上不能完成的操作是( ) .A. 更新视图B. 查询C. 在视图上定义新的表D. 在视图上定义新的视图4. SQL语言集数据查询,数据操纵,数据定义和数据控制功能于一体,其中,CREATE,DROP,ALTER语句是实现哪种功能( ).A. 数据查询B. 数据操纵C. 数据定义D. 数据控制5. SQL语言中,删除一个视图的命令是( ).A.DELETEB.DROPC.CLEARD.REMOVE6. 在SQL语言中的视图VIEW是数据库的( ) .A. 外模式B. 模式C. 模式D. 存储模式7. 下列的SQL语句中,( )不是数据定义语句.A. CREATE TABLEB. DROP VIEWC. CREATE VIEWD. GRANT8. 若要撤销数据库中已经存在的表S,可用( ).A. DELETE TABLE SB. DELETE SC. DROP TABLE SD. DROP S9. 若要在基本表S中增加一列CN(课程名),可用( ).A.ADD TABLE S(CN CHAR(8))B.ADD TABLE S ALTER(CN CHAR(8))C.ALTER TABLE S ADD(CN CHAR(8))D.ALTER TABLE S (ADD CN CHAR(8))10. 学生关系模式S( S#,Sname,Sex,Age),S的属性分别表示学生的学号,,性别,年龄.要在表S中删除一个属性"年龄",可选用的SQL语句是( ).A. DELETE Age from SB. ALTER TABLE S DROP AgeC. UPDATE S AgeD. ALTER TABLE S 'Age'11. 有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是学生号,SNAME 是学生,SAGE是学生年龄, C#是课程号,CNAME是课程名称.要查询选修"ACCESS"课的年龄不小于20的全体学生的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句.这里的WHERE子句的容是( ).A. S.S# = SC.S# and C.C# = SC.C# and SAGE>=20 and CNAME='ACCESS'B. S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in 'ACCESS'C. SAGE in>=20 and CNAME in 'ACCESS'D. SAGE>=20 and CNAME=' ACCESS'12. 设关系数据库中一个表S的结构为S(SN,CN,grade),其中SN 为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值围0-100.若要把"二的化学成绩80分"插入S中,则可用( ).A. ADD INTO S V ALUES('二','化学','80')B. INSERT NTO S V ALUES('二','化学','80')C. ADD INTO S V ALUES('二','化学',80)D. INSERT INTO S V ALUES('二','化学',80)13. 设关系数据库中一个表S的结构为:S(SN,CN,grade),其中SN 为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值围0-100.若要更正王二的化学成绩为85分,则可用( ) .A. UPDATE S SET grade=85 WHERE SN='王二' AND CN='化学'B. UPDATE S SET grade='85' WHERE SN='王二' AND CN='化学'C. UPDATE grade=85 WHERE SN='王二' AND CN='化学'D. UPDATE grade='85' WHERE SN='王二' AND CN='化学'14. 在SQL语言中,子查询是( ) .A. 返回单表中数据子集的查询语言B. 选取多表中字段子集的查询语句C. 选取单表中字段子集的查询语句D. 嵌入到另一个查询语句之中的查询语句15. SQL是一种( )语言.A. 高级算法B. 人工智能C. 关系数据库D. 函数型16. 有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是学生号,SNAME是学生,SEX是性别, C#是课程号,CNAME是课程名称.要查询选修"数据库"课的全体男生的SQL 语句是SELECT SNAME FROM S,C,SC WHERE子句.这里的WHERE子句的容是( ).A.S.S# = SC.S# and C.C# = SC.C# and SEX='男' and CNAME='数据库'B.S.S# = SC.S# and C.C# = SC.C# and SEX in'男'and CNAME in'数据库'C.SEX '男' and CNAME ' 数据库'D.S.SEX='男' and CNAME=' 数据库'17. 若用如下的SQL语句创建了一个表SC:CREATE TABLE SC (S# CHAR(6) NOT NULL,C# CHAR(3) NOT NULL,SCORE INTEGER,NOTE CHAR(20));向SC表插入如下行时,( )行可以被插入.A.('201009','111',60,必修)B.('200823','101',NULL,NULL)C.(NULL,'103',80,'选修')D.('201132',NULL,86,' ')18. 假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC(S#,C#,GRADE).要查询选修"Computer"课的男生,将涉及到关系( ).A. SB. S,SCC. C,SCD. S,C,SC19.SQL Server2000的字符型系统数据类型主要包括()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL练习
基本select语句:
1查询emp表的所有数据
2.查询emp表中ename,job,sal几列,其中sal列在结果集中以别名salary查询SQL>select ename,job,sal salary from emp;
3.查询emp表中deptno,ename,年工资,并将年工资命名别名total salary
SQL>select deptno,ename,sal*12"total salary"from emp;
4.查看emp表的结构
5.查询emp表中雇员号,雇员的名字,工作岗位,入职日期,并将查询保存为脚本,脚本名字c.sql
6.运行c.sql
7.查询员工表中部门编号,重复的部门编号只查询一次
SQL>select distinct deptno from emp;
8.在结果集中雇员名和工作岗位相连用"空格逗号空格"分隔,并将列头查询为Employee and Title
????
限制和排列数据
1.查询收入大于2850的雇员名称和工资
SQL>select ename,sal from emp where sal>2850;
2.查询雇员编号7566的雇员名字和所在部门号
SQL>select
2ename,deptno from emp where empno=7566;
3.查询BLAKE的工资
略
4.查询收入在2000和5000之间的人
SQL>select ename from emp where sal between2000and5000;
5.查询收入为1000,2000,3000,5000的人
SQL>select ename from emp where sal in(1000,2000,3000,5000);
6.查询奖金不为空的人
SQL>select ename from emp where comm is not null;
7.查询管理者编号为空的人
SQL>select ename from emp where mgr is null;
8.查询员工名中第二个字母为"L"的员工
SQL>select ename from emp where ename like'_L%';
9.查询工资大于1000的职员
略
10.查询工资大于1000的或者工作岗位为职员的人
SQL>select ename from emp where sal>2000or job= 'CLERK';
11.查询工作岗位为管理员或者是分析员,并且工资大于2500的人
SQL>select ename from emp where sal>2000and job in('ANALYST','MANAGER');????
12.查询雇员名称,工资,将工资按照降序排列
13.查询雇员名称,部门编号,工资,将部门编号按照升序排列,工资按照降序排列
select ename,deptno,sal from emp order by deptno asc,sal desc;
14.写一个用别名排序的例子
单行函数
1.将字符串"HELLO World"全变小写输出
2.将字符串"HELLO World"全变大写输出
3.将字符串"HELLO World"单词字首字母变大写其余变小写输出
4.将单词"Hello"和"World"拼接为"HelloWorld"
5.从字符串"HelloWorld"中截取出单词"World"
6.计算字符串"HelloWorld"的长度
7.字符串"HelloWorld"中字母"W"在第几个位置
8.将1234在左面用"*"号填满10位
9.将1234在右面用"*"号填满10位
10.截掉字符串"HelloWorldh"中首尾的"H"和"h"
11.求出45.926四舍五入到个位,十位,十分位的结果
12.求出45.926截尾取整到个位,十位,十分位的结果
13.求出2100除以500的余数
14.查看当前系统时间
15.计算1977年9月1号和当前系统时间相差多少个月
16.计算当前系统时间加半年后的日期是哪一天
17.计算当前系统时间的下一个星期五是哪
一天
sunday
monday
tuesday
wednesday
thursday
friday
saturday
18.计算当前系统时间当月最后一天是哪一天
19.当前系统时间四舍五入精确到月份是哪一天
20.当前系统时间四舍五入精确到年是哪一天
21.当前系统时间解尾取整到月份是哪一天
22.当前系统时间解尾取整到年是哪一天
23.将当前系统时间变成类似格式"2006-10月-星期三"的字符串
24.将当前系统时间变成类似格式"10月-25"的字符串
25.将当前系统时间变成类似格式"2006-10-2508:20:17下午"的字符串
26.将emp表sal列转换成以本地货币符号为前缀的字符串
27.计算不同年份参加工作的员工数量
组函数
1.求emp表中工资总和sum
2.求emp表中工资平均值avg
3.求emp表中最小工资min
4.求emp表中最大工资max
5.求emp表的总行数,再求出部门编号去重后的总行数count(*)count(distinct deptno)
6.求有奖金的员工的行数count(comm)
7.求所有员工的平均奖金avg
8.求每个部门的工资总和SQL>select deptno,sum(sal)from emp group by deptno;!!!
9.求每个部门的平均工资同上
10.求每个部门的最小工资同上
11.求每个部门的最大工资同上
12.求每个部门中从事不同工作的员工的工资总和SQL>select deptno,job,sum(sal)from emp group by job,deptno;???
13.求每个部门中从事不同工作的员工的平均工资同上
14.求每个部门中从事不同工作的员工的最小工资同上
15.求每个部门中从事不同工作的员工的最大工资同上
16.查出平均工资大于2000的部门select deptno from emp group by deptno
having avg(sal)>2000;
多表连接
1.查看每个员工都工作在哪个城市
SQL>select ename,loc from emp a,dept b where a.deptno=b.deptno;
2.查看每个员工都工作在哪个城市并在结果集中显示40部门信息
select*from(
select a.deptno deptno,loc from emp a,dept b where a.deptno=b.deptno)c where c.deptno=40;
3.查看每个员工的工资等级
4.查看每个员工的直属管理者
子查询
1.部门编号与7934相同的人有哪些?
2.参加工作比7788晚的人有哪些?
3.每个部门拿最少工资的人?
4.姓名中第二个字母为L的人的工资是多少?
5.81年2月参加工作的人工资是多少?
6.工资前10名的人?rownum<=10
7.大于30部门最大工资的人?
8.工资高于本部门平均工资的人(拿上游工资的人)?
9.工资相同的人有哪些?
10.管理者编号与部门编号与144或149的管理者编号与部门编号相同的人有那些?。