当前位置:首页 » 编程语言 » 用sql语句写查询的题库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

用sql语句写查询的题库

发布时间: 2023-02-27 16:22:14

sql 数据库习题谢谢

1. select '类别为:'+tushuleibie 图书分类 from T_Book
2. select shuming 书名,zuozhe 作者,jiage*0.7 价格 from T_Book where chubanshe ='机械工业出版社'
3. select shuming 书名,zuozhe 作者,jiage 价格, chubanshe 出版社 from T_Book where jiage between 30 and 60
4. select top 3 shuming 书名,zuozhe 作者,chubanshe 出版社, jiage 价格 from T_Book order by jiage desc

6.select chubanshe 出版社,AVG(jaige) 平均价,MAX(jiage) 最高价 ,MIN(jaige) 最低价 from T_Book group by chubanshe order by SUM(jiage) desc

10.select top 1 chubanshe 出版社, count(*) 出版图书个数 from T_Book group by chubanshe order by COUNT(*) desc
book表的做好了 reader的自己做吧 字段名我用拼音做代替的 你自己替换成你表中的字段

Ⅱ sql语句相关测试

sql语句相关测试

篇一:SQL语句测试

1、(10分)要求:

选择受理时间在2008-5-1 到 2008-6-1之间的所有申请人姓氏为“刘”的数据,并把“新受理编号”列表示成当前机器时间的年月和原受理编号年月后的数值组合

格式如下:

受理编号,新受理编号,受理时间, 申请人

200801112 201008112 2008-01-13刘XX

需要的表

I_Optinst 业务实例表

REGDATE(受理日期)

Regnum(受理编号)

Proposer(申请人)

解答:select Regnum as 受理编号, as 新受理编号,REGDATE as 受理时间,Proposer as申请人 from Optinst 2、(15分)要求:

前提:只统计业务小类“存量房买卖”

①按照月份分12月列出2008年每个月份的月份对应月份的交易总面积

②按照月份分12月列出2008年每个月份的月份对应月份的交易均价(申报价格/建筑面积)

格式

年度月份 交易总面积 年度月份交易均价(元/平方米)

2008-01 23232 2008-01 2323

2008-02 23232008-02 232

2008-03 232323 2008-03 7656

2008-04 232323 2008-03 565

2008-05 232323 2008-03 5656

2008-06 232323 2008-03 565

2008-07 232323 2008-03 67

2008-08 232323 2008-03 676

2008-09 232323 2008-03 6767

2008-10 232323 2008-03 8686

2008-11 232323 2008-03 867

2008-12 232323 2008-03 454

需要的表:

Fc_room 房间表

BAREA(建筑面积)

I_Optinst业务实例表

regdate(受理时间)

fc_owner 产权表

COSTVAL(申报价格)

EVLVAL(评估价格)

fc_owoom 房间明细表

1.select regdate as年度月份,BAREA as 交易总面积 from Fc_room,Optinst where

3、(20分)要求:

①:按照时间统计收费明细 统计格式如下

受理编号缴费人收费日期 收费名称收费金额核费人收费人

②:按照时间汇总(2008年度)统计收费项目分类 统计格式如下

收费名称 总金额

需要的表:

I_OptInst(业务实例表)

Regnum 受理编号

Proposer 申请人

I_Charge(收费实例表)

HEFEIMAN 核费人

PAYEE 收款人

CDATE 收费日期

