SQL查询练习doc75984
- 格式:doc
- 大小:63.00 KB
- 文档页数:5
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)。
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数据库查询练习题及答案(四⼗五道题)题⽬:设有⼀数据库,包括四个表:学⽣表(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列。
数据库中有如下三个表:学生表(学号id,姓名name,性别sex,系部depart,年龄age)8个学生记录选课表(学号id,课程号cid,成绩grade) 12门课程课程表(课程号cid,课程名cname,学分Ccredit) 6门课程学生-课程模式 S-T :学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)1.从学生表中查询所有同学的所有信息select*from学生表2.从学生表中查询所有学生的信息,并分别赋予一个别名select学号as xuehao,姓名as xingming,性别as xingbie,系部as xibu,年龄as nianling from学生表3.从学生表中查询姓名是Allen的学生的信息select*from学生表where姓名='Allen'4.从学生表中查询学号在1101到1199之间的所有学生的信息select*from学生表where学号between 1101 and 11995.从学生表中查询年龄小于18和大于20的所有学生的学号和姓名select学号,姓名from学生表where年龄<18 or年龄>206.从学生表中查询计算机系年龄小于20的所有学生的信息select*from学生表where系部='computer'and年龄<207.从学生表中查询姓名以A开头的学生的信息select*from学生表where姓名LIKE'A%'8.从学生表中查询姓名的第三个字符是A的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'__A%'9.从学生表中查询姓名中包含“llen”的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'%llen%'10.从学生表中查询姓名中包含“llen”且姓名只有5个字符的学生的学号和姓名select学号,姓名from学生表where姓名LIKE'%llen%'and len(姓名)=511.从学生表中查询有年龄信息的学生的学号和姓名select学号,姓名from学生表where年龄is not null12.从学生表中查询最大年龄和最小年龄select max(年龄)最大年龄,min(年龄)最小年龄from学生表13.从学生表中查询所有学生的平均年龄select avg(年龄)平均年龄from学生表14.从学生表中查询学校所有系的名字select distinct系部from学生表15.从学生表中查询学校共有多少个系select count(distinct系部)系部总和from学生表16.从选课表中查询所有学生的选课情况select distinct课程号from选课表17.从选课表中查询选修课程号为C01课程的学生的学号select学号from选课表where课程号='C01'18.从选课表中查询所有没有选C02课程的学生的学号select distinct学号from选课表where课程号!='C02'19.从选课表中查询有选修C01或C02课程的学生的学号select distinct学号from选课表where课程号='C01' or 课程号='C02'20.从选课表中查询学号为1101的学生的选课情况select课程号from选课表where学号='1101'21.从选课表中查询所有选课信息,即学号、课程号、成绩,并给成绩加8分select学号,课程号,成绩=成绩+8 from选课表22.从选课表中查询学号为1101的学生的所有选修课程成绩的总和select sum(成绩)成绩总和from选课表where学号='1101'23.从选课表中查询选修课程好为C02所有学生的成绩平均值并赋予“平均成绩24.”列名select avg(成绩)平均成绩from选课表where课程号='C02'25.从选课表中查询选修课程号C02且该门课程考试及格的学生的学号select学号from选课表where课程号='C02'and成绩>=6026.从选课表中查询所有无考试成绩的学生的学号和课程的课程号select学号,课程号from选课表where成绩is null27.从选课表中查询选修了课程号以C开头的学生的学号和所选课程的课程号select学号,课程号from选课表where课程号LIKE'C%'28.从选课表中查询选修了课程号以C、D或E开头学生的学号和所选课程的课程号select学号,课程号from选课表where课程号LIKE'[CDE]%'29.从选课表中查询选修了课程号中包含DB的学生的学号和课程号select学号,课程号from选课表where课程号LIKE'%DB%'30.从选课表中查询选修了课程的学生的学号select distinct学号from选课表where课程号is not null31.从选课表中查询选修了课程的学生的人数select count(distinct学号)总人数from选课表31.找出姓名以D开头的学生姓名和所有成绩select学生表.姓名,选课表.成绩from学生表join选课表on学生表.学号=选课表.学号where学生表.姓名LIKE'D%'32.查找的所有学生姓名与学号,结果按学号降序排序select 学号,姓名from学生表order BY学号DESC33.查找成绩介于80和90之间的学生姓名,结果按成绩和姓名升序排序select学生表.姓名from选课表join学生表on学生表.学号=选课表.学号where选课表.成绩between 80 and 90order BY选课表.成绩,学生表.姓名34.查找english系的所有学生姓名,结果按成绩和姓名升序排序select学生表.姓名,学生表.学号,选课表.成绩from选课表join学生表on学生表.学号=选课表.学号where学生表.系部='english'35.查找同时选修了C01及C02两门课程的学生姓名及学号select学生表.姓名,A.学号from选课表as A join选课表as B on A.学号=B.学号join学生表on学生表.学号=A.学号where A.课程号='C01'and B.课程号='C02'36.查找所有选修了课程的学生姓名及所在系别select distinct学生表.姓名,学生表.系部from学生表join选课表on学生表.学号=选课表.学号where选课表.课程号is not null37.查找成绩高于90分的学生姓名、学号及系别select学生表.姓名,学生表.学号,学生表.系部from学生表join选课表on学生表.学号=选课表.学号where选课表.成绩>=9038.找出选修了C01课程的学生姓名select学生表.姓名from学生表join选课表on学生表.学号=选课表.学号where选课表.课程号='C01'39.查询English系学生人数select count(*) English 系总人数from学生表where系部='English'40.分别查询各系的学生人数select系部,count(*)人数from学生表group by系部41.创建一个角色uus.CREATE ROLE uus;42.给uus授权SELECT,UPDATE,INSERT .GRANT SELECT,UPDATE,INSERTON StuTO uus43.增加一个登录,登录名为tp,密码为123,默认的数据库为stuEXEC sp_addlogin 'tp', '123', 'stu'44.将登录tp增加为test库的一个用户,并连接到test库。
sql 查询练习题SQL查询练习题1. 查询员工表中所有员工的姓名和职位。
SELECT 姓名, 职位 FROM 员工表;2. 查询销售表中销售金额大于5000的销售记录。
SELECT * FROM 销售表 WHERE 销售金额 > 5000;3. 查询客户表中客户所在城市为北京或上海的客户信息。
SELECT * FROM 客户表 WHERE 所在城市 IN ('北京', '上海');4. 查询订单表中订单金额最大的订单信息。
SELECT * FROM 订单表 ORDER BY 订单金额 DESC LIMIT 1;5. 查询商品表中销售数量排名前三的商品信息。
SELECT * FROM 商品表 ORDER BY 销售数量 DESC LIMIT 3;6. 查询员工表中平均年龄大于30岁的部门名称和平均年龄。
SELECT 部门名称, AVG(年龄) AS 平均年龄 FROM 员工表 GROUP BY 部门名称 HAVING AVG(年龄) > 30;7. 查询客户表中注册时间在2020年之后的客户姓名和注册时间。
SELECT 姓名, 注册时间 FROM 客户表 WHERE 注册时间 > '2020-01-01';8. 查询订单表中订单状态为已完成的订单数量。
SELECT COUNT(*) FROM 订单表 WHERE 订单状态 = '已完成';9. 查询商品表中商品名称以手机开头且价格大于2000的商品信息。
SELECT * FROM 商品表 WHERE 商品名称 LIKE '手机%' AND 价格 > 2000;10. 查询员工表中工资最高的员工姓名和工资。
SELECT 姓名, MAX(工资) AS 最高工资 FROM 员工表;以上是SQL查询的练习题,通过这些题目的训练,可以提高对SQL查询语句的理解和运用能力。
drop table t_lesson cascade constraints purge;drop table t_stu_profile cascade constraints purge;drop table t_score cascade constraints purge;--课程表create table t_lesson(lesson_id varchar2(10),--课程编号lesson_name varchar2(20),--课程名称constraint pk_lesson primary key (lesson_id));--学生表create table t_stu_profile(stu_id varchar2(10),--学生编号stu_name varchar2(10),--学生姓名sex char(1),--性别age number,--年龄class_id varchar2(10),--班级编号constraint pk_stu primary key(stu_id));--成绩表create table t_score(stu_id varchar2(10),--学生编号lesson_id varchar2(10),--课程编号score number--分数);alter table t_score add constraint fk_lesson foreign key(lesson_id) references t_lesson(lesson_id);alter table t_score add constraint fk_stu foreign key(stu_id) references t_stu_profile(stu_id);delete from t_lesson;delete from t_score;delete from t_stu_profile;--插入记录(课程记录)insert into t_lesson(lesson_id,lesson_name) values('L001','语文'); insert into t_lesson(lesson_id,lesson_name) values('L002','数据库'); insert into t_lesson(lesson_id,lesson_name) values('L003','英语'); insert into t_lesson(lesson_id,lesson_name) values('L004','物理'); insert into t_lesson(lesson_id,lesson_name) values('L005','化学');--(学生记录)insert into t_stu_profile(stu_id,stu_name,sex,age,class_id) values('001','张一','F',16,'0611');insert into t_stu_profile(stu_id,stu_name,sex,age,class_id) values('002','张二','M',18,'0612');insert into t_stu_profile(stu_id,stu_name,sex,age,class_id) values('003','张三','F',19,'0613');insert into t_stu_profile(stu_id,stu_name,sex,age,class_id) values('004','张四','F',16,'0611');insert into t_stu_profile(stu_id,stu_name,sex,age,class_id) values('005','张五','F',16,'0614');insert into t_stu_profile(stu_id,stu_name,sex,age,class_id) values('006','张六','F',16,'0615');--学生成绩表记录insert into t_score(stu_id,lesson_id,score) values('001','L001',90); insert into t_score(stu_id,lesson_id,score) values('001','L002',86); insert into t_score(stu_id,lesson_id,score) values('001','L003',40); insert into t_score(stu_id,lesson_id,score) values('001','L004',40); insert into t_score(stu_id,lesson_id,score) values('001','L005',60);insert into t_score(stu_id,lesson_id,score) values('002','L001',84); insert into t_score(stu_id,lesson_id,score) values('002','L004',75); insert into t_score(stu_id,lesson_id,score) values('002','L002',84); insert into t_score(stu_id,lesson_id,score) values('002','L003',60);insert into t_score(stu_id,lesson_id,score) values('003','L001',70); insert into t_score(stu_id,lesson_id,score) values('003','L002',90); insert into t_score(stu_id,lesson_id,score) values('003','L003',65);insert into t_score(stu_id,lesson_id,score) values('004','L003',40); insert into t_score(stu_id,lesson_id,score) values('004','L005',98);insert into t_score(stu_id,lesson_id,score) values('005','L001',76); insert into t_score(stu_id,lesson_id,score) values('005','L002',78); insert into t_score(stu_id,lesson_id,score) values('005','L003',98);commit;/**1. 写出学生没有参加考试的课程,以下形式显示学生姓名班级课程2.把多于一门不及格的学生给查询出来(没考不及格算)学生姓名不及格门数3.把平均分最高最低的学生给查询出来学生姓名(最高均数)分数学生姓名(最底均分)分数4.把平均分最高最低的学生给查询出来(可选没考0分)学生姓名(最高均分)分数学生姓名(最底均分)分数*/LESSON_ID LESSON_NAME---------- --------------------L001 语文L002 数据库L003 英语L004 物理L005 化学STU_ID STU_NAME S AGE CLASS_ID---------- ---------- - ---------- ----------001 张一 F 16 0611002 张二 M 18 0612003 张三 F 19 0613004 张四 F 16 0611005 张五 F 16 0614006 张六 F 16 0615STU_ID LESSON_ID SCORE---------- ---------- ----------001 L001 90001 L002 86001 L003 40001 L004 40001 L005 60002 L001 84002 L004 75002 L002 84002 L003 60003 L001 70003 L002 90STU_ID LESSON_ID SCORE---------- ---------- ----------003 L003 65004 L003 40004 L005 98005 L001 76005 L002 78005 L003 981***************************************************1select *from(selecttspl.stu_name,tspl.class_id,tspl.Lesson_name,nvl(ts.score,0) score from(selectl.*,tsp.*fromt_stu_profile tsp,t_lesson l) tspl,t_score tswhere tspl.stu_id=ts.stu_id(+) and tspl.lesson_id=ts.lesson_id(+) )where score=02****************************************************2create or replace view view_11 asselect *from(selecttspl.stu_name,tspl.class_id,tspl.Lesson_name,nvl(ts.score,0) score from(selectl.*,tsp.*fromt_stu_profile tsp,t_lesson l) tspl,t_score tswhere tspl.stu_id=ts.stu_id(+) and tspl.lesson_id=ts.lesson_id(+))where score<60/select stu_name,count(score) from view_11 group by stu_name having count(score)>1 /3****************************************************3create or replace view view_12 asselecttspl.stu_name,tspl.class_id,tspl.Lesson_name,nvl(ts.score,0) scorefrom(selectl.*,tsp.*fromt_stu_profile tsp,t_lesson l) tspl,t_score tswhere tspl.stu_id=ts.stu_id(+) and tspl.lesson_id=ts.lesson_id(+)select stu_name,avgscorefrom(selectstu_name,avg(score) avgscorefromview_12group bystu_name)whereavgscore=(selectmax(avgscore)from(selectstu_name,avg(score) avgscorefromview_12group bystu_name))unionselect stu_name,avgscorefrom(selectstu_name,avg(score) avgscorefromview_12group bystu_name)whereavgscore=(selectmin(avgscore)from(selectstu_name,avg(score) avgscorefromview_12group bystu_name))/4**********************************************4 蓅囩。
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的员工信息。
答:1,每一张表由行(row)和列(col)组成。
2,Desc Table Name 查看表结构;start file name 执行一条SQL语句;@ file name 执行一条SQL语句;col命令用来格式化传出的一个命令。
3,SELECT[DISTINCT]{*,column[alias],…}FROM TABLE.4,通过DISTINCT关键字来过滤掉重复的记录。
5,nvl函数。
6,a) SELECT DISTINCT title FROM s_empb) SELECT id,first_name||' '|| last_name fullname,salary*12基本工资,salary*(nvl(commission_pct,0)/100)*12奖金,salary*(1+nvl(commission_pct,0)/100)*12年薪FROM s_empc)SELECT id,first_name||' '||last_name fullname,title,nvl(TO_CHAR(commission_pct),'没有提成') 提成率FROM s_emp答:7,WHERE子句可以用来限定查询条件。
8,ORDER BY子句可以用来进行排序。
9,a)SELECT id,first_name||' '||last_name fullname,salary FROM s_emp WHERE(salary>1500) ORDER BY salary DESCb) SELECT id,first_name||' '||last_name fullname,salary*12*(1+NVL(commission_pct,0)/100)年薪FROM s_emp WHERE(salary*12*(1+NVL(commission_pct,0)/100)>1500) ORDER BY salary*12*(1+NVL(commission_pct,0)/100) DESCc) SELECT id,first_name||' '||last_name fullname,salary FROM s_emp WHERE(salary>1200anddept_id=41) ;d) SELECT id,first_name||' '||last_name fullname,dept_id,title FROM s_emp WHERE dept_idIN(10,31,50) OR title='VP%'e) SELECT id,first_name||' '||last_name fullname FROM s_emp WHERE first_name LIKE('_e%')f) SELECT id,first_name||' '||last_name fullname,start_date FROM s_emp WHERE start_dateLIKE('%91') ORDER BY start_date答:10,字符函数:Lower 转换成小写字母;Upper 转换成大写字母;Substr 截取字串;Concat 连接字符串;Length 返回字符串长度;Replace 替换字符;Nvl 换空值。
SQL查询及答案一、单表查询练习1、查询<学生信息表>,查询学生"张三"的全部基本信息Select *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、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
select *from A_studentinfowhere sname like '李_强'6、查询<学生信息表>,查询姓"张"或者姓”李”的学生的基本信息。
Select *from A_studentinfowhere sname like '张%'or sname like '李%'7、查询<学生信息表>,查询姓"张"并且"所属省份"是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province='北京'8、查询<学生信息表>,查询"所属省份"是"北京"、”新疆”、”山东”或者"上海"的学生的信息Select *from A_studentinfowhere province in ('北京','上海','新疆','山东')9、查询<学生信息表>,查询姓"张",但是"所属省份"不是"北京"的学生信息Select *from A_studentinfowhere sname like '张%'and province !='北京'10、查询<学生信息表>,查询全部学生信息,并按照“性别”排序,性别相同的情况下按照“所属省份”排序,所属省份相同的情况下再按照“班级”排序select *from A_studentinfoorder by sex,province,class11、查询<学生信息表>,查询现有学生都来自于哪些不同的省份select distinct province as 省份from A_studentinfo12、查询<学生选修信息表>,查询没有填写成绩的学生的学号、课程号和成绩Select *from A_studentcoursewhere score is null13、查询<学生选修信息表>,查询全部填写了成绩的学生的选修信息,并按照“成绩”从高到低进行排序Select *from A_studentcoursewhere score is not nullorder by score desc二、聚合函数练习1、统计<学生信息表>,统计共有多少个学生Select count (*) as 学生数量from A_studentinfo2、统计<学生信息表>,统计年龄大于20岁的学生有多少个Select count(*) as 学生数量from A_studentinfowhere (2021-yearofbirth)>203、统计<学生信息表>,统计入学时间在1980年至1982年的学生人数select count(*) as 学生数量from A_studentinfowhere enrollment between '1998-01-01' and '2021-12-30'对比以下查询方式,看看有何不同,为什么?select count(*) as 学生数量from A_studentinfowhere enrollment between '1998' and '2021'。
sql测试题和答案# SQL测试题1. 基础查询题- 题目:编写一个SQL查询,从`employees`表中选择所有员工的姓名和员工ID。
- 答案:`SELECT name, employee_id FROM employees;`2. 条件查询题- 题目:从`orders`表中选择所有订单金额超过1000的订单。
- 答案:`SELECT * FROM orders WHERE order_amount > 1000;`3. 排序题- 题目:从`products`表中选择所有产品的名称和价格,并按价格降序排列。
- 答案:`SELECT name, price FROM products ORDER BY price DESC;`4. 聚合函数题- 题目:计算`sales`表中所有销售额的总和。
- 答案:`SELECT SUM(sales_amount) AS total_sales FROM sales;`5. 分组查询题- 题目:从`sales`表中按产品ID分组,并计算每个产品的总销售额。
- 答案:`SELECT product_id, SUM(sales_amount) AStotal_sales_per_product FROM sales GROUP BY product_id;`6. 连接查询题- 题目:查询`customers`表和`orders`表,找出所有客户的姓名和他们下过的订单数量。
- 答案:`SELECT , COUNT(o.order_id) AS order_count FROM customers c JOIN orders o ON c.customer_id =o.customer_id GROUP BY ;`7. 子查询题- 题目:找出`employees`表中工资高于平均工资的员工的姓名和工资。
- 答案:`SELECT name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);`8. 多表连接查询题- 题目:查询`employees`表和`departments`表,找出所有员工的姓名、部门名称和部门ID。
sql查询题库
以下是一些SQL查询题,可用于练习和提高SQL查询技能:
1. 查询所有学生的姓名、年龄和性别。
2. 查询年龄大于等于18岁的学生姓名和年龄。
3. 查询所有学生的平均成绩。
4. 查询平均成绩最高的学生姓名和平均成绩。
5. 查询选修了"数学"课程的学生姓名和成绩。
6. 查询选修了多于3门课程的学生姓名。
7. 查询选修了"英语"课程且成绩在90分以上的学生姓名和成绩。
8. 查询选修了"计算机科学"课程的学生的最高成绩和最低成绩。
9. 查询没有选修"英语"课程的学生姓名。
10. 查询选修了最少一门课程的学生姓名。
11. 查询选修了课程数量最多的学生姓名。
12. 查询选修了课程数量少于3门的学生姓名。
13. 查询所有学生的学号、姓名和班级。
14. 查询班级人数最多的学生姓名和班级。
15. 查询选修了"计算机科学"课程的学生的平均成绩。
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人的课程才统计)。
当然,我可以提供一些 SQL 查询测试题供您练习。
1. 请查询出表格 "students" 中所有的学生信息。
```sqlSELECT * FROM students;```2. 请查询出表格 "students" 中年龄大于等于 18 岁的学生信息。
```sqlSELECT * FROM students WHERE age >= 18;```3. 请查询出表格 "students" 中名字以 "张" 开头的学生信息。
```sqlSELECT * FROM students WHERE name LIKE '张%';```4. 请查询出表格 "students" 中成绩在 80 到 90 之间的学生信息。
```sqlSELECT * FROM students WHERE score BETWEEN 80 AND 90;```5. 请查询出表格 "students" 中按成绩从高到低排列的学生信息。
```sqlSELECT * FROM students ORDER BY score DESC;```6. 请查询出表格 "students" 中男生和女生的人数。
```sqlSELECT gender, COUNT(*) AS count FROM students GROUP BY gender;```这些问题可以帮助您熟悉 SQL 查询语句的使用。
根据您的具体数据库结构和需求,可能需要进行适当调整。
祝您练习愉快!。
SQL查询练习
设有学生表student,课程表course和修课表SC,其表结构如下所示:
SC表结构
请根据下列语义写出SQL查询命令
1.分别查询学生表和学生修课表中的全部数据。
2.查询计算机系的学生的姓名、年龄。
3.查询选修了c01号课程的学生的学号和成绩。
4.查询成绩在70到80分之间的学生的学号、课程号和成绩。
5·查询计算机系年龄在18到20之间且性别为“男”的学生的姓名、年龄。
6.查询9512101号学生的修课情况。
7.查询c01号课程成绩最高的分数。
8.查询学生都选修了哪些课程,要求列出课程号。
9·查询Northwind数据库中orders表的OrderlD、CustomerID和OrderDate,并将最新的定购日期(OrderDate)列在前边。
D
10·查询Northwind数据库中orders表的ShipCountry列以B,C,D,F开始且第三个字,符为“a”的OrderlD、CustomerID和ShipCountry的信息。
11·查询Northwind数据库中orders表的ShipCountry列不以A,B,C,D,E,F开始且最
后一个字母是“a”的OrderlD、CustomerlD和ShipCountry的信息。
12.查询学生数据库中学生的最大年龄和最小年龄。
13·查询修了c02号课程的所有学生的平均成绩、最高成绩和最低成绩。
14.统计每个系的学生人数。
15.统计每门课程的修课人数和最高分
16.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。
17.统计各系的修课的学生总数和考试的平均成绩。
18.查询选课门数超过2门的学生的平均成绩和选课门数。
19.列出总成绩超过200分的学生,要求列出学号、总成绩。
+
20·查询pubs数据库的titles表中每类图书的平均价格超过12.O元的书的类型(Type)、平均价格和最高价格,要求只计算有确定价格的图书的情况。
21·查询pubs数据库的titles表中版税(royalty)为10的每类书的平均价格。
22·查询pubs数据库的titles表中每类图书中图书的数目超过3本的图书的总价格。
23.查询选修了c02号课程的学生的姓名和所在系。
.
24·查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
25.查询计算机系男生修了“数据库基础”的学生的姓名、性别、成绩。
26·查询学生的选课情况,要求列出每位学生的选课情况(包括未选课的学生),并列出学生的学号、姓名、修课号、修课成绩。
27.列出“数据库基础”课程考试成绩前三名的学生的学号、姓名、所在系和考试成绩。
2 8.查询哪些学生合选了一门课程,要求列出合选课程的学生的学号和课程号。
29.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。
30.查询哪些课程没有人选,要求列出课程号和课程名。
31.查询有考试成绩的所有学生的姓名、修课名称及考试成绩,要求将查询结果放在一张新的永久表(假设新表名为new sc)中,新表的列名分别为:Student_Name,Course_ Name,Grade。
32.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,并要求将这两个查询结果合并成一个结果集,并以系名、姓名、性别、修课名称、修课成绩的顺序显
示各列。
33.用子查询实现如下查询:.
(1)查询选修了c01号课程的学生的姓名和所在系。
(2)查询数学系成绩80分以上的学生的学号、姓名。
(3)查询计算机系学生所选的课程名。
(4)查询"VB”课程考试成绩前三名的学生的学号、姓名、所在系。
34.创建一个新表teSt_t,其结构为:(COLl,COL 2,COL 3),其中:
COLl:整型,允许空值,
COL2:字符型,长度为10,不允许空值,
C.OL3:字符型,长度为10,允许空值,
试写出按行插入如下数据的语句(空白处表示不提供值),并观察插入后表中的记
录值。
35.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现:
(1)在插入数据过程中建表。
(2)先建一个新表,然后再插入数据。
36.删除修课成绩小于50分的学生的修课记录
37.删除信息系修课成绩小于50、分的学生的修课记录,分别用子查询和连接查询实现。
38.将所有选修了"c01”课程的学生的成绩加10分。
39.将计算机系所有选修了“计算机文化学”课程的学生的成绩加10分,分别用子查询和连接查询实现。