数据库SQL查询语句练习题

合集下载

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案⼀在数据库 school 中建⽴student , sc, course 表。

学⽣表、课程表、选课表属于数据库School ,其各⾃的数据结构如下:学⽣Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学⽣选课SC(Sno,Cno,Grade)⼆设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使⽤ Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男⽣delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学⽣的系科为: JSJ2 把陈⼩明的年龄加1岁,性别改为⼥。

2 修改李⽂庆的1001课程的成绩为93 分3 把“数据库原理”课的成绩减去1分Select 查询语句⼀单表1查询年龄在19⾄21岁之间的⼥⽣的学号,姓名,年龄,按年龄从⼤到⼩排列。

2查询姓名中第2个字为“明”字的学⽣学号、性别。

3查询 1001课程没有成绩的学⽣学号、课程号4查询JSJ 、SX、WL 系的年龄⼤于25岁的学⽣学号,姓名,结果按系排列5按10分制查询学⽣的sno,cno,10分制成绩(1-10分为1 ,11-20分为2 ,30-39分为3,。

90-100为10)6查询 student 表中的学⽣共分布在那⼏个系中。

数据库常用SQL语句练习(含答案)

数据库常用SQL语句练习(含答案)

Emp(员工表)和Dept(部门表)简单题1. 案例:查询没有上级领导的员工的编号,姓名,工资select empno,ename,sal from emp where mgr is null;2. 案例:查询emp表中没有奖金的员工的姓名,职位,工资,以及奖金select ename,job,sal,comm from emp where comm is null or comm=0;既可以是null,也可以是03. 案例:查询emp表中含有奖金的员工的编号,姓名,职位,以及奖金select ename,job,sal,comm from emp where comm>0;4. 案例:查询含有上级领导的员工的姓名,工资以及上级领导的编号select ename,sal,mgr from emp where mgr is not null;5. 案例:查询emp表中名字以‘S’开头的所有员工的姓名select ename from emp where ename like 's%'6. 案例:查询emp表中名字的最后一个字符是'S'的员工的姓名select ename from emp where ename like '%s'7. 案例:查询倒数的第2个字符是‘E’的员工的姓名select ename from emp where ename like '%e_'8. 案例:查询emp表中员工的倒数第3个字符是‘N’的员工姓名select ename from emp where ename like '%n__'9. 案例:查询emp表中员工的名字中包含‘A’的员工的姓名select ename from emp where ename like '%a%'10. 案例:查询emp表中名字不是以'K'开头的员工的所有信息select * from emp where ename not like 'k%';11. 案例:查询emp表中名字中不包含‘A’的所有员工的信息select * from emp where ename not like '%a%'12. 案例:做文员的员工人数(job= CLERK 的)select count(*) from emp where job='clerk';13. 案例:销售人员job: SALESMAN 的最高薪水select max(sal) from emp where job='salesman';14. 案例:最早和最晚入职时间select min(hiredate),max(hiredate) from emp;15. 案例:查询emp表中员工的编号,姓名,职位,工资,并且工资在1000~2000之间。

SQL语句练习及答案

SQL语句练习及答案

sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表要求:完成以下操作1.查询姓"欧阳"且全名为三个汉字的学生的姓名。

selectsnamefromstudent wheresnamelike“欧阳__;2.查询名字中第2个字为"阳"字的学生的姓名和学号。

selectsname,snofromstudent wheresnamelike'_阳%';3.查询所有不姓刘的学生姓名。

selectsname,sno,ssexfromstudentwheresnamenotlike“刘%”;4.查询db_design课程的课程号和学分。

selectcno,ccredit fromcoursewherecnamelike'db_design'5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。

select*fromcourse wherecnamelike'db%i__';6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。

查询缺少成绩的学生的学号和相应的课程号。

selectsno,cnofromscwheregradeisnull;7.查所有有成绩的学生学号和课程号。

selectsno,cnofromscwheregradeisnotnull;8.查询计算机系年龄在20岁以下的学生姓名。

selectsnamefromstudent wheresdept='cs'andsage<20;9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。

数据库SQL语句练习题含答案

数据库SQL语句练习题含答案