I_ChrDtl(收费实例明细表

CNAME 收费名称

MONEY 收费金额

4、(15分)要求:用途是住宅并且建筑面积<=140>140 定义为 “非普通住宅”

用途是商业并且建筑面积>140 定义为 “商业A级”

其他情况定义为“非住宅”

根据用途和面积列表出所有数据

格式

受理编号, 用途

200406000386 普通住宅

200406004631 非普通住宅

200406004633 普通住宅

200406004638 普通住宅

200406004641 非住宅

200501000004 普通住宅

200406004568 非住宅

200406005677 商业A级

表:

fc_room

barea 建筑面积

BUse 用途

i_optinst

regnum 受理编号

5、(30分)工作量统计

① 选择出以下格式的数据;并创建视图名称为view_AAAA

业务小类业务实例 交易价格建筑面积 登记时间

1 存量房买卖 14100 19400.0029.98 2005-11-10 11:32:50 2 新建商品房 15041 229530.00 124.07 2005-11-21 08:59:36 3 新建商品房 15043 177363.00 101.35 2005-11-21 09:15:59 4 新建商品房 13046 71130.0023.71 2005-11-02 10:15:37 5 新建商品房 11280 148563.00 87.39 2005-10-11 09:50:48 6 新建商品房 11353 267369.00 116.04 2005-10-11 15:34:53 7 房改售房 2689 35.22 2004-06-17 08:43:00 8 产权人名称变更 11701 724.18 2005-10-17 10:05:20 9 新建商品房 7206 158257.00 88.69 2005-09-16 14:50:57 10 存量房买卖 (转 载于:wWw.cnboThwiN.cOM 博 威范文 网: sql语句测试 )10100 103.07 2005-08-31 20:27:06 11 存量房买卖 12980 51500.0046.66 2005-11-01 14:41:32 12 新建商品房 13000 136782.00 80.46 2005-11-01 15:37:05 13 新建商品房 16946 300844.00 146.33 2005-12-15 14:15:07 14 存量房买卖 10091 509.18 2005-08-31 19:19:25 ② 使用视图 view_AAAA 当做表 选择出如下样式数据

业务小类 件数合计金额 合计面积

1 用途变更 1151.3

2 转移登记 184.03

3 新建商品房 31 263243643197.34

4 房改售房 8252.43

5 产权人名称变更 3 778.6

6 单位产新建 311697.49

7 赠与 1 28.48

8 存量房买卖 24 4379004134.67

9 判决仲裁 2 439.41

10 继承遗赠 1 49.17

11 换证 2 228.88

12 新建房屋 17 928.91

③ 用水晶报表关联视图 view_AAAA 设计出类似于②的数据格式 需要的表

FC_Owner

EvlVal交易价格

I_OptInst,

SOName 业务小类

fc_owoom,

BArea 建筑面积

FC_Room

regdate 受理日期

篇二:sql查询语句学习测试答案

第一部分SQL查询语句的学习

单表查询 1、--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、客户ID和雇员ID等字段的值

use eee

SELECT 订购日期,订单ID,客户ID,

雇员ID

FROM 订单

WHERE 订购日期BETWEEN '1996-7-1 00:00:00' AND '1996-7-15 23:59:59'

2、--查询“Northwind”示例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。条件是“地区等于华北”并且“联系人头衔等于销售代表”。

use eee

SELECT 供应商ID,公司名称,地区,城市,电话

FROM 供应商

WHERE 地区='华北' AND 联系人职务='销售代表'

3、--查询“Northwind”示例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。其中的一些供应商位于华东或华南地区,另外一些供应商所在的城市是天津 use eee

SELECT 供应商ID,公司名称,地区,城市,电话

FROM 供应商

WHERE 地区IN('华东', '华南') OR 城市='天津'

4、--查询“Northwind”示例数据库中位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值

use eee

SELECT 供应商ID,公司名称,地区,城市,电话

FROM 供应商

WHERE 地区IN('华东', '华南')

多表查询 5、--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓氏和名字等字段的值,并将查询结果按雇员的“姓氏”和“名字”字段的升序排列,“姓氏”和“名字”值相同的记录按“订单 ID”的降序排列

use eee

SELECT 订购日期,订单ID,公司名称,姓氏,名字

FROM 订单,雇员,客户

WHERE 订购日期BETWEEN '1996-7-1 00:00:00' AND '1996-7-15 23:59:59'

AND 订单.雇员ID = 雇员.雇员ID

AND 订单.客户ID = 客户.客户ID

ORDER BY 姓氏,名字ASC,订单ID DESC

6、--查询“10248”和“10254”号订单的订单ID、运货商的公司名称、订单上所订购的产品的名称

use eee

SELECT 订单.订单ID,公司名称,产品名称

FROM 订单,运货商,产品,订单明细

WHERE 订单.订单ID IN('10248','10254')

AND 订单.订单ID = 订单明细.订单ID

AND 订单明细.产品ID = 产品.产品ID

AND

订单.运货商= 运货商.运货商ID

7、--查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称、数量、单价和折扣

use eee

SELECT 订单.订单ID,产品名称,数量,订单明细.单价,折扣

FROM 订单,产品,订单明细

WHERE 订单.订单ID IN('10248','10254')

AND 订单.订单ID = 订单明细.订单ID

AND 订单明细.产品ID = 产品.产品ID

篇三: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表的主码:cno 3 Sc表的主码:sno,cno

1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句

2

3 删除student表中的元组

4在数据库school中删除关系student

5在student表添加属性sbirthdate 类型 datetime

Delete

1 删除所有 JSJ 系的男生 from Student where Sdept=’JSJ’ and Ssex=’男’; 2 删除“数据库原理”的课的选课纪录

from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);

