数据库题目sql语言

如题所述

第1个回答  2020-04-24
1、创建数据库
create
database
学生成绩数据库
on
primary
(name='学生成绩数据库_mdf',
filename='e:\学生成绩数据库.mdb',
size=1,
maxsize=10,
filegrowth
=10%)
log
on
(name='学生成绩数据库_ldf',
filename='e:\学生成绩数据库.ldf',
size=1,
maxsize=10,
filegrowth
=10%)
2、创建课程表
create
table
课程表
(课程号
char(6)
primary
key,
课程名称
char(20)
not
null,
任课教师
char(8))
3、
创建学生表
create
table
学生表
(学号
char(6)
primary
key,
姓名
char(8)
not
null,
性别
char(2)
constraint
ck_性别
check(
性别
in
('男','女')),
民族
char(20)
not
null
default
'汉')
4、创建成绩表
create
table
成绩表
(学号
char(6)
not
null
foreign
key(学号)
references
学生表(学号),
课程号
char(6)
not
null
foreign
key(课程号)
references
课程表(课程号),
分数
int
constraint
ck_分数
check(分数
between
0
and
150))
5、添加信息
insert
课程表(课程号,课程名)
values
('100001',
'大学语文')
insert
课程表(课程号,课程名)
values
('100002',
'大学英语')
6.
写出创建成绩表视图(学号,姓名,课程号,课程名称,成绩)的代码
create
view
成绩表视图
as
select
学生表.学号,姓名,课程表.课程号,课程名称,成绩
from
学生表,课程表,成绩表
where
学生表.学号=成绩表.学号
and
成绩表.课程号=课程表.课程号
7.
写出计算大学语文课程成绩最高分、最低分、平均分的代码
select
max(分数)
'最高分数',min(分数)
'最低分数',avg(分数)
'平均分数'
from
成绩表
where
学号
in
(select
学号
from
课程表
where
课程名称='大学语文')
8、
检索姓李的女同学的信息:姓名、性别、民族
select
姓名,性别,民族
from
学生表
where
姓名
like
'李%'
and
性别='女'
第2个回答  2020-04-18
--基础题
--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
相似回答