第一篇:SQL习题1
Customers(cid,cname,city,discnt)存储客户信息。
cid 主键,客户的惟一标识符 cname 客户名称 city 客户所在城市
discnt客户在价格上所获得的折扣
saleagents(aid,aname,city,percent)存储销售代理的信息
aid 主键,销售代理的惟一标识符 aname 销售代理的名称 city 销售代理所在城市
percent 销售代理每笔交易的提成
products(pid,pname,city,quantity,price)存储产品的信息
pid主键,销售代理的惟一标识符 pname 产品名称
city 产品在哪个城市存放 quantity产品的库存量 price产品的单价 orders(orderno,month,cid,aid,pid,qty,dollars)存储每一笔交易的信息
orderno 主键,每一笔定单的编号 month 签订定单的月份
cid 客户的标识符,用于指明是和哪一个客户签订的定单
aid 代理的标识符,用于指明是和哪一个代理签订的定单
qty 定单交易的产品数量 dollars交易的总的价格
1. 查询产地为上海的产品的名称与库存量。
2. 查询产地为上海、北京、深圳的产品名称与价格。
3. 查询价格在低于50的产品名称与单价。4. 查询客户的全部信息。
5. 在定单(ORDER表)中查询不重复的客户号。
6. 查询库存量在3000与5000之间的产品名称与库存量。7. 查询不在北京、深圳和上海的客户名称和所在城市。
8. 查询客户名称最后一个字为‘南’的客户编号与名称。
9. 查询销售代理的编号和名称并用别名的方式将相应的列标题改为‘代理编号’,‘代理名称’ 查询产品名称第二个字为‘电’的产品编号和名称。查询产品名称为以‘电-’开头的所有产品信息 查询产品库存量在2000以上的产品名称与库存量并按库存量的降序排列
select pname,quantity from products where quantity>2000 order by quantity desc;查询产品的全部信息并按价格升序,库存量降序排列。
Select * from products orderby price,quantity desc;
1.在产品表中查询产品数量小于10000,价格大于20元的商品信息。
2.检索所有的客户信息,并按折扣率升序排列。
3.检索所有的产品信息,查询结果按产品的库存量升序排列,库存量相同的按产品的单位售价降序排列。4.查询客户总人数。
5.查询签了订单的总人数。6.查询CPU的平均价格。7.查询CPU的最高、最低价。
8.计算C001客户所签订单中的产品总量。9.计算所有产品的平均价格。
10.代理商A001所做的定单中,销售额最大的定单额度。
11.Select Max(dollars)from orders where aid=’A001’;12.检索每一客户及相应的定单数。13.检索签订的定单数超过5的客户及相应的定单数。
14.检索每个客户及其与此客户签订的定单情况。Select customers.* ,orders.* from customers,orders where customers.cid =orders.cid
15.检索至少签订了两个定单的客户编号。Select cid form orders A,orders B where A.cid =B.cid and A.orderno<> B.orderno
查询每个客户签定的定单数。Select cid,count(cid)from orders group by cid;
16.检索“AK公司”所签的每笔定单的数量及代理的名称。//子查询
17.检索与C001客户在同一个城市的所有客户信息。
18.检索所有通过代理A003或A004购买产品的客户信息。
19.检索所有不通过代理A003或A004购买产品的客户信息。
20.检索所有通过纽约的代理购买产品的客户信息。
21.检索满足如下条件的客户信息:此客户签订的定单中的数量(qty)大于C001客户所签的所有定单中某一个定单的数量(qty)。
22.检索客户签定的定单中比C001所签的所有定单的数量都大的定单的信息。
SC(SNO,CNO,GRADE)输出每个学生学号及其相应选课数。//连接查询
Select sno,count(cno)from SC group by sno;
Select sno, count(sno)where grade>80 group by sno having count(sno)> 3 2 查询选课数目大于3的学生学号及课程数。查询有三门以上课程分数在80分以上的学生学号和课程数。查询每个学生选修的课程号。Select cno from SC;Select sno,cno from SC;查询每个学生选修的课程并且按学号降序排列。
Select sno,cno from SC Order by sno DESC;7 查询学号为‘003’的学生选修的课程号。
Select cno from SC where sno=’003’;8 查询学号为‘003’的学生选修的课程数。
Select count(cno)from SC where sno=’003’;查询每个学生及其选修的课程数。Select sno,count(cno)from SC group by sno;查询每门课程选课的人数。
Select cno,count(sno)from SC group by cno;11 查询选修的课程数不低于两门的学生学号和课程数。
Select sno,count(cno)from SC group by sno having count(cno)>=2;12 查询选修的学生数不低于20人的课程号及选修的学生数。
Select cno,count(sno)from SC group by cno having count(sno)>=20;查询选修了两门或两门以上课程的学生学号。
select sno from SC A , SC B where A.sno=B.sno and A.cno<>B.cno;Select sno,count(sno)from sc group by sno having count(sno)>=2
作业
有如下数据库:
学生表:
student(sno,sname,ssex,sage,sdept)课程表:
course(cno,cname,cpno,ccredit)学生选课表:sc(sno,cno,grade)1.查询所有学生的学号和姓名。2.查询CS系年龄20岁以下的学生学号和姓名。
3.按系别升序,同一个系按学号降序显示全体女生的信息。4.查询全部女生的人数。5.查询各个系女生的人数。
6.查询女生人数超过50人的系及女生人数。
1.查询全体学生的姓名、选修的课程名及分数。
2.查询CS系选修了课程名为‘MATH’的学生姓名和分数。3.查询CS系选修了课程名为‘MATH’的学生平均分数。4.查询CS系选修了课程名为‘MATH’的学生人数。5.查询选修了‘EN’课的最高分的学生姓名及分数。
6.查询选修了‘EN’课的全体学生的总分。
7.查询各系选修‘EN’课的学生这门课的最高分、平均分,选课人数
8.查询CS系和IS系全体学生的信息。
第二篇:数据库 sql习题及答案
/*
Question 1:Find the titles of all movies directed by Steven Spielberg.select title from movie where director='Steven Spielberg'
Question 2:Find all years that have a movie that received a rating of 4 or 5, and sort them in increasing order.select distinct year from movie,rating where movie.mid=rating.mid and stars in(4,5)order by year
Question 3:Find the titles of all movies that have no ratings
select title from movie where mID in
(select mid from Movie except
select mid from rating)
select title from movie except
select title from movie,rating where movie.mid=rating.mid
Question 4:Some reviewers didn't provide a date with their rating.Find the names of all reviewers who have ratings with a NULL value for the date.select name from reviewer,rating where reviewer.rid=rating.rid and ratingdate is null
Question 5:Write a query to return the ratings data in a more readable format: reviewer name, movie title, stars, and ratingDate.Also, sort the data, first by reviewer name, then by movie title, and lastly by number of stars.select name,title,stars,ratingdate from movie,rating,reviewer where movie.mid=rating.mid and reviewer.rid=rating.rid order by name,title,stars
Question 6:For all cases where the same reviewer rated the same movie twice and gave it a higher rating the second time, return the reviewer's name and the title of the movie.select name,title
from rating as F,Rating as S,Movie,Reviewer where F.rID=S.rID and F.mID=S.mID and F.stars and F.ratingDate select name,title from movie,reviewer,(select r1.rid,r1.mid from rating as r1,rating as r2 where r1.rid=r2.rid and r1.mid=r2.mid and r1.ratingdate>r2.ratingdate and r1.stars>r2.stars)as r where movie.mid=r.mid and reviewer.rid=r.rid Question 7:For each movie, find the highest number of stars that movie received as a rating.Return the movie title and number of stars.Sort by movie title.select title,MAX(stars)as max_star from rating,Movie where Rating.mID=Movie.mID group by title order by title select title,maxrating from movie,(select mid,max(stars)as maxrating from rating group by mid)as r where movie.mid=r.mid order by title Question 8:For each movie, return the title and the ‘rating spread(范围)', that is, the difference between highest and lowest ratings given to that movie.Sort by rating spread from highest to lowest, then by movie title.select title,MAX(stars)-MIN(stars)as rating_spread from rating,Movie where Rating.mID=Movie.mID group by title order by rating_spread desc,title select title,spread as “rating spread” from movie,(select mid,max(stars)-min(stars)as spread from rating group by mid)as r where movie.mid=r.mid order by spread desc,title Question 9:Find the difference between the average rating of movies released before 1980 and the average rating of movies released after 1980.(Make sure to calculate the average rating for each movie, then the average of those averages for movies before 1980 and movies after.Don't just calculate the overall average rating before and after 1980.) select F.avg_star-S.avg_star from,(select AVG(avg_star)as avg_star from(select Rating.mID,AVG(stars)as avg_star from Rating left join Movie on Rating.mID=Movie.mID where year>=1980 group by Rating.mID)as S(select AVG(avg_star)as avg_star from(select Rating.mID,AVG(stars)as avg_star from Rating left join Movie on Rating.mID=Movie.mID where year<1980 group by Rating.mID)as F)as F)as S select r1979.avgm-r1980.avgm from ,Question 10:Add the reviewer Roger Ebert to your database, with an rID of 209.insert into Reviewer values(209,'Roger Ebert') Question 11: Insert 5-star ratings by James Cameron for all movies in the database.Leave the review date as NULL.insert into Rating(rID,mID,stars)select rid,mID,5 as stras from movie,(select rid from Reviewer where name='James Cameron')as T insert into rating(rid,mid,stars)select rid,mid,5 from reviewer,movie where name='James Cameron' Question 12:For all movies that have an average rating of 4 stars or higher, add 25 to the release year.(Update the existing tuples;don't insert new tuples.) update Movie set year=year+25(select sum(avgrating)/count(*)as avgM from (select avg(stars)as avgrating from rating,movie where movie.mid=rating.mid and year>=1980 group by movie.mid)(select sum(avgrating)/count(*)as avgM from (select avg(stars)as avgrating from rating,movie where movie.mid=rating.mid and year<1980 group by movie.mid) as r) as r1979 as r) as r1980 where mID in (select mID from Rating group by mID having AVG(stars)>=4) */ 数据库原理之关系数据库SQL语言课后习题及答案 http://www.xiexiebang.comAME,TEACHER) 试用SQL的查询语句表达下列查询: (1)检索LIU老师所授课程的课程号和课程名。 SELECT C#,CNAME FROM C WHERE TEACHER=„LIU‟ (2)检索年龄大于23岁的男学生的学号和姓名。 SELECT S#,SNAME FROM S WHERE(AGE>23)AND(SEX=„M‟) (3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。 SELECT SNAME FROM S WHERE SEX=„F‟ AND S# IN (SELECT S# FROM SC WHERE C# IN (SELECT C# FROM C WHERE TEACHER=„LIU‟) NOTICE:有多种写法,比如联接查询写法: SELECT SNAME FROM S,SC,C WHERE SEX=„F‟ AND SC.S#=S.S# AND SC.C#=C.C# AND TEACHER='LIU' 但上一种写法更好一些。 (4)检索WANG同学不学的课程的课程号。 SELECT C# FROM C WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN (SELECT S# FROM S WHERE SNAME='WANG')) (5)检索至少选修两门课程的学生学号。 SELECT DISTINCT X.SNO FROM SC X,SC Y WHERE X.SNO=Y.SNO AND X.CNO<>Y.CNO Notice:对表SC进行自连接,X,Y是SC的两个别名。 (6)检索全部学生都选修的课程的课程号与课程名。 SELECT C#,CNAME FROM C WHERE NOT EXISTS (SELECT * FROM S WHERE S# NOT IN (SELECT * FROM SC WHERE SC.C#=C.C#)) 要从语义上分解:(1)选择课程的课程号与课程名,不存在不选这门课的同学。 其中,“不选这门课的同学”可以表示为: 或者 SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE S.S#=C.S# AND SC.C#=C.C#) SELECT * FROM S WHERE S# NOT IN (SELECT * FROM SC WHERE SC.C#=C.C#) (7)检索选修课程包含LIU老师所授课的学生学号。 SELECT DISTINCT S# FROM SC WHERE C# IN (SELECT C# FROM C WHERE TEACHER='LIU')) 3.3 设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达下列关系代数表达式: (1)πA(R) (2)σB='17'(R) (3)R×S (4))πA,F(σC=D(R×S)) (1)SELECT A FROM R (2)SELECT * FROM R WHERE B='17'(3)SELECT A,B,C,D,E,F FROM R,S (4)SELECT A,F FROM R,S WHERE R.C=S.D 3.4 3.4 设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式: (1)R∪S (2)R∩S (3)R-S (4)πA,B(R)πB,C(S) (1)SELECT A,B,C FROM R UNION SELECT A,B,C FROM S (2)SELECT A,B,C FROM R INTERSECT SELECT A,B,C FROM S (3)SELECT A,B,C FROM R WHERE NOT EXISTS (SELECT A,B,C FROM S WHERE R.A=S.A AND R.B=S.B AND R.C=S.C) (4)SELECT R.A,R.B,S.C FROM R,S WHERE R.B=S.B 3.5 试叙述SQL语言的关系代数特点和元组演算特点。 (P61-62) 3.6 试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询: (1)统计有学生选修的课程门数。 SELECT COUNT(DISTINCT C#)FROM SC (2)求选修C4课程的学生的平均年龄。 SELECT AVG(AGE) FROM S WHERE S# IN (SELECT S# FROM SC WHERE C#='C4')或者,SELECT AVG(AGE) FROM S,SC WHERE S.S#=SC.S# AND C#='004' (3)求LIU老师所授课程的每门课程的学生平均成绩。 SELECT CNAME,AVG(GRADE) FROM SC ,C WHERE SC.C#=C.C# AND TEACHER='LIU' GROUP BY C# (4)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 SELECT DISTINCT C#,COUNT(S#) FROM SC GROUP BY C# HAVING COUNT(S#)>10 ORDER BY 2 DESC, C# ASC (5)检索学号比WANG同学大,而年龄比他小的学生姓名。 SELECT X.SNAME FROM S AS X, S AS Y WHERE Y.SNAME='WANG' AND X.S#>Y.S# AND X.AGE (6)检索姓名以WANG打头的所有学生的姓名和年龄。 SELECT SNAME,AGE FROM S WHERE SNAME LIKE 'WANG%' (7)在SC中检索成绩为空值的学生学号和课程号。 SELECT S#,C# FROM SC WHERE GRADE IS NULL (8)求年龄大于女同学平均年龄的男学生姓名和年龄。 SELECT SNAME,AGE FROM S AS X WHERE X.SEX='男' AND X.AGE>(SELECT AVG(AGE)FROM S AS Y WHERE Y.SEX='女') (9)求年龄大于所有女同学年龄的男学生姓名和年龄。 SELECT SNAME,AGE FROM S AS X WHERE X.SEX='男' AND X.AGE>ALL(SELECT AGE FROM S AS Y WHERE Y.SEX='女') 3.7 试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作: (1)往基本表S中插入一个学生元组(„S9‟,„WU‟,18)。 INSERT INTO S(S#,SNAME,AGE)VALUES('59','WU',18) (2)在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT(S#,SANME,SEX)。 INSERT INTO STUDENT(S#,SNAME,SEX) SELECT S#,SNAME,SEX FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE GRADE<80 AND S.S#=SC.S#) (3)在基本表SC中删除尚无成绩的选课元组。 DELETE FROM SC WHERE GRADE IS NULL (4)把WANG同学的学习选课和成绩全部删去。 DELETE FROM SC WHERE S# IN (SELECT S# FROM S WHERE SNAME='WANG') (5)把选修MATHS课不及格的成绩全改为空值。 UPDATE SC SET GRADE=NULL WHERE GRADE<60 AND C# IN (SELECT C# FROM C WHERE CNAME='MATHS')(6)把低于总平均成绩的女同学成绩提高5%。 UPDATE SC SET GRADE=GRADE*1.05 WHERE GRADE<(SELECT AVG(GRADE)FROM SC)AND S# IN(SELECT S# FROM S WHERE SEX='F') (7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个UPDATE语句实现)。 UPDATE SC SET GRADE=GRADE*1.05 WHERE C#='C4' AND GRADE<=75 UPDATE SC SET GRADE=GRADE*1.04 WHERE C#='C4' AND GRADE>75 3.8 在第1章例1.4中提到“仓库管理”关系模型有五个关系模式: 零件 PART(P#,PNAME,COLOR,WEIGHT) 项目 PROJECT(J#,JNAME,DATE) 供应商 SUPPLIER(S#,SNAME,SADDR) 供应 P_P(J#,P#,TOTOAL) 采购 P_S(P#,S#,QUANTITY) (1)试用SQL DDL语句定义上述五个基本表,并说明主键和外键。 CREATE TABLE PART (P# CHAR(4)NOT NULL,PNAME CHAR(12)NOT NULL,COLOR CHAR(10),WEIGHT REAL,PRIMARY KEY(P#)) CREATE TABLE PROJECT (J# CHAR(4)NOT NULL,JNAME CHAR(12)NOT NULL,DATE DATE,PRIMARY KEY(J#)) CREATE TABLE SUPLIER (S# CHAR(4)NOT NULL,SNAME CHAR(12),SADDR VARCHAR(20),PRIMARY KEY(S#)) CREATE TABLE P_P (J# CHAR(4),P# CHAR(4),TOTAL INTEGER,PRIMARY KEY(J#,P#),FOREIGN KEY(J#)REFERENCE PROJECT(J#),FOREIGN KEY(P#)REFERENCE PART(P#)) CREATE TABLE P_S (P# CHAR(4),S# CHAR(4),QUANTITY INTEGER,PRIMARY KEY(P#,S#),FOREIGN KEY(P#)REFERENCE PART(P#),FOREIGN KEY(S#)REFERENCE SUPLIER(S#)) (2)试将PROGECT、P_P、PART三个基本表的自然联接定义为一个视图VIEW1,PART、P_S、SUPPLIER 三个基本表的自然联接定义为一个视图VIEW2。 CREATE VIEW VIEW1(J#,JNAME,DATE,P#,PNAME,COLOR,WEIGHT,TOTAL) AS SELECT PROJECT.J#,JNAME,DATE,PART.P#,PNAME,COLOR,WEIGHT,TOTAL FROM PROJECT,PART,P_P WHERE PART.P#=P_P.P# AND P_P.J#=PROJECT.J # CREATE VIEW VIEW2(P#,PNAME,COLOR,WEIGHT,S#,SNAME,SADDR,QUANTITY) AS SELECT PART.P#,PNAME,COLOR,WEIGHT,SUPPLIER.S#,SNAME,SADDR,QUANTITY FROM PART,P_S,SUPPLIER WHERE PART.P#=P_S.P# AND P_S.S#=SUPPLIER.S# (3)试在上述两个视图的基础上进行数据查询: 1)检索上海的供应商所供应的零件的编号和名字。 SELECT P#,PNAME FROM VIEW2 WHERE SADDR='SHANGHAI' 2)检索项目J4所用零件的供应商编号和名字。 SELECT S#,SNAME FROM VIEW2 WHERE P# IN(SELECT P# FROM VIEW1 WHERE J#='J4') 3.9 对于教学数据库中基本表SC,已建立下列视图: CREATE VIEW S_GRADE(S#,C_NUM,AVG_GRADE) AS SELECT S#,COUNT(C#),AVG(GRADE) FROM SC GROUP BY S# 试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操作。 (1)SELECT * FROM S_GRADE 允许 SELECT S#,COUNT(C#),AVG(GRADE)FROM SC GROUP BY S# (2)SELECT S#,C_NUM FROM S_GRADE WHERE AVG_GRADE>80 允许 SELECT S#,COUNT(C#)FROM SC WHERE AVG(GRADE)>80 (3)SELECT S#,AVG_GRADE FROM S_GRADE WHERE C_NUM>(SELECT C_NUM FROM S_GRADE WHERE S#=„S4‟) 允许 SELECT S#,AVG(GRADE) FROM SC AS X WHERE COUNT(X.C#)>(SELECT COUNT(Y.C#)FROM SC AS Y WHERE Y.S#='S4') GROUP BY S# (4)UPDATE S_GRADE SET C_NUM=C_NUM+1 WHERE S#=„S4‟ 不允许 (5)DELETE FROM S_GRADE WHERE C_NUM> 4不允许 3.10 预处理方式对于嵌入式SQL的实现有什么重要意义? 预处理方式是先用预处理程序对源程序进行扫描,识别出SQL语句,并处理成宿主语言的函数调用形式; 然后再用宿主语言的编译程序把源程序编译成目标程序。这样,不用扩充宿主语言的编译程序,就能处理SQL语句。 3.11 在宿主语言的程序中使用SQL语句有哪些规定? 在宿主语言的程序中使用SLQ语句有以下规定: (1)在程序中要区分SQL语句与宿主语言语句 (2)允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量),但有两条规定: 1)引用时,这些变量前必须加“:”作为前缀标识,以示与数据库中变量有区别。 2)这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明。 (3)SQL的集合处理方式与宿主语言单记录处理方式之间要协调。需要采用游标机制,把集合操作转换成单记录处理方式。 3.12 SQL的集合处理方式与宿主语言单记录处理方式之间如何协调? 由于SQL语句处理的是记录集合,而宿主语言语句一次只能处理一个记录,因此需要用游标(cousor)机制,把集合操作转换成单记录处理方式。 2.13 嵌入式SQL语句何时不必涉及到游标?何时必须涉及到游标? (1)INSERT、DELETE、UPDATE语句,查询结果肯定是单元组时的SELECT语句,都可直接嵌入在主程序中使用,不必涉及到游标。 (2)当SELECT语句查询结果是多个元组时,此时宿主语言程序无法使用,一定要用游标机制把多个元组一次一个地传送给宿主语言处理。 常用sql server 语句 A 设有教学数据库的三个基本表:学生表Student(Sno,Sname,Sage,Ssex, Sdept), 课程表Course(Cno,Cname,Teacher), 选课表 SC(Sno,Cno,Grade), 用SQL语言实现下列功能: 1.建立学生表Student,其中姓名属性值是唯一的,性别属性不能为空。 2.查询所有年龄在22岁以上的女学生姓名及其年龄。 3.查询选修了C3号课程的学生的学号及其成绩,查询结果按分数的降序排列。 4.查询学习1号课程的学生最高分数、最低分及平均成绩。 5.查询与’张军’在同一个系学习的学生信息。 6.将化学工程系全体学生的成绩提高5%。 7.查询选修成绩大于60分的学生的学号及姓名。 8.删除选修高等数学所有学生的成绩记录。 9.求年龄大于男同学平均年龄的女学生姓名和年龄。 10.统计每门课程的选修人数大于20的课程,并输出课程号和选修人数。 11.检索姓刘的所有学生的姓名和年龄。 12.统计每个学生选修课程的情况,并输出学号和选修课程数目。 13.把选修MATHS课不及格的成绩全改为空值。 14.删除王力选课记录。 15.在sc中,把英语课成绩提高10% A 1.建立学生表Student,其中姓名属性值是唯一的,性别属性不能为空。CREATETABLE Student(Sno CHAR(5)Primary key, Sname CHAR(20)UNIQUE,Ssex CHAR(2)NOT NULL, Sage INT, Sdept CHAR(15)); 2.查询所有年龄在22岁以上的女学生姓名及其年龄。SELECT Sname, Sage from student WHERE Sage >20 and Ssex=’F’ 3.查询选修了C3号课程的学生的学号及其成绩,查询结果按分数的降序排列。SELECT Sno, Grade FROM SC WHERE Cno='C3' ORDER BY Grade DESC 4.查询学习1号课程的学生最高分数、最低分、平均成绩。SELECT MAX(Grade), MIN(Grade),AVG(Grade)FROM SC WHERE Cno='1' 5.查询与“张军”在同一个系学习的学生信息。SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN(SELECT Sdept FROM Student WHERE Sname='张大山') 6.将化学工程系全体学生的成绩提高5%。UPDATE SC SET Grade= Grade*1.1 WHERE Sno in(SELECT Sno FROM Student WHERE Sdept = '化学工程系') 7.查询选修成绩大于60分的学生的学号及姓名。SELECT Sno, Sname from student,sc WHERE student.sno=sc.sno and grade>60 8.删除选修高等数学所有学生的成绩记录。 DELETE FROM SC WHERE Cno in(SELECT Cno FROM Course WHERE Cname = '高等数学') 9.求年龄大于男同学平均年龄的女学生姓名和年龄。SELECT Sname , Sage from Student Where Ssex=’女’ and Sage>(Select Avg(Sage)from Student Where Ssex=’男’) 10.统计每门课程的选修人数大于20的课程,并输出课程号和选修人数。SELECT Cno,Count(Sno)from SC Group by Cno Having Count(*)>15 11.检索姓刘的所有学生的姓名和年龄。 SELECT Sname,Sage FROM S WHERE Sname LIKE '刘%' 12.统计每个学生选修课程的情况,并输出学号和选修课程数目。SELECT Sno,Count(Cno)from SC Group by Sno 13.把选修MATHS课不及格的成绩全改为空值。 update sc set grade=null where grade<60 and cno in(select cno from c where cname='maths')14.删除王力选课记录。 DELETE FROM SC WHERE sno in(SELETE sno FROM Student WHERE sname=‘王力’); 15.在sc中,把英语课成绩提高10% UPDATE SC SET Grade=1.1*Grade WHERE cno in(SELETE cno FROM course WHERE cname = ‘英语’); 常用sql server 语句 B 设有教学数据库的三个基本表:学生表Student(Sno,Sname,Sage,Ssex, Sdept), 课程表Course(Cno,Cname,Teacher), 选课表 SC(Sno,Cno,Grade), 用SQL语言实现下列功能: 1.建立课程表Course,其中课程名属性值是唯一的,教师属性不能为空。 2.查询计算机科学系全体学生的名单。 3.查询选修了1号课程的学生的学号及其成绩,查询结果按分数的升序排列。 4.查询学习2号课程的学生最高分数、最低分数、平均成绩。 5.查询选修成绩大于85分的学生的学号及姓名。 6.将选修王军老师所授课程所有学生的成绩提高5%。 7.检索学号比王小军同学小的学生姓名。 8.删除外语系所有学生的成绩记录。 9.求年龄小于女同学平均年龄的男学生姓名和年龄。 10.统计每门课程的选修人数大于50的课程,并输出课程号和选修人数。 11.在sc中,把高等数学课成绩提高10% 12.统计每个学生选修课程的情况,并输出学号和选修课程数目。 13.把选修大学物理课不及格的成绩全改为空值。 14.删除张红选课记录。 15.检索姓王的所有学生的姓名、年龄和选课成绩。 1.建立课程表Course,其中课程名属性值是唯一的,教师属性不能为空。CREATETABLE Course(Cno CHAR(5)Primary key, Cname CHAR(20)UNIQUE, Teacher CHAR(2)NOT NULL); 2.查询计算机科学系全体学生的名单。SELECT Sname from student WHERE Sdept=’计算机科学系’ 3.查询选修了1号课程的学生的学号及其成绩,查询结果按分数的升序排列。SELECT Sno, Grade FROM SC WHERE Cno='1' ORDER BY Grade 4.查询学习2号课程的学生最低分数、平均成绩。SELECT MIN(Grade), AVG(Grade)FROM SC WHERE Cno='2' 5.查询选修成绩大于85分的学生的学号及姓名。SELECT Sno, Sname from student,sc WHERE student.sno=sc.sno and grade>80 6.将选修王军老师所授课程所有学生的成绩提高5% UPDATE SC SET Grade= Grade*1.05 WHERE Cno in(SELECT Cno FROM Course WHERE Cname = '王军') 7.检索学号比王小军同学小的学生姓名 SELECT Sname from Student Where Sno<(Select sno from Student where Sname=’王小军’) 8.删除外语系所有学生的成绩记录。 DELETE FROM SC WHERE Sno in(SELECT Sno FROM Student WHERE Sdept = '外语系') 9.求年龄小于女同学平均年龄的男学生姓名和年龄。 SELECT Sname , Sage from Student Where Ssex=’男’ and Sage<(Select Avg(Sage)from Student Where Ssex=’女’) 10.统计每门课程的选修人数大于50的课程,并输出课程号和选修人数。SELECT Cno,Count(Sno)from SC Group by Cno Having Count(*)>50 11.在sc中,把高等数学课成绩提高10% UPDATE SC SET Grade=1.1*Grade WHERE cno in(SELETE cno FROM course WHERE cname = ‘高等数学’); 11.检索姓刘的所有学生的姓名和年龄。 SELECT Sname,Sage FROM S WHERE Sname LIKE '刘%' 12.统计每个学生选修课程的情况,并输出学号和选修课程数目。SELECT Sno,Count(Cno)from SC Group by Sno 13.把选修大学物理课不及格的成绩全改为空值。 update sc set grade=null where grade<60 and cno in(select cno from c where cname='大学物理课')14.删除张红选课记录。 DELETE FROM SC WHERE sno in(SELETE sno FROM Student WHERE sname=张红’); 15.检索姓王的所有学生的姓名、年龄和选课成绩。 SELECT Sname,Sage,grade FROM Student, SC WHERE Sname LIKE '刘%' and Student.sno=sc.sno 1、题目:下面请假条有五处错误,请参照各行的“修改提示”用修改符号在原文上修改。 请假条 张老师。① 我昨天下午背着书包回家后②,晚上突然发高烧③,今天不能到校上课。特请假一天,请批准。 此至④ 敬礼 学生:范志伟 02年6月17日⑤ 2、题目:下边是张贴在校内的“招领启事”,有六处错误。请认真阅读并按照文的要求答题。 招领启事 昨天中午,本人在从教室到校礼堂的路上拾到一串钥匙。这串钥匙有五个是铝制的,两个是铜制的。拴钥匙的链上还挂着一只红色的塑料小熊猫。 望失主速来认领。 章小春填空题: (1)本启事的书写格式有两处错误:①是________; ②是________。(2)启事的内容中有关物件的_________、__________不应交待得这样具体明确。 (3)启事的内容中有关联认领的______、______等还没有交待清楚。 3、题目:下面是一则“征稿启事”,其中有六处错误,按要求分别指出。 征稿启事 因为帮助同学们更好地学习语文,本部准备出版《语文学习园地》专刊。欢迎同学们踊跃投稿。稿件内容按本部要求写。文体不限,每篇最好不超过1000字。希望在本月24日以前投入本校征稿箱。 此致 敬礼! 一九九四年五月二日前进中学《语文学习园地》编辑部 (1)书写格式的四处错误是: ① ② ③ ④ (2)关联词运用不当的是第_____句 (3)内容交待不清的是第______句 4.习作: 班级体育训练,老师请你去体育室领三个铅球,十根跳绳,体育室保管员要你写个领条,你是这样写的: 5.习作:不识字的爸爸向李嘉诚借了8960元,答应一月后还他。请你给爸爸写个借条。第三篇:SQL语言习题及答案
第四篇:SQL习题练习_1_zxx(写写帮推荐)
第五篇:习题1