Update

1 修改 0001 学生的系科为: JSJ

2 把陈小明的年龄加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 表中的学生共分布在那几个系中。(distinct) 7查询0001号学生1001,1002课程的成绩。

二 统计

1查询姓名中有“明”字的学生人数。 2计算‘JSJ’系的平均年龄及最大年龄。 3查询学生中姓名为张明、赵英的人数

4计算每一门课的总分、平均分,最高分、最低分,按平均分由高到低排列 5 计算 1001,1002 课程的'平均分。

6 查询平均分大于80分的学生学号及平均分 7 统计选修课程超过 2 门的学生学号

8 统计有10位成绩大于85分以上的课程号。 9 统计平均分不及格的学生学号

10 统计有大于两门课不及格的学生学号

三 连接

1查询 JSJ 系的学生选修的课程号

2查询选修1002 课程的学生的学生姓名 (不用嵌套及嵌套2种方法) 3查询数据库原理不及格的学生学号及成绩

4查询选修“数据库原理”课且成绩 80 以上的学生姓名(不用嵌套及嵌套2种方法) 5查询平均分不及格的学生的学号,姓名,平均分。 6查询女学生平均分高于75分的学生姓名。

7查询男学生学号、姓名、课程号、成绩。(一门课程也没有选修的男学生也要列出,不能

四 嵌套、相关及其他

1 查询平均分不及格的学生人数

2 查询没有选修1002 课程的学生的学生姓名

3 查询平均分最高的学生学号及平均分 (2种方法 TOP , any , all) *4 查询没有选修1001,1002课程的学生姓名。

5 查询1002课程第一名的学生学号(2种方法) 6 查询平均分前三名的学生学号

7 查询 JSJ 系的学生与年龄不大于19岁的学生的差集

8 查询1001号课程大于90分的学生学号、姓名及平均分大于85分的学生学号、姓名 9 查询每门课程成绩都高于该门课程平均分的学生学号 10 查询大于本系科平均年龄的学生姓名

答案

参考答案

1 create table student (sno6), sname var8), ssex2), sagesmallint, sdept var15), primary key(sno));

create table sc

(sno6), cno 4),

grade decimal(12,2), primary key(sno,cno));

into student

values( ’4001’,’赵茵’,’男’,20,’SX’)

from student

student

alter table student add sbirthdate datetime

1 select sno, sname, sage from student

where ssex=’女’ and sage between 19 and 21order by sage desc; 2 select sno, ssexfrom student

where sname like ’_明% ’ ; 3 select sno, cnofrom sc

where grade is null and cno=’1001’ ; 4 select sno, sname from student

where sdept in (’JSJ’,’SX’,’WL’) and sage>25 group by sdept;

select sno, cno, grade/10.0+1 as levelfrom sc ;

select distinct sdept from student ; select grade from sc

where sno=’0001’ and (cno=’1001’ or cno=’1002’) ;

select count(*) from student where sname like ’%明% ’ ; select avg(sage),max(sage) from student where sdept=’JSJ’ ; select cno,sum(grade),avg(grade),max(grade),min(grade) from sc group by cno

order by avg(grade) desc ;

select cno, avg(grade) from sc where cno in(‘1001’,’1002’) group by cno ;

select sc.sno ,avg(grade) from scgroup by sc.sno

having avg(grade)>80 ;

select sno from sc group by sno having count(*)>2 ;

select cno from sc where grade>85 group by cno having count(*)=10 ; select sno from sc group by sno having avg(grade)<60 ;

select sno from sc where grade<60 group="" by="" sno="" having="">2 ;

select cno from student,sc where student.sno=sc.sno and sdept=’JSJ’ ; a:select sname from student,sc where student.sno=sc.sno and cno=’1002’