SQL语句练习练习5. 1. 2: 基于不断滚动的电影数据库的实例:Movie( 电影名title,拍摄年代year ,长度length, inColor ,制片厂名studioName, 制片人证书号producerC# )StarsIn(电影名movieTitle,拍摄年份movieYear ,影星名starName) MovieStar (姓名name,地址address,性别gender ,生日birthdate) MovieExec( 姓名name,地址address ,证书号cert # ,净资产netWorth ) Studio(姓名name, 地址address,总裁证书号presC# )请写出下列SQL 查询语句:* ( a) 找出米高梅制片公司(MGM studios)的地址。

SELECT address AS Studio_AddressFROM Studio WHERE name = 'MGM';( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。

SELECT birthdate AS Star_BirthdateFROM MovieStar WHERE name = 'Sandra Bullock';* ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。

SELECT starName FROM StarsInWHERE movieYear = 1980 OR movieTitle LIKE '%Love%';( d) 找出净资产至少1 000 万美元的所有行政长官。

SELECT name AS Exec_NameFROM MovieExec WHERE netWorth >= 10000000;( e) 找出所有的男影星或者是住址中含有Malibu 的影星。

sql 练习题

sql 练习题

sql 练习题SQL练习题SQL(Structured Query Language)是一种用于管理关系数据库系统的标准化语言。

它可以用于创建、修改和查询数据库中的数据。

对于想要提高SQL技能的人来说,练习是非常重要的。

在本文中,我将提供一些SQL练习题,帮助读者加深对SQL的理解和应用。

练习题一:查询数据假设有一个名为"employees"的表,包含以下字段:id、name、age、salary。

请编写一条SQL语句,查询所有员工的姓名和薪水。

练习题二:条件查询在上述"employees"表的基础上,请编写一条SQL语句,查询所有薪水大于5000的员工的姓名和薪水。

练习题三:排序查询继续使用上述"employees"表,请编写一条SQL语句,查询所有员工的姓名和薪水,并按照薪水降序排列。

练习题四:聚合函数假设有一个名为"orders"的表,包含以下字段:id、customer_id、order_date、total_amount。

请编写一条SQL语句,查询每个客户的总订单金额。

练习题五:连接查询在上述"employees"和"orders"表的基础上,请编写一条SQL语句,查询每个员工的姓名、薪水和总订单金额,并按照薪水降序排列。

练习题六:子查询在上述"employees"表的基础上,请编写一条SQL语句,查询薪水高于平均薪水的员工的姓名和薪水。

练习题七:更新数据假设有一个名为"products"的表,包含以下字段:id、name、price。

请编写一条SQL语句,将所有价格低于10的产品的价格增加10%。

练习题八:删除数据在上述"products"表的基础上,请编写一条SQL语句,删除所有价格高于100的产品。

练习题九:创建表请编写一条SQL语句,创建一个名为"students"的表,包含以下字段:id、name、age、gender。

sql查询练习题含答案

sql查询练习题含答案

--(1)查询20号部门的所有员工信息。

select * from emp e where e.deptno=20;--(2)查询奖金(COMM)高于工资(SAL)的员工信息。

select * from emp where comm>sal;--(3)查询奖金高于工资的20%的员工信息。

select * from emp where comm>sal*0.2;--(4)查询10号部门中工种为MANAGER和20号部门中工种为CLERK的员工的信息。

select * from emp ewhere (e.deptno=10 and e.job='MANAGER')or (e.deptno=20 and e.job='CLERK')--(5)查询所有工种不是MANAGER和CLERK,--且工资大于或等于2000的员工的详细信息。

select * from empwhere job not in('MANAGER','CLERK') and sal>=2000;--(6)查询有奖金的员工的不同工种。

select * from emp where comm is not null;--(7)查询所有员工工资和奖金的和。

select (e.sal+nvl(m,0)) from emp e;--(8)查询没有奖金或奖金低于100的员工信息。

select * from emp where comm is null or comm<100;--(9)查询员工工龄大于或等于10年的员工信息。

select * from emp where (sysdate-hiredate)/365>=10;--(10)查询员工信息,要求以首字母大写的方式显示所有员工的姓名。

select initcap(ename) from emp;select upper(substr(ename,1,1))||lower(substr(ename,2)) from emp;--(11)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,--若月份相同则按入职的年份排序。

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查询语句练习4_习题_结果(单世民)图书_习题

数据库sql查询语句练习4_习题_结果(单世民)图书_习题

数据库sql查询语句练习4_习题_结果(单世民)图书_习题现有图书管理数据库的三个关系模式:图书(总编号, 分类号, 书名, 作者, 出版单位, 单价)读者(借书证号, 单位, 姓名, 性别, 职称, 地址)借阅(借书证号, 总编号, 借书⽇期)具体数据为:读者:根据以上描述,请完成:DDL1.写出创建上述表的语句命令:create table图书(总编号varchar(7)primary key,分类号varchar(8),书名varchar(18),作者varchar(8),出版单位varchar(18),单价float)create table读者(借书证号varchar(4)primary key,单位varchar(7),姓名varchar(8),性别varchar(2),职称varchar(8),地址varchar(18))create table借阅(借书证号varchar(3),总编号varchar(6),借书⽇期date,primary key(借书证号,总编号,借书⽇期))DML2.给出插⼊上述数据的insert语句命令:insert into图书values('445501','TP3/12','数据库导论','王强','科学出版社', insert into图书values('445502','TP3/12','数据库导论','王强','科学出版社', insert into图书values('445503','TP3/12','数据库导论','王强','科学出版社', insert into图书values('332211','TP5/10','计算机基础','李伟','⾼等教育出版社', insert into图书values('112266','TP3/12','FoxBASE','张三','电⼦⼯业出版社', insert into图书values('665544','TS7/21','⾼等数学','刘明','⾼等教育出版社', insert into图书values('114455','TR9/12','线性代数','孙业','北京⼤学出版社', insert into图书values('113388','TR7/90','⼤学英语','胡玲','清华⼤学出版社', insert into图书values('446601','TP4/13','数据库基础','马凌云','⼈民邮电出版社',insert into图书values('446602','TP4/13','数据库基础','马凌云','⼈民邮电出版社',insert into图书values('446603','TP4/13','数据库基础','马凌云','⼈民邮电出版社',insert into图书values('449901','TP4/14','FoxPro⼤全','周虹','科学出版社', insert into图书values('449902','TP4/14','FoxPro⼤全','周虹','科学出版社', insert into图书values('118801','TP4/15','计算机⽹络','黄⼒钧','⾼等教育出版社',insert into图书values('118802','TP4/15','计算机⽹络','黄⼒钧','⾼等教育出版社',insert into读者values('111','信息系','王维利','⼥','教授','1号楼')insert into读者values('112','财会系','李⽴','男','副教授','2号楼')insert into读者values('113','经济系','张三','男','讲师','3号楼')insert into读者values('114','信息系','周华发','男','讲师','1号楼')insert into读者values('115','信息系','赵正义','男','⼯程师','1号楼')insert into读者values('116','信息系','李明','男','副教授','1号楼')insert into读者values('117','计算机系','李⼩峰','男','助教','1号楼')insert into读者values('118','计算机系','许鹏飞','男','教授','1号楼')insert into读者values('119','计算机系','刘⼤龙','男','副教授','4号楼') insert into读者values('120','国际贸易','李雪','男','副教授','4号楼') insert into读者values('121','国际贸易','李爽','⼥','讲师','4号楼') insert into读者values('122','国际贸易','王纯','⼥','讲师','4号楼') insert into读者values('123','财会系','沈⼩霞','⼥','助教','2号楼') insert into读者values('124','财会系','朱海','男','讲师','2号楼')insert into读者values('125','财会系','马英明','男','副教授','2号楼')insert into借阅values('112','445501','1997-3-19')insert into借阅values('125','332211','1997-2-12')insert into借阅values('111','445503','1997-8-21')insert into借阅values('112','112266','1997-3-14')insert into借阅values('114','665544','1997-10-21')insert into借阅values('120','114455','1997-11-2')insert into借阅values('120','118801','1997-10-18')insert into借阅values('119','446603','1997-12-12')insert into借阅values('112','449901','1997-10-23')insert into借阅values('115','449902','1997-8-21')insert into借阅values('118','118801','1997-9-10')单表查询3.找出姓李的读者姓名和所在单位命令:select姓名,单位from读者where姓名like'李%'结果:4.列出图书库中所有藏书的书名以及出版单位命令:select distinct书名,出版单位from图书结果:5.查找出⾼等教育出版社的所有图书及单价,结果按单价降序排列命令:select distinct书名,单价from图书where出版单位='⾼等教育出版社' order by单价desc结果:6.查找出价格位于10元和20元之间的图书种类,结果按出版单位和单价升序排序命令:select*from图书where单价between 10 and 20 order by出版单位,单价结果:7.找出书名以“计算机”打头的所有图书和作者命令:select distinct书名,作者from图书where书名like'计算机%'结果:8.检索同时接借阅了总编号为112266和449901两本书的借书证号命令:select借书证号from借阅where总编号='112266'intersect select借书证号from借阅where总编号='449901'结果:9.求科学出版社图书的最⾼单价、最低单价和平均单价命令:select MAX(单价)最⾼单价,MIN(单价)最低单价,AVG(单价)平均单价from 图书where出版单位='科学出版社'结果:聚合查询10.找出藏书中各个出版社的册数、价值总额命令:select出版单位,COUNT(*)册数,SUM(单价)价值总额from图书group by 出版单位结果:11.求出各个出版社图书的最⾼价格、最低价格和册数命令:select出版单位,COUNT(*)册数,max(单价)最⾼价格,MIN(单价)最低价格from图书group by出版单位结果:多表查询12.查找所有借了书的读者的姓名以及所在单位命令:select distinct姓名,单位from读者join借阅on读者.借书证号=借阅.借书证号结果:13.找出李某所借图书的所有图书的书名及借书⽇期命令:select姓名,书名,借书⽇期from读者join借阅on读者.借书证号=借阅.借书证号join图书on借阅.总编号=图书.总编号where 姓名like'李%'结果:14.查询1997年10⽉以后借书的读者借书证号、姓名和单位命令:select distinct读者.借书证号,姓名,单位from借阅join读者on借阅.借书证号=读者.借书证号whereDATEDIFF(MONTH,'1977-10-1',借书⽇期)>=0结果:15.找出借阅了FoxPro⼤全⼀书的借书证号命令:select借书证号from借阅join图书on借阅.总编号=图书.总编号where 书名='FoxPro⼤全'结果:16.分别找出借书⼈次超过1⼈次的单位及⼈次数命令:select单位,COUNT(*)⼈次数from借阅join读者on借阅.借书证号=读者.借书证号group by单位having COUNT(*)>1结果:⼦查询17.找出与赵正义在同⼀天借书的读者姓名、所在单位以及借书⽇期命令:select姓名,单位,借书⽇期from读者join借阅on读者.借书证号=借阅.借书证号where借书⽇期=(select借书⽇期from借阅join读者on借阅.借书证号=读者.借书证号where姓名='赵正义')结果:18.查询1997年7⽉以后没有借书的读者借书证号、姓名以及单位命令:select借书证号,姓名,单位from读者except select借阅.借书证号,姓名,单位from借阅join读者on借阅.借书证号=读者.借书证号where DATEDIFF(DAY,'1997-7-1',借书⽇期)>=0结果:19.求信息系当前借阅图书的读者⼈次数命令:select COUNT(*)⼈次数from借阅join读者on借阅.借书证号=读者.借书证号where单位='信息系'结果:20.找出当前⾄少借阅了2本书的读者及所在单位命令:select姓名,单位from借阅join读者on借阅.借书证号=读者.借书证号group by读者.姓名,单位having COUNT(*)>=2结果:21.查询经济系是否还清所有图书。

SQL高级查询——50句查询(含答案)

SQL高级查询——50句查询(含答案)

SQL⾼级查询——50句查询(含答案)--⼀个题⽬涉及到的50个Sql语句--(下⾯表的结构以给出,⾃⼰在数据库中建⽴表.并且添加相应的数据,数据要全⾯些. 其中Student表中,SId为学⽣的ID)------------------------------------表结构----------------------------------------学⽣表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex)--课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId)--成绩表tblScore(学⽣编号StuId、课程编号CourseId、成绩Score)--教师表tblTeacher(教师编号TeaId、姓名TeaName)-----------------------------------------------------------------------------------问题:--1、查询“001”课程⽐“002”课程成绩⾼的所有学⽣的学号;Select StuId From tblStudent s1Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId='001')>(Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId='002')--2、查询平均成绩⼤于60分的同学的学号和平均成绩;Select StuId,Avg(Score) as AvgScore From tblScoreGroup By StuIdHaving Avg(Score)>60--3、查询所有同学的学号、姓名、选课数、总成绩;Select StuId,StuName,SelCourses=(Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId),SumScore=(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId)From tblStudent s1--4、查询姓“李”的⽼师的个数;Select Count(*) From tblTeacher Where TeaName like '李%'--5、查询没学过“叶平”⽼师课的同学的学号、姓名;Select StuId,StuName From tblStudentWhere StuId Not In(Select StuID From tblScore scInner Join tblCourse cu ON sc.CourseId=cu.CourseIdInner Join tblTeacher tc ON cu.TeaId=tc.TeaIdWhere tc.TeaName='叶平')--6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;Select StuId,StuName From tblStudent stWhere (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And s1.CourseId='001')>0 And(Select Count(*) From tblScore s2 Where s2.StuId=st.StuId And s2.CourseId='002')>0--7、查询学过“叶平”⽼师所教的所有课的同学的学号、姓名;Select StuId,StuName From tblStudent st Where not exists(Select CourseID From tblCourse cu Inner Join tblTeacher tc On cu.TeaID=tc.TeaIDWhere tc.TeaName='叶平' And CourseID not in(Select CourseID From tblScore Where StuID=st.StuID))--8、查询课程编号“002”的成绩⽐课程编号“001”课程低的所有同学的学号、姓名;Select StuId,StuName From tblStudent s1Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId='001')> (Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId='002')--9、查询所有课程成绩⼩于60分的同学的学号、姓名;Select StuId,StuName From tblStudent stWhere StuId Not IN(Select StuId From tblScore sc Where st.StuId=sc.StuId And Score>60)--10、查询没有学全所有课的同学的学号、姓名;Select StuId,StuName From tblStudent stWhere (Select Count(*) From tblScore sc Where st.StuId=sc.StuId)<(Select Count(*) From tblCourse)--11、查询⾄少有⼀门课与学号为“1001”的同学所学相同的同学的学号和姓名;------运⽤连接查询Select DistInct st.StuId,StuName From tblStudent stInner Join tblScore sc ON st.StuId=sc.StuIdWhere sc.CourseId IN (Select CourseId From tblScore Where StuId='1001')------嵌套⼦查询Select StuId,StuName From tblStudentWhere StuId In(Select Distinct StuId From tblScore Where CourseId In (Select CourseId From tblScore Where StuId='1001'))--12、查询⾄少学过学号为“1001”同学所有课程的其他同学学号和姓名;Select StuId,StuName From tblStudentWhere StuId In(Select Distinct StuId From tblScore Where CourseId Not In (Select CourseId From tblScore Where StuId='1001')--13、把“SC”表中“叶平”⽼师教的课的成绩都更改为此课程的平均成绩; (从⼦查询中获取⽗查询中的表名,这样也⾏)--创建测试表Select * Into Sc From tblScoregoUpdate Sc Set Score=(Select Avg(Score) From tblScore s1 Where s1.CourseId=sc.CourseId)Where CourseId IN(Select CourseId From tblCourse cs INNER JOIN tblTeacher tc ON cs.TeaID=tc.TeaID WHERE TeaName ='叶平')--14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;Select StuID,StuName From tblStudent stWhere StuId <> '1002'AndNot Exists(Select * From tblScore sc Where sc.StuId=st.StuId And CourseId Not In (Select CourseId From tblScore Where StuId='1002')) AndNot Exists(Select * From tblScore Where StuId='1002' And CourseId Not In (Select CourseId From tblScore sc Where sc.StuId=st.StuId))--15、删除学习“叶平”⽼师课的SC表记录;Delete From tblScore Where CourseId IN(Select CourseId From tblCourse cs INNER JOIN tblTeacher tc ON cs.TeaId=tc.TeaId Where tc.TeaName='叶平')--16、向SC表中插⼊⼀些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、'002'号课的平均成绩;Insert Into tblScore (StuId,CourseId,Score)Select StuId,'002',(Select Avg(Score) From tblScore Where CourseId='002') From tblScore WhereStuId Not In (Select StuId From tblScore Where CourseId='003')--17、按平均成绩从⾼到低显⽰所有学⽣的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显⽰:学⽣ID,,数据库,企业管理,英语,有效课程数,有效平均分Select StuId,数据库=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName='数据库' And sc.StuID=st.StuId),企业管理=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName='企业管理' Andsc.StuID=st.StuId),英语=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName='英语' Andsc.StuID=st.StuId),有效课程数=(Select Count(Score) From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where (CourseName='数据库' or CourseName='企业管理' or CourseName='英语') And sc.StuID=st.StuId),有效平均分=(Select Avg(Score) From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where (CourseName='数据库' or CourseName='企业管理' or CourseName='英语') And sc.StuID=st.StuId)From tblStudent stOrder by 有效平均分 Desc--18、查询各科成绩最⾼和最低的分:以如下形式显⽰:课程ID,最⾼分,最低分Select CourseId as 课程ID, 最⾼分=(Select Max(Score) From tblScore sc Where sc.CourseId=cs.CourseId ),最低分=(Select Min(Score) From tblScore sc Where sc.CourseId=cs.CourseId )From tblCourse cs--19、按各科平均成绩从低到⾼和及格率的百分数从⾼到低顺序 (百分数后如何格式化为两位⼩数??)Select 课程ID,平均分,及格率 From(Select CourseId as 课程ID, 平均分=(Select Avg(Score) From tblScore sc Where sc.CourseId=cs.CourseId ),及格率=Convert(varchar(10),((Select Count(*) From tblScore sc Where sc.CourseId=cs.CourseId And sc.Score>=60)*10000/(Select Count(*) From tblScore sc Where sc.CourseId=cs.CourseId))/100)+'%'From tblScore cs) as tmpGroup by 课程ID,平均分,及格率Order by 平均分, Convert(float,substring(及格率,1,len(及格率)-1)) Desc--20、查询如下课程平均成绩和及格率的百分数(⽤"1⾏"显⽰): 企业管理(001),马克思(002),OO&UML (003),数据库(004)Select 课程ID=sc.CourseId,课程名称=cs.CourseName,平均成绩=Avg(Score),及格率 =Convert(varchar(10),((Select Count(Score) From tblScore Where CourseId=sc.CourseId AndScore>=60)*10000/Count(Score))/100.0)+'%'From tblScore scInner Join tblCourse cs ON sc.CourseId=cs.CourseIdWhere sc.CourseId like '00[1234]'Group By sc.CourseId,cs.CourseName--21、查询不同⽼师所教不同课程平均分从⾼到低显⽰Select 课程ID=CourseId,课程名称=CourseName,授课教师=TeaName,平均成绩=(Select Avg(Score) From tblScore WhereCourseId=cs.CourseId)From tblCourse csInner Join tblTeacher tc ON cs.TeaId=tc.TeaIdOrder by 平均成绩 Desc--22、查询如下课程成绩第 3 名到第 6 名的学⽣成绩单:企业管理(001),马克思(002),UML (003),数据库(004)格式:[学⽣ID],[学⽣姓名],企业管理,马克思,UML,数据库,平均成绩Select * From(Select Top 6 学⽣ID=StuId,学⽣姓名=StuName,企业管理=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName='企业管理' And sc.StuID=st.StuId),马克思=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName='马克思' Andsc.StuID=st.StuId),UML=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName='UML' Andsc.StuID=st.StuId),数据库=(Select Score From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where CourseName='数据库' Andsc.StuID=st.StuId),平均成绩=(Select Avg(Score) From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where (CourseName='数据库' or CourseName='企业管理' or CourseName='UML'or CourseName='马克思') And sc.StuID=st.StuId),排名=Row_Number() Over(Order by(Select Avg(Score) From tblScore sc Inner Join tblCourse cs On sc.CourseId=cs.CourseId Where (CourseName='数据库' or CourseName='企业管理' or CourseName='UML'or CourseName='马克思') And sc.StuID=st.StuId) DESC) From tblStudent stOrder by 排名) as tmpWhere 排名 between 3 And 6--23、统计列印各科成绩,各分数段⼈数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]Select 课程ID=CourseId, 课程名称=CourseName,[100-85]=(Select Count(*) From tblScore sc Where CourseId=cs.CourseId And Score between 85 And 100),[85-70]=(Select Count(*) From tblScore sc Where CourseId=cs.CourseId And Score between 70 And 84),[70-60]=(Select Count(*) From tblScore sc Where CourseId=cs.CourseId And Score between 60 And 69),[<60]=(Select Count(*) From tblScore sc Where CourseId=cs.CourseId And Score <60)From tblCourse cs--24、查询学⽣平均成绩及其名次Select 学号=st.StuId, 姓名=StuName,平均成绩=sc.AvgScore,名次=(Dense_Rank() Over(Order by sc.AvgScore Desc)) From tblStudent st Inner Join (Select StuId,Avg(Score) as AvgScore From tblScore Group by StuId) as sc On sc.StuId=st.StuIdOrder by 学号--25、查询各科成绩前三名的记录:(不考虑成绩并列情况)Select 学号=StuId,课程号=CourseId,分数=ScoreFrom(Select Row_Number() Over(order by CourseId,Score Desc) as i,* From tblScore) as tmp --得到⼀个临时的排名表,其中i表⽰编号Where i In(Select Top 3 i From (Select Row_Number() Over(order by CourseId,Score Desc) as i,* From tblScore) as t1 Wheret1.CourseId=tmp.CourseId)--26、查询每门课程被选修的学⽣数Select 课程ID=CourseId,选修⼈数=(Select Count(*) From (Select Distinct StuId From tblScore Where CourseId=cs.CourseId) as tmp) From tblCourse cs--27、查询出只选修了⼀门课程的全部学⽣的学号和姓名Select 学号=StuId,姓名=StuNameFrom tblStudent stWhere (Select Count(*) From (Select Distinct CourseId From tblScore Where StuId=st.StuId) as tmp)=1--28、查询男⽣、⼥⽣⼈数Select 男⽣⼈数=(select Count(*) From tblStudent Where StuSex='男'),⼥⽣⼈数=(select Count(*) From tblStudent Where StuSex='⼥')--29、查询姓“张”的学⽣名单Select * From tblStudent Where StuName like '张%'--30、查询同名同性学⽣名单,并统计同名⼈数Select Distinct 学⽣姓名=StuName,同名⼈数=(Select Count(*) From tblStudent s2 Where s2.StuName=st.StuName) From tblStudent st Where (Select Count(*) From tblStudent s2 Where s2.StuName=st.StuName)>=2--31、1981年出⽣的学⽣名单(注:Student表中Sage列的类型是datetime)Select * From tblStudent Where Year(Sage)=1981--32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select 课程ID=CourseId,课程名称=CourseName,平均成绩=(Select Avg(Score) From tblScore Where CourseId=cs.CourseId)From tblCourse csOrder by 平均成绩,CourseId Desc--33、查询平均成绩⼤于85的所有学⽣的学号、姓名和平均成绩Select 学号=StuId,姓名=StuName,平均成绩=(Select Avg(Score) From tblScore Where StuId=st.StuId) From tblStudent stWhere (Select Avg(Score) From tblScore Where StuId=st.StuId)>85--34、查询课程名称为“数据库”,且分数低于60的学⽣姓名和分数Select 姓名=StuName,分数=Score From tblScore scInner Join tblStudent st On sc.StuId=st.StuIdInner Join tblCourse cs On sc.CourseId=cs.CourseIdWhere CourseName='数据库' And Score<60--35、查询所有学⽣的选课情况;Select 学号=StuId,选课数=(Select Count(*) From (Select Distinct CourseId From tblScore Where StuId=st.StuId) as tmp)From tblStudent stSelect distinct 姓名=StuName,选修课程=CourseName From tblScore scInner Join tblStudent st On sc.StuId=st.StuIdInner Join tblCourse cs On sc.CourseId=cs.CourseId--36、查询任何⼀门课程成绩在70分以上的姓名、课程名称和分数;Select 姓名=StuName,课程名称=CourseName,分数=Score From tblScore scInner Join tblStudent st On sc.StuId=st.StuIdInner Join tblCourse cs On sc.CourseId=cs.CourseIdWhere Score>=70--37、查询不及格的课程,并按课程号从⼤到⼩排列Select * From tblScore Where Score<60 order by CourseId Desc--38、查询课程编号为003且课程成绩在80分以上的学⽣的学号和姓名;Select StuId,StuName From tblStudentWhere StuId in(Select StuId From tblScore Where CourseId='003' And Score>=80)--39、求选了课程的学⽣⼈数Select 选了课程的学⽣⼈数=Count(*) From tblStudent st Where StuId IN (Select StuID From tblScore)--40、查询选修“叶平”⽼师所授课程的学⽣中,成绩最⾼的学⽣姓名及其成绩Select CourseId,CourseName,该科最⾼学⽣=(Select StuName From tblStudent Where StuId in (Select Top 1 StuID From tblScore Where CourseId=cs.CourseId Order by Score Desc)),成绩=(Select Top 1 Score From tblScore Where CourseId=cs.CourseId Order by Score Desc)From tblCourse cs Inner Join tblTeacher tc ON cs.TeaId=tc.TeaIdWhere TeaName='叶平'--41、查询各个课程及相应的选修⼈数Select 课程ID=CourseId,选修⼈数=(Select Count(*) From (Select Distinct StuId From tblScore Where CourseId=cs.CourseId) as tmp) From tblCourse cs--42、查询不同课程成绩相同的学⽣的学号、课程号、学⽣成绩Select 学号=StuId, 课程号=CourseId, 成绩=Score From tblScore scWhere Exists (Select * From tblScore Where Score=sc.Score And StuId=sc.StuId And CourseId <>sc.CourseId)Order by 学号,成绩--43、查询每门功成绩最好的前两名Select 课程号=CourseId,第1名=(Select Top 1 StuId From tblScore Where CourseId=cs.CourseId Order by Score DESC),第2名=(Select Top 1 StuID From (Select Top 2 StuId,Score From tblScore Where CourseId=cs.CourseId Order by Score DESC) as tmp Order by Score)From tblCourse cs--44、统计每门课程的学⽣选修⼈数(超过10⼈的课程才统计)。

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数据查询练习题

一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。

四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。

用SQL语句创建四个表并完成相关题目。

表1-1数据库的表结构表(一)Student (学生表)属性名数据类型可否为空含义Sno varchar (20)否学号(主码)Sname varchar (20)否学生姓名S sex varchar (20)否学生性别Sbirthday datetime可学生出生年月1053-10588 1093-10576 1013-10564 1073-10591 1083-10578 1016-16685 1076-16679 1086-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列。

select Sname,Ssex,Class from Student2、查询教师所有的单位即不重复的Depart列。

select distinct Depart from teacher3、查询Student表的所有记录。

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

select * from Score where Degree between 60and 805、查询Score表中成绩为85,86或88的记录。

select * from Score where Degree=85 orDegree=86 or Degree=88 6、查询Student表中“95031”班或性别为“女”的同学记录。

sql查询题目及答案

sql查询题目及答案

数据库中有如下三个表:学生表(学号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查询题目45道题

sql查询题目45道题

1、查询所有数学系学生的信息。

2、查询李老师所教的课程号、课程名3、查询年龄大于20岁的女同学的学号和姓名。

4、查询学号为‘991101’所选修的全部课程成绩。

5、查询平均成绩都在80分以上的学生学号及平均成绩。

6、查询至少有6人选修的课程号。

7、查询01002号课程得最高分的学生的学号8、查询学号为“991104”的学生选修的课程号和课程名9、‘李小波’所选修的全部课程名称。

10、所有成绩都在70分以上的学生姓名及所在系。

11、程序设计成绩比计算机基础成绩好的学生姓名12、至少选修了两门课及以上的学生的姓名和性别13、选修了李老师所讲课程的学生人数14、‘操作系统’课程得最高分的学生的姓名、性别、所在系15、显示所有课程的选修情况。

16、取出没有选修‘操作系统’课程的学生姓名和年龄17、没有选修李老师所讲课程的学生18、取出选修了全部课程的学生姓名,性别。

19、检索至少选修课程“数据结构”和“C语言”的学生学号。

20、检索学习课程号为01002的学生学号与姓名。

21、检索选修课程号为01001或01002的学生学号,姓名和所在系22、检索至少选修课程号为01001和01002的学生姓名。

23、检索每个学生的出生年月24、在STUDENT中检索学生的姓名和出生年份,输出的列名为STUDENT_NAME和BIRTH_YEAR。

25、向学生选课数据表SC中插入一个元组(991105,01001,90)26、把课程名为“程序设计”的成绩从学生选课数据表SC中删除27、把女同学的成绩提高10%。

28、列出选修课程超过3门的学生姓名及选修门数。

29、求选修了各课程的学生的人数。

30、在学生选课数据表SC中,求选修课程01001的学生的学号和得分,并将结果按分数降序排序。

31、查找每个同学的学号及选修课程的平均成绩情况。

32、列出学生所有可能的选课情况。

33、列出每个同学的学号、姓名及选修课程的平均成绩情况,没有选修的同学也列出。

数据库sql查询语句练习2_习题_结果(单世民)

数据库sql查询语句练习2_习题_结果(单世民)

数据库sql查询语句练习2_习题_结果(单世民)现在有一教学管理系统,具体的关系模式如下:Student(no,name,sex,birthday,class)Teacher(no,name,sex,birthday,prof,depart)Course(cno,cname,tno)Score(no,cno,degree)其中表中包含如下数据:Course表:Score表:Student表:Teacher表:根据上面描述完成下面问题:(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL1.写出上述表的建表语句。

命令:create table Student(no int,name varchar(14),sex varchar(2),birthday date,class int);create table Teacher(no int,name varchar(14),sex varchar(2),birthday date,prof varchar(10),depart varchar(10));create table Course(cno varchar(8),cname varchar(14),tno int);create table Score(no int,cno varchar(8),degree int);DML2.给出相应的INSERT语句来完成题中给出数据的插入。

命令:insert into Student values(5001,'李勇','男','1987-7-22',95001);insert into Student values(5002,'刘晨','女','1987-11-15',95002); insert into Student values(5003,'王敏','女','1987-10-5',95001); insert into Student values(5004,'李好尚','男','1987-9-25',95003); insert into Student values(5005,'李军','男','1987-7-17',95004); insert into Student values(5006,'范新位','女','1987-6-18',95005); insert into Student values(5007,'张霞东','女','1987-8-29',95006); insert into Student values(5008,'赵薇','男','1987-6-15',95007); insert into Student values(5009,'钱民将','女','1987-6-23',95008); insert into Student values(5010,'孙俪','女','1987-9-24',95002); insert into Student values(108,'赵里','男','1987-6-15',95007);insert into Student values(109,'丘处机','男','1987-6-23',95008);insert into Student values(107,'杨康','男','1987-9-24',95001);insert into Teacher values(1,'李卫','男','1957-11-5','教授','电子工程系'); insert into Teacher values(2,'刘备','男','1967-10-9','副教授','math'); insert into Teacher values(3,'关羽','男','1977-9-20','讲师','sc'); insert into Teacher values(4,'李修','男','1957-6-25','教授','elec'); insert into Teacher values(5,'诸葛亮','男','1977-6-15','教授','计算机系'); insert into T eacher values(6,'殷素素','女','1967-1-5','副教授','sc'); insert into Teacher values(7,'周芷若','女','1947-2-23','教授','sc'); insert into Teacher values(8,'赵云','男','1980-6-13','副教授','计算机系'); insert into T eacher values(9,'张敏','女','1985-5-5','助教','sc'); insert into T eacher values(10,'黄蓉','女','1967-3-22','副教授','sc');insert into Teacher values(11,'张三','男','1967-3-22','副教授','sc');insert into Course values('3-101','数据库',1);insert into Course values('5-102','数学',2);insert into Course values('3-103','信息系统',3);insert into Course values('3-104','操作系统',4);insert into Course values('3-105','数据结构',5);insert into Course values('3-106','数据处理',5);insert into Course values('4-107','pascal语言',6);insert into Course values('4-108','C++',7);insert into Course values('4-109','java',8);insert into Course values('3-245','数据挖掘',10);insert into Course values('3-111','软件工程',11);insert into Score values(5001,'3-105',69);insert into Score values(5001,'5-102',55);insert into Score values(5003,'4-108',85);insert into Score values(5004,'3-105',77);insert into Score values(5005,'3-245',100);insert into Score values(5006,'3-105',53);insert into Score values(5003,'4-109',45);insert into Score values(5008,'3-105',98);insert into Score values(5004,'4-109',68);insert into Score values(5010,'3-105',88);insert into Score values(5003,'3-105',98);insert into Score values(5005,'4-109',68);insert into Score values(5002,'3-105',88);insert into Score values(107,'3-105',98);insert into Score values(108,'4-109',68);insert into Score values(109,'3-105',88);insert into Score values(109,'4-109',80);insert into Score values(107,'3-111',88);insert into Score values(5003,'3-111',80);单表查询3.以class降序输出student的所有记录(student表全部属性)命令:select*from Student order by class desc;4.列出教师所在的单位depart(不重复)。

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人的课程才统计)。

数据库SQL查询语句练习

数据库SQL查询语句练习

(1)查询语句练习题SQL数据库.C4的学生学号;(有三个关系: 4)检索选修课程号为C2或设教学数据库EducationSELECT Sno ,,AGE,SEX,SDEPT);(SNO学习关系SC学生关系S(SNO,SNAMEFROM SC),CNAME,CDEPT,TNAMECNO,GRADE);课程关系C(CNOWHERE Cno=‘C2' OR Cno=‘C4';查询问题:1)检索计算机系的全体学生的学号,姓名和性别;((5)检索至少选修课程号为C2和C4的学生学号; C2的学生学号与姓名;(2)检索学习课程号为SELECT Sno”的学生学号与姓名;(3)检索选修课程名为“DSFROM SC X,SC YC4的学生学号;(4)检索选修课程号为C2或WHERE X.Sno=Y.Sno AND o=‘C2' AND o=‘C4' ;(5)检索至少选修课程号为C2和C4的学生学号;)检索不学C2课的学生姓名和年龄;(6(6)检索不学C2课的学生姓名和年龄;)检索学习全部课程的学生姓名;(71.SELECT Sname2.SELECT Sname,Sage S3所学课程的学生学号。

(8)查询所学课程包含学生 FROM S FROM S WHERE Sno NOT IN WHERE NOT EXISTS(1)检索计算机系的全体学生的学号,姓名和性别;( SELECT Sno ( SELECT *Sex Sname,SELECT Sno, FROM SC FROM SCFROM SWHERE Cno=‘C2'); WHERE SC.Sno=S.Sno ';'WHERE Sdept =CS AND Cno=‘C2');)检索学习课程号为(2C2的学生学号与姓名;(7)检索学习全部课程的学生姓名;在表S中找学生,要求这个学生学了全部课程。

SQL查询语句练习题

SQL查询语句练习题

SQL查询语句练习题简单查询语句第一套三、综合应用题(1小题,计30分)在考生文件夹下有学生成绩数据库xuesheng3,包括如下所示3个表文件1)xs.dbf(学生文件:学号C8,姓名C8,性别C2,班级C5;另有索引文件XS.IDX,索引键:学号)2)cj.dbf(成绩文件:学号C8,课程名C20,成绩N5.1;另有索引文件CJ.IDX,索引键:学号)3)cjb.dbf(成绩表文件:学号C8,姓名C8,班级C5,课程名C12,成绩N5.1)将所有选修了"计算机基础"的学生的"计算机基础"成绩,按成绩由高到低的顺序填到成绩表文件CJB.DBF中第三套二、简单应用题(共2小题,每题20分,计40分)(1)在考生文件夹下有一个数据库stsc,其中有数据库表student、score和course,利用SQL语句查询选修了"网络工程"课程的学生的全部信息,并将结果按学号降序存放在netp.dbf文件中(表的结构同student,并在其后加入课程号和课程名字段)。

第四套一、基本操作题(共4小题,第1和2题是7分、第3和4题是8分)(4)从表hjqk中查询"奖级"为一等的学生的全部信息(hjqk表的全部字段),并按分数的降序存入新表new1中。

三、综合应用题(1小题,计30分)在考生文件夹下有仓库数据库CHAXUN3包括3个表文件:zg(仓库号C(4),职工号C(4),工资N(4))dgd(职工号C(4),供应商号C(4),订购单号C(4),订购日期D,总金额N(10))gys(供应商号C(4),供应商名C(16),地址C(10))检索出工资多于1230元的职工向北京的供应商发出的订购单信息,并将结果按总金额降序排列存放在order文件中。

第六套二、简单应用题(共2小题,每题20分,计40分)(2)在考生文件夹中有一个数据库sdb,其中有数据库表student2、sc和course2。

数据库查询语言(SQL)测试

数据库查询语言(SQL)测试

数据库查询语言(SQL)测试(答案见尾页)一、选择题1. SQL的全称是什么?A. Simplified Query LanguageB. Structured Query LanguageC. Standard Query LanguageD. Streamlined Query Language2. 在SQL中,哪个关键字用于从数据库表中检索数据?A. INSERTB. SELECTC. UPDATED. DELETE3. 以下哪个语句用于在SQL中创建一个新的数据库表?A. CREATE TABLEB. ALTER TABLEC. CREATE DATABASED. ALTER DATABASE4. 在SQL中,哪种数据类型用于存储文本字符串?A. INTB. VARCHARC. FLOATD. BOOLEAN5. 在SQL中,哪个函数用于计算某个字段的平均值?A. COUNTB. SUMC. AVGD. MIN6. 在SQL中,哪个语句用于从一个表中删除一行数据?A. DELETEB. UPDATEC. INSERTD. SELECT7. 在SQL中,哪个关键字用于在查询结果中显示行号?A. ROW_NUMBER()B. ROWNUMC. NUMBERD. SERIAL8. 在SQL中,哪个关键字用于将两个表的数据进行连接?A. JOINB. UNIONC. INTERSECTD. EXCEPT9. 在SQL中,哪个关键字用于限制查询结果的行数?A. LIMITB. TOPC. OFFSETD. FETCH10. 在SQL中,哪个关键字用于在查询中使用通配符来匹配多个值?A. INB. LIKEC. BETWEEND. AND11. 在SQL中,用于修改表中数据的命令是:A. INSERTB. SELECTC. UPDATED. DELETE12. 在SQL中,用于删除表中数据的命令是:A. INSERTB. SELECTC. UPDATED. DELETE13. 在SQL中,用于创建新表的命令是:A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. CREATE DATABASE14. 在SQL中,用于修改现有表结构的命令是:A. INSERTB. SELECTC. UPDATED. ALTER TABLE15. 在SQL中,用于从多个表中联合查询数据的命令是:A. JOINB. UNIONC. INTERSECTD. EXCEPT16. 在SQL中,用于对查询结果进行排序的命令是:A. ORDER BYB. GROUP BYC. WHERED. HAVING17. 在SQL中,用于筛选查询结果的命令是:A. WHEREB. ORDER BYC. GROUP BYD. LIMIT18. 在SQL中,用于限制查询结果数量的命令是:A. ORDER BYB. LIMITC. WHERED. GROUP BY19. 哪个语句用于在SQL中添加新的记录到数据库表中?A. INSERT INTOB. SELECTC. UPDATED. DELETE20. 在SQL中,用于修改已有记录的命令是哪个?A. INSERTB. SELECTC. UPDATED. DELETE21. SQL中用于删除数据库表中所有记录的语句是什么?A. DROP TABLEB. DELETE FROMC. ALTER TABLED. TRUNCATE TABLE22. 在SQL中,用于从数据库表中选择特定列的语句是什么?A. SELECT * FROMB. INSERT INTOC. UPDATED. DELETE23. SQL中用于排序查询结果的关键字是什么?A. ORDER BYB. WHEREC. GROUP BYD. LIMIT24. 在SQL中,用于筛选满足特定条件的记录的关键字是什么?A. WHEREB. SELECTC. FROMD. ORDER BY25. SQL中用于创建新数据库的语句是什么?A. CREATE DATABASEB. ALTER DATABASEC. DROP DATABASED. USE26. 在SQL中,用于删除数据库表的语句是什么?A. ALTER TABLEB. DROP TABLEC. CREATE TABLED. DELETE27. 在SQL中,哪种数据类型用于存储文本?A. INTB. VARCHARC. DATED. BOOLEAN28. 在SQL中,用于连接两个表的操作符是什么?A. JOINB. UNIONC. DIFFERENCED. INTERSECT29. 以下哪个语句用于在SQL中插入一条新记录?A. INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);B. SELECT * FROM table_name;C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name;30. 在SQL中,用于删除表中所有记录的语句是什么?A. DELETE FROM table_name;B. DROP TABLE table_name;C. TRUNCATE TABLE table_name;D. ALTER TABLE table_name;31. 在SQL中,用于修改表中记录的数据的语句是什么?A. INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);B. SELECT * FROM table_name;C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name;32. 在SQL中,用于从表中检索特定列的数据的语句是什么?A. SELECT * FROM table_name;B. INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name;33. 在SQL中,用于对查询结果进行排序的语句是什么?A. ORDER BY column1, column2, column3;B. SELECT * FROM table_name;C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name;34. 在SQL中,用于限制查询结果数量的子句是什么?A. LIMITB. WHEREC. GROUP BYD. HAVING35. 在SQL中,用于创建新表的命令是什么?A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. UPDATE36. 在SQL中,哪种类型的子句用于修改查询的结果?A. SELECTB. FROMC. WHERED. UPDATE37. 在SQL中,用于定义新表的CREATE TABLE语句中,哪一列是可选的?A. PRIMARY KEYB. FOREIGN KEYC. NOT NULLD. UNIQUE38. 在SQL中,用于在查询结果中包含行数的关键字是?A. LIMITB. TOPC. COUNTD. OFFSET39. 在SQL中,哪个关键字用于在查询结果中包含聚合函数的结果?A. SELECTB. FROMC. WHERED. GROUP BY40. 在SQL中,哪个关键字用于在查询结果中对列进行分组?A. SELECTB. FROMC. WHERED. GROUP BY41. 在SQL中,哪个关键字用于在查询结果中过滤行?A. SELECTB. FROMC. WHERED. GROUP BY42. 在SQL中,哪个关键字用于在查询结果中排序行?A. SELECTB. FROMC. WHERED. ORDER BY43. 在SQL中,哪个关键字用于在查询结果中连接两个或多个表的列?A. JOINB. WHEREC. SELECTD. FROM二、问答题1. 什么是SQL,它的主要功能是什么?2. SQL中有哪些基本表结构?3. 如何在SQL中创建表?4. SQL中索引的作用是什么?5. SQL中SELECT语句用于执行哪些操作?6. 如何使用JOIN语句将两个表连接起来?7. 什么是事务?请解释ACID属性。

SQL查询语句习题

SQL查询语句习题

1.检索“商品信息”类别名称=玩具并且零售价在100和300之间的商品的平均零售价,最大零售价,最小零售价,以及零售价之和Select 类别名称,零售价, min(零售价)最小零售价, max(零售价)最大零售价,avg(零售价)平均零售价,sum(零售价)零售价之和from 商品信息 a inner join 商品类别b ona.类别ID=b.类别ID where 类别名称='玩具' group by 类别名称,零售价2.检索“商品入出库”中审核日期大于2009年3月1日,并且入库类型编号为“采购入库”的商品的总金额(入出库数量*进价)返回数据:入出库编号、总金额(商品入出库.入库类型编号=入出库类型.入库类型编号)select a.入出库编号,类型名称,总金额=入出库数量*进价from 商品入出库a inner join 入出库类型b on a.入出库类型编号=b.入出库类型编号inner join 入出库明细c on c.入出库编号= a.入出库编号where 审核日期>'2009-03-01' and 类型名称='采购入库'3. 统计每个仓库中库存的除去食品之外的总金额(【仓库】.仓库ID=【库存.仓库IDselect 仓库名称,类别名称, sum(数量*零售价)总金额from 仓库a inner join 库存b on a.仓库ID=b.仓库IDinner join 商品信息c on b.商品ID=c.商品ID inner join 商品类别d on c.类别ID=d.类别ID where 类别名称not like '食品' group by 仓库名称,类别名称4、统计“商品信息”中商品名称相同的信息,要求商品名称的重复次数大于3,返回数据商品名称,次数select 商品名称,count(商品名称)次数from 商品信息group by 商品名称having count(商品名称)>35、统计“库存”中汇总库存数量小于100的商品编码、商品名称、汇总库存数量select 商品编码,商品名称,count (数量)汇总库存数量from 库存a inner join 商品信息bon a.商品ID=b.商品ID group by 商品编码,商品名称having count (数量)<100实验11 SQL Server 2000的存储过程实验目的掌握使用向导创建存储过程并更新相应数据掌握使用T-SQL编程的方法掌握使用T-SQL语句创建一个存储过程并验证掌握创建和执行带参数的存储过程熟练使用系统存储过程、系统函数掌握用在企业管理器中管理存储过程实验要求创建一个不带参数的存储过程。

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

设教学数据库Education有三个关系:学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)查询问题:(1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS”的学生学号与姓名;(4)检索选修课程号为C2或C4的学生学号;(5)检索至少选修课程号为C2和C4的学生学号;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;(8)查询所学课程包含学生S3所学课程的学生学号。

(1)检索计算机系的全体学生的学号,姓名和性别;SELECT Sno,Sname,SexFROM SWHERE Sdept ='CS';(2)检索学习课程号为C2的学生学号与姓名;Sname ,1.SELECT SnoSname,2.SELECT S.SnoFROM SSC, FROM SWHERE Sno IN WHERE S.Sno=SC.Sno SELECT Sno (;C2'AND o=‘ FROM SC )‘C2' WHERE Cno=DS)检索选修课程名为“”的学生学号与姓名(3表建立它们二者的表没有直接联系,必须通过SC表中,但S和C 本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C S SC →联系。

C →基本思路: Cno;表中找出“DS”课程的课程号(1)首先在C ;Cno 集合中的某个元素Cno2)然后在SC表中找出Cno等于第一步给出的(送入结果表列。

和SnameSno等于第二步中Sno 集合中某个元素的元组,取出Sno S(3)最后在关系中选出Sname ,SELECT SnoFROM SWHERE Sno INSELECT Sno ( FROM SCWHERE Cno INSELECT Cno ( FROM C);DS') WHERE Cname=‘的学生学号;C2或C4(4)检索选修课程号为SELECT SnoFROM SC';'C2 OR Cno=‘C4WHERE Cno=‘的学生学号;和C4C2(5)检索至少选修课程号为SELECT SnoSC YFROM SC X,; 'C4‘ AND o='C2‘WHERE X.Sno=Y.Sno AND o=(6)检索不学C2课的学生姓名和年龄;1.SELECT Sname2.SELECT Sname FROM S FROM SWHERE Sno NOT IN WHERE NOT EXISTSSELECT Sno ( SELECT * (FROM SC FROM SC;C2 WHERE Cno=‘') WHERE SC.Sno=S.Sno );C2 AND Cno=‘'7)检索学习全部课程的学生姓名;(C中不存在一门课程,这个学生没有学。

S中找学生,要求这个学生学了全部课程。

换言之,在S表中找学生,在在表SELECT SnameFROM SWHERE NOT EXISTS(SELECT *FROM CWHERE NOT EXISTS(SELECT *FROM SCWHERE SC.Sno=S.Sno AND o=o));(8)查询所学课程包含学生S3所学课程的学生学号。

分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。

SELECT DISTINCT SnoFROM SC AS XWHERE NOT EXISTS(SELECT *FROM SC AS YWHERE Y.Sno=‘S3' AND NOT EXISTS(SELECT *FROM SC AS ZWHERE Z.Sno=X.Sno AND o=o));设教学数据库Education有三个关系:学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)查询问题:岁以下的学生姓名及年龄。

:查所有年龄在2012:查考试成绩有不及格的学生的学号3:查所年龄在20至23岁之间的学生姓名、系别及年龄。

4:查计算机系、数学系、信息系的学生姓名、性别。

5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别6:查所有姓“刘”的学生的姓名、学号和性别。

7:查姓“上官”且全名为3个汉字的学生姓名。

8:查所有不姓“张”的学生的姓名。

9:查DB_Design课程的课程号。

10:查缺考的学生的学号和课程号。

11:查年龄为空值的学生的学号和姓名。

12:查计算机系20岁以下的学生的学号和姓名。

13:查计算机系、数学系、信息系的学生姓名、性别。

14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。

15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

16:查询学生总人数。

17:查询选修了课程的学生人数。

18:计算选修了C1课程的学生平均成绩。

19:查询学习C3课程的学生最高分数。

20:查询各个课程号与相应的选课人数。

21:查询计算机系选修了3门以上课程的学生的学号。

22:求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。

23:查询每个学生及其选修课程的情况。

24:查询选修了C2课程且成绩在90分以上的所有学生。

25:查询每个学生选修的课程名及其成绩。

26:统计每一年龄选修课程的学生人数。

27:查询选修了C2课程的学生姓名。

28:查询与“张三”在同一个系学习的学生学号、姓名和系别。

29:查询选修课程名为“数据库”的学生学号和姓名。

30:查询与“张三”在同一个系学习的学生学号、姓名和系别。

31:查询选修课程名为“数据库”的学生学号和姓名。

32:查询选修了C2课程的学生姓名。

33:查询所有未选修C2课程的学生姓名。

34:查询与“张三”在同一个系学习的学生学号、姓名和系别。

35:查询选修了全部课程的学生姓名。

36:查询所学课程包含学生S3所学课程的学生学号(1)比较例1:查所有年龄在20岁以下的学生姓名及年龄。

SELECT Sname,SageFROM SWHERE Sage<20; (NOT age>=20)例2:查考试成绩有不及格的学生的学号SELECT DISTINCT SnoFROM SC;WHERE grade<60(2)确定范围例3:查所年龄在20至23岁之间的学生姓名、系别及年龄。

SELECT Sname,Sdept,SageFROM SWHERE Sage BETWEEN 20 AND 23;(3)确定集合例4:查计算机系、数学系、信息系的学生姓名、性别。

SELECT Sname,SsexFROM SWHERE Sdept IN ('CS', ‘IS', ‘MA TH');例5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别SELECT Sname,SsexFROM SWHERE Sdept NOT IN ('CS', ‘IS', ‘MA TH');(4)字符匹配例6:查所有姓“刘”的学生的姓名、学号和性别。

SELECT Sname,Sno,SsexFROM SWHERE Sname LIKE ‘刘%';例7:查姓“上官”且全名为3个汉字的学生姓名。

SELECT SnameFROM SWHERE Sname LIKE ‘上官_ _';例8:查所有不姓“张”的学生的姓名。

SELECT Sname,Sno,SsexFROM SWHERE Sname NOT LIKE ‘张%';例9:查DB_Design课程的课程号。

SELECT CnoFROM CWHERE Cname LIKE ‘DB\_Design' ESCAPE ‘\';(5)涉及空值的查询例10:查缺考的学生的学号和课程号。

SELECT Sno,CnoFROM SCWHERE Grade IS NULL;(不能用=代替){ 有成绩的WHERE Grade IS NOT NULLL;}例11:查年龄为空值的学生的学号和姓名。

SELECT Sno,SnameFROM SWHERE Sage IS NULL;(6)多重条件查询例12:查计算机系20岁以下的学生的学号和姓名。

Sname ,SELECT SnoFROM SWHERE Sdept=‘CS' AND Sage<20;例13:查计算机系、数学系、信息系的学生姓名、性别。

SELECT Sname,SsexFROM SWHERE Sdept ='CS' OR Sdept =IS' OR Sdept ='MA TH');3、对查询结果排序例14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。

SELECT Sno,GradeFROM SCWHERE Cno=‘C3'ORDER BY Grade DESC;例15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

SELECT *FROM SORDER BY Sdep,Sage DESC;4.聚合函数的使用例16:查询学生总人数。

SELECT COUNT(*)FROM S例17:查询选修了课程的学生人数。

SELECT COUNT(DISTINCT Sno)FROM SC例18:计算选修了C1课程的学生平均成绩。

SELECT A VG(Grade)FROM SCWHERE Cno=‘C1';例19:查询学习C3课程的学生最高分数。

SELECT MAX(Grade)FROM SCWHERE Cno=‘C3';5、对查询结果分组例20:查询各个课程号与相应的选课人数。

SELECT Cno,COUNT(Sno)FROM SCGROUP BY Cno;该SELECT语句对SC表按Cno的取值进行分组,所有具有相同Cno值的元组为一组,然后对每一组作用聚合函数COUNT 以求得该组的学生人数。

如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件组,则可以使用HAVING短语指定筛选条件。

例21:查询计算机系选修了3门以上课程的学生的学号。

SELECT SnoFROM SCWHERE Sdept=‘CS'GROUP BY Sno;>3)*(VING COUNTHAWHERE子句与HAVING短语的根本区别在于作用对象不同。

相关文档
最新文档