b:select sname from student where sno in (select sno from sc where cno=’1002’)

select sno,grade from sc,course

where sc.cno=course.cno and cname=’数据库原理’ and grade<60 a:select sname from student ,sc,course

where student.sno=sc.sno and sc.cno=course.cno and grade>80 and cname=’ 数据库原理’ b:select sname from student where sno in (select sno from sc where grade>80 and cno in (select cno from course where cname=’ 数据库原理’)) select sno,sname,avg(grade) from sc,studentwhere student.sno=sc.snogroup by student.sno having avg(grade)<60

a:select sname from student where ssex=’女’ and sno in(select sno from sc group by sno having avg(grade)>75)

b:select sname from sc,student where student.sno=sc.sno and ssex=’女’group by student.sno having avg(grade)>75

select student.sno,sname,cno,grade from student left join sc on student.sno=sc.sno and ssex=’男’

select count(*) from student where sno in( select sno from sc group by sno havingavg(grade)<60)

select sname from student where sno not in(select sno from sc where cno=’1002’)

student

0001 aaX 0002 bb

0003 ccX Sc

0001 1001 0001 1002 0002 1001 0003 1002

Select sname from student where not exists(select* from sc where cno=’1002’ and sc.sno=student.sno)

a:select top 1 sno,avg(grade) from sc group by sno order by avg(grade) desc b:select sno, avg(grade) from sc group by sno

having avg(grade)=(select top 1 avg(grade) from scgroup by sno order by avg(grade) desc) c:select sno, avg(grade) from sc group by sno

having avg(grade)>=all ( select avg(grade) from sc group by sno)

select sname from student where not exists(

select * from course where cno in(‘1001’,’1002’) and

not exists(select * from sc where sno =student.sno and cno=course.cno) ) a:select top 1 sno from sc cno=’1002’ order by grade desc b:select sno from sc where cno=’1002’ and grade >=all (

;

Ⅲ 求解:用SQL语句书写下列数据库商品查询命令(每道题5分)

1. 查询所有商品的商品名、单价、数量;
Select商品名,单价,数量
From 商品 ----------、 改为, 号即可
2. 查询北京的仓库信息;
1种方法Select * from 仓库 where 仓库名=’北京’
2种方法Select仓库号,仓库名,地址,面积
From 仓库
Where 仓库名=’北京’
(哪个对) -------------都对
3. 查询面积不低于100的仓库号及地址;
Select仓库号,地址
from 仓库
where面积>=100 ------------ok
4. 检索进货超过60天的商品情况;
-----------这个不对得改
select * from 商品 where datediff(day,进货日期,getdate())>=60
5. 核算所有商品的总价,并填入总价字段;
-----select sum(总价) as 总价 from 商品
6. 按总价降序查询商品名、单价、数量和总价;
Select 商品名,单价,数量,总价 from 商品 order by 总价DESC
---------0k
7. 查询北京仓库中的商品信息;
--这句也不对
select * from 商品 where 仓库号=(select 仓库号 from 仓库 where 仓库名=‘北京’)

8. 删除2006年1月1日之前进货的商品记录;
---------这句也不对
Delete from 商品 where 进货日期<’2006-1-1’

9. 查询电视机的商品信息并将查询结果存入表TV中;
select * into TV from 商品 where 商品名='电视机'
10. 查询面积最大的仓库名及其中存放商品的名称和进货日期。
select 商品名称,进货日期,仓库名 from 商品 left join 仓库 on 商品.仓库号=仓库.仓库号 where 仓库号=(select top 1 仓库号 from 仓库 order by max(仓库面积)desc)

--------------注意 我期中的 括号和逗号 有的是中文 会报错

Ⅳ 数据库,SQL查询题目

--基础题
--1.查询读者最喜爱的3种图书分类号,即借阅表中出现最多的3类图书分类号
SELECT TOP 3 [分类号] FROM [图书] JOIN [借阅] ON [图书].[图书编号]=[借阅].[图书编号]
GROUP BY [分类号] ORDER BY COUNT(*) DESC

--附加题
--1.查询小于20岁的读者最喜欢的3类图书
SELECT TOP 3 [书名] FROM [读者] JOIN [借阅] ON [读者].[借书证号]=[借阅].[借书证号]
JOIN [图书] ON [图书].[图书编号]=[借阅].[图书编号]
WHERE [年龄]<20 GROUP BY [书名] ORDER BY COUNT(*) DESC

--2.查询至少借阅了 宁静 所借图书(书名相同)的人的姓名
SELECT [姓名] FROM [读者] WHERE [姓名]<>'宁静' AND [借书证号] IN(SELECT [借书证号] FROM [借阅]
WHERE [图书编号] IN(SELECT [图书编号] FROM [读者] JOIN [借阅] ON [读者].[借书证号]=[借阅].[借书证号] WHERE [姓名]='宁静'))

--3.查询借阅了多于3本书且每本书价均高于60的读者的借书证号
SELECT [借书证号]
FROM [借阅] JOIN [图书] ON [图书].[图书编号]=[借阅].[图书编号]
WHERE [单价]>60 GROUP BY [借书证号] HAVING COUNT(*)>3
GO

--4.假定读者表中所有人姓名均不多于4个汉字,请建立一个查询语句,要求根据名字中任意1个或两个或3个或4个汉字,即可找到该读者的详细信息(即完全模糊查询)
CREATE PROCEDURE CX
@XM VARCHAR(8) AS
IF LEN(@XM)=1 SELECT * FROM [读者] WHERE @XM LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=2 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=3 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=4 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,3,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
GO

Ⅳ 用数据库SQL语句编写下列查询

1.三表链接:select p.品名,p.价格 from 商品 as p,顾客 as c,销售 as s where p.编号=s.商品编号 and s.顾客卡号=c.卡号 c.积分>1002.子查询:select 售价 from 商品 where 售价>(select 售价 from 商品表 where 品名='伊利乳品')3。内连接:select p.名称,s.电话 from 商品表 as p ,厂商 as s where p.厂商编号=s.编号 and p.库存<100

Ⅵ 关于数据库SQL的一些简单题

1.select 班级名称,班级代码 from 班级 where 系部代码='02' or 系部代码='03';
2.在'学生'表中查询姓'李'学员的学号,姓名,年龄;
3.在'读者表' 表中查询名称中含有'红'的所有内容;
5.select 姓名,年龄 from 教师 where 姓名 like '?梅%';
4.在'图书表'表中查询图书编号为'100111'的所有内容;
6.在'读者表'表中查询'系部名称'为'自动化'的读者的最小年龄;
7.在'用户表'表中查询姓名,年龄字段,并按年龄,姓名升序排列;
8.select * from 学生 where 姓名 like '张%' or 姓名 like '罗%' or 姓名 like '刘%' order by 姓名
9.在'读者表'表中查询年龄大于60或小于1810的读者姓名;
10.将编号为'115',姓名为'王梅',性别为'女'的记录插入'读者表'表;
11.select 姓名 as name,出生日期 as 'Birthday' from 学生 where 性别='女'.

排版没排好,看起来有点费力;顺序有点乱,不过我都按照你的顺序写了.

Ⅶ 请求解题 要求用SQL语句完成下列题目

按图中问题和需求,以下会使用mysql环境的sql进行解答。

  • 第一题: 考察主键和外键的创建表语句,以及基本的创建语句格式。这里提供两种,其余可以查阅相关资料。

mysql 插入数据

Ⅷ SQL 查询语句期中考试题2

--1.分别查询学生表和学生修课表中的全部数据。
SELECT * FROM student--查询学生表
SELECT * FROM course--查询课程表

--2.查询成绩在70到80分之间的学生的学号、课程号和成绩。
SELECT Sno 学号,Cno 课程号,Grade 成绩
FROM SC
WHERE Grade BETWEEN 70 AND 80

--3.查询C01号课程成绩最高的分数
SELECT TOP 1 Grade
FROM SC
WHERE Cno='C01'
ORDER BY Grade DESC--降序DESC,升序ASC

--4.查询学生都选修了哪些课程,要求列出课程号。
SELECT Cname AS 学生选修的课程,Cno AS 课程号
FROM course
WHERE Cno IN(SELECT DISTINCT Cno FROM SC)--DISTINCT用来去除重复

--5.查询Northwind数据库中orders表的OrderID、CustomerID和OrderDate,
--并将最新的定购日期(OrderDate)列在前边。
USE Northwind
GO
SELECT OrderID,CustomerID,OrderDate
FROM orders
ORDER BY OrderDate DESC--降序DESC,升序ASC

--6.查询Northwind数据库中orders表的ShipCountry列以B,C,D,F --//ShipCountry BCDF
--开始且第三个字符为"a"的OrderID、CustomerID和ShipCountry的信息。//OrderID、CustomerID第三个字符为"a"
USE Northwind
GO
SELECT OrderID,CustomerID,ShipCountry FROM orders
WHERE ShipCountry LIKE '[BCDF]_a%'--_下划线表示任意一个字符,%表示一个或多个字符

--7.查询Northwind数据库中orders表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字
--母是"a"的OrderID、CustomerID和ShipCountry的信息。
USE Northwind
GO
SELECT OrderID,CustomerID,ShipCountry
FROM orders
WHERE ShipCountry LIKE '[^ABCDEF]%a'

--8.查询修了C02号课程的所有学生的平均成绩、最高成绩和最低成绩。
SELECT AVG(Grade) 平均成绩,MAX(Grade) 最高成绩,MIN(Grade) 最低成绩
FROM SC
WHERE Cno='C02'

--9.统计每个系的学生人数。
SELECT Sdept 系别,COUNT(*) 人数
FROM student
WHERE Sdept IN(SELECT DISTINCT Sdept FROM student)
GROUP BY Sdept

--10.统计每门课程的修课人数和考试最高分。
SELECT Cname 课程名,COUNT(*) 修课人数,MAX(Grade) 考试最高分
FROM SC,course
WHERE SC.Cno IN(SELECT DISTINCT Cno FROM SC ) AND course.Cno=SC.Cno
GROUP BY course.Cname

--11.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。
SELECT student.Sname 学生姓名,student.Sno 学生学号,COUNT(SC.Sno) 选课门数
FROM student
inner join SC ON SC.Sno=student.Sno
GROUP BY student.Sname,student.Sno
ORDER BY COUNT(SC.Sno) ASC

--12.统计选修课的学生总数和考试的平均成绩。
SELECT COUNT(DISTINCT(Sno)) AS 学生总数,AVG(Grade) AS 平均成绩
FROM SC --//用DISTINCT消除重复的行

--13.查询选课门数超过2门的学生的平均成绩和选课门数。
SELECT Student.Sname,AVG(Sc.Grade) 平均成绩,COUNT(SC.Sno) 选课门数
FROM SC
--内联接join或inner join,内联系是比较运算符,只返回符合条件的行
JOIN Student ON (SC.Sno = Student.Sno)
JOIN Course ON (SC.Cno = Course.Cno)
GROUP BY Student.Sname
HAVING COUNT(distinct Course.Cno) >2--分组条件

--14.列出总成绩超过200分的学生,要求列出学号、总成绩。
SELECT Sno 学号,SUM(Grade) 总成绩
FROM SC
GROUP BY Sno
HAVING SUM(Grade)>200

--15.查询pubs数据库的titles表中每类图书的平均价格超过12.0元的书的类型(Type)、
--平均价格和最高价格。
USE pubs
GO
SELECT Type AS 书的类型,AVG(price) AS 平均价格,MAX(price) AS 最高价格
FROM titles
GROUP BY Type
HAVING AVG(price)>12.0

--16.查询pubs数据库的titles表中每类图书中图书的数目超过3本的图书的总价格。
USE pubs
GO
SELECT 图书类型=Type,图书的数目=count(Type),图书的总价格=SUM(price)
FROM titles
GROUP BY Type
HAVING count(Type)>3

--17.查询选修了c02号课程的学生的姓名和所在系。
SELECT Sname 学生姓名,Sdept 所在系,SC.Cno AS 选修课程
FROM student
inner join SC ON student.Sno=SC.Sno
WHERE SC.Cno='C02'

--18.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
SELECT Sname 学生姓名,SC.Cno 课程号,SC.Grade 成绩
FROM student
inner join SC ON student.Sno=SC.Sno--内连接表SC查询
WHERE SC.Grade>80
ORDER BY SC.Grade DESC

--19.查询计算机系男生修了"数据库基础"的学生的姓名、性别、成绩。
SELECT Sname 姓名,Ssex 性别,SC.Grade 成绩
FROM student
inner join SC ON Cno IN(SELECT Cno FROM course WHERE Cname='数据库基础') --显示成绩的条件
AND student.Sno=SC.Sno --显示成绩的学生的学号
WHERE Sdept='计算机系' AND Ssex='男'

--20.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。
--这题使用到了表的自连接,所以需要给表取两个别名,如A和B
SELECT A.Sname 年龄相同的学生的姓名,A.Sage 年龄
FROM student A
inner join student B ON A.Sage IN(SELECT Sage FROM student WHERE A.Sage=B.Sage AND A.Sname!=B.Sname)
GROUP BY A.Sname,A.Sage
ORDER BY A.Sage

--21.查询哪些课程没有人选,要求列出课程号和课程名。
SELECT Cno AS 课程号,Cname AS 课程名
FROM course
WHERE Cno NOT IN(SELECT DISTINCT SC.Cno FROM SC)

--22.查询有考试成绩的所有学生的姓名、修课名称及考试成绩
--要求将查询结果放在一张新的永久表(假设新表名为new-sc)中。
SELECT student.Sname AS 有考试成绩的学生的姓名,course.Cname AS 修课名称,SC.Grade AS 考试成绩
INTO [new_sc] --将查询结果放入新表new_sc中
FROM student,course,SC
WHERE SC.Grade IS NOT NULL AND student.Sno=SC.Sno AND course.Cno=SC.Cno

--23.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,
--并要求将这两个查询结果合并成一个结果集,
--并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。
--//此题用到了并union查询
SELECT Sdept 系名,Sname 姓名,Ssex 性别,course.Cname 修课名称,SC.Grade 修课成绩
FROM student
inner join SC ON student.Sno=SC.Sno
inner join course ON course.Cno=SC.Cno
WHERE Sdept='信息系'
UNION
SELECT Sdept 系名,Sname 姓名,Ssex 性别,course.Cname 修课名称,SC.Grade 修课成绩
FROM student
inner join SC ON student.Sno=SC.Sno
inner join course ON course.Cno=SC.Cno
WHERE Sdept='计算机系'

select sdept, sname,ssex,cname,grade from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno and (sdept='信息系' or sdept='计算机系')

--24.用子查询实现如下查询:
--(1) 查询选修了C01号课程的学生的姓名和所在系。
SELECT Sname AS 选修了C01号课程的学生的姓名,Sdept AS 所在系
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Cno='C01')

--(2) 查询数学系成绩80分以上的学生的学号、姓名。
SELECT Sno AS 数学系成绩80分以上的学生的学号,Sname AS 姓名
FROM student
WHERE Sno IN(SELECT Sno FROM SC WHERE Grade>80)
AND Sno IN(SELECT Sno FROM student WHERE Sdept='数学系')

--(3) 查询计算机系学生所选的课程名.
SELECT Cname AS 计算机系学生所选的课程名
FROM course
WHERE
course.Cno IN(SELECT DISTINCT Cno FROM SC WHERE SC.Sno IN(SELECT Sno FROM student WHERE Sdept='计算机系'))

--25.将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现://////////////?????/
--(1) 在插入数据过程中建表。
--使用SELECT INTO插入数据的方法,是在插入数据的过程中建立新表
SELECT student.Sname AS 学生名字,course.Cname AS 选修课程,SC.Cno AS 课程编号
INTO [SC_Info1]--将计算机系成绩高于80分的学生的修课情况插入到表SC_Info1中
FROM student,course,SC
WHERE student.Sdept='计算机系' AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno

--(2) 先建一个新表,然后再插入数据。
--创建表SC_Info2
CREATE TABLE SC_Info2
(
Sname char(7),
Cname char(20),
Cno char(10)
)

--往表SC_info2插入查询得到的结果
INSERT SC_Info2
SELECT student.Sname AS 学生名字,course.Cname AS 选修课程,SC.Cno AS 课程编号
FROM student,course,SC
WHERE student.Sdept='计算机系' AND SC.Grade>80 AND course.Cno=SC.Cno AND student.Sno=SC.Sno

--26.删除修课成绩小于50分的学生的修课记录
DELETE SC WHERE Grade<50 OR Grade IS NULL

--27.将所有选修了"c01"课程的学生的成绩加10分。
UPDATE SC
SET Grade=Grade+10
WHERE Cno='C01'