大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
本文用3个题目,从建立数据库到创建存储过程,详细讲解数据库的功能。这个问题面试的时候也是经常会用到的,比如写sql语句。
题目1
学校
图书馆借书信息管理
系统建立三个表:
学生信息表:student
字段名称 |
数据类型 |
说明 |
stuID |
char(10) |
学生编号,主键 |
stuName |
Varchar(10) |
学生名称 |
major |
Varchar(50) |
专业 |
图书表:book
字段名称 |
数据类型 |
说明 |
stuID |
char(10) |
学生编号,主键 |
stuName |
Varchar(10) |
学生名称 |
major |
Varchar(50) |
专业 |
借书信息表:borrow
字段名称 |
数据类型 |
说明 |
borrowID |
char(10) |
借书编号,主键 |
stuID |
char(10) |
学生编号,外键 |
BID |
char(10) |
图书编号,外键 |
T_time |
datetime |
借书日期 |
B_time |
datetime |
还书日期 |
请编写SQL语句完成以下的功能:
1) 查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:
2) 查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:
3) 查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;参考查询结果如下图所示:
4) 查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所示:
附加:建表语句:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
USE master
GO
/*$$$$$$$$$$$$$建库$$$$$$$$$$$$$$$$$$$$$$$$*/
--检验数据库是否存在,如果为真,删除此数据库--
IF exists( SELECT * FROM sysdatabases WHERE name = 'BOOK' )
DROP DATABASE BOOK
GO
CREATE DATABASE BOOK
GO
--建数据表--
USE BOOK
GO
CREATE TABLE student --学生信息表
(
stuID CHAR (10) primary key , --学生编号
stuName CHAR (10) NOT NULL , --学生名称
major CHAR (50) NOT NULL --专业
)
GO
CREATE TABLE book --图书表
(
BID CHAR (10) primary key , --图书编号
title CHAR (50) NOT NULL , --书名
author CHAR (20) NOT NULL , --作者
)
GO
CREATE TABLE borrow --借书表
(
borrowID CHAR (10) primary key , --借书编号
stuID CHAR (10) foreign key (stuID) references student(stuID), --学生编号
BID CHAR (10) foreign key (BID) references book(BID), --图书编号
T_time datetime NOT NULL , --借出日期
B_time datetime --归还日期
)
GO
--学生信息表中插入数据--
INSERT INTO student(stuID,stuName,major) VALUES ( '1001' , '林林' , '计算机' )
INSERT INTO student(stuID,stuName,major) VALUES ( '1002' , '白杨' , '计算机' )
INSERT INTO student(stuID,stuName,major) VALUES ( '1003' , '虎子' , '英语' )
INSERT INTO student(stuID,stuName,major) VALUES ( '1004' , '北漂的雪' , '工商管理' )
INSERT INTO student(stuID,stuName,major) VALUES ( '1005' , '五月' , '数学' )
--图书信息表中插入数据--
INSERT INTO book(BID,title,author) VALUES ( 'B001' , '人生若只如初见' , '安意如' )
INSERT INTO book(BID,title,author) VALUES ( 'B002' , '入学那天遇见你' , '晴空' )
INSERT INTO book(BID,title,author) VALUES ( 'B003' , '感谢折磨你的人' , '如娜' )
INSERT INTO book(BID,title,author) VALUES ( 'B004' , '我不是教你诈' , '刘庸' )
INSERT INTO book(BID,title,author) VALUES ( 'B005' , '英语四级' , '白雪' )
--借书信息表中插入数据--
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T001' , '1001' , 'B001' , '2007-12-26' , null )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T002' , '1004' , 'B003' , '2008-1-5' , null )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T003' , '1005' , 'B001' , '2007-10-8' , '2007-12-25' )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T004' , '1005' , 'B002' , '2007-12-16' , '2008-1-7' )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T005' , '1002' , 'B004' , '2007-12-22' , null )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T006' , '1005' , 'B005' , '2008-1-6' , null )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T007' , '1002' , 'B001' , '2007-9-11' , null )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T008' , '1005' , 'B004' , '2007-12-10' , null )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T009' , '1004' , 'B005' , '2007-10-16' , '2007-12-18' )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T010' , '1002' , 'B002' , '2007-9-15' , '2008-1-5' )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T011' , '1004' , 'B003' , '2007-12-28' , null )
INSERT INTO borrow(borrowID,stuID,BID,T_time,B_time) VALUES ( 'T012' , '1002' , 'B003' , '2007-12-30' , null )
|
标准答案: — 1)查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期—
select
学生编号=stuID,
学生名称=(
select
stuName
from
student
where
stuID=borrow.stuID),
图书编号=BID,
图书名称=(
select
title
from
book
where
BID=borrow.BID),
借出日期=T_time
from
borrow
where
stuID
in
(
select
stuID
from
student
where
major=
'计算机'
)
and
T_time>
'2007-12-15'
and
T_time<
'2008-1-8'
2)查询所有借过图书的学生编号、学生名称、专业--
select
学生编号=stuID,
学生名称=stuName,
专业=major
from
student
where
stuID
in
(
select
stuID
from
borrow)
3)查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期--
select
学生名称=(
select
stuName
from
student
where
stuID=borrow.stuID),
图书名称=(
select
title
from
book
where
BID=borrow.BID),
借出日期=T_time,
归还日期=B_time
from
borrow
where
BID
in
(
select
BID
from
book
where
author=
'安意如'
)
4)查询目前借书但未归还图书的学生名称及未还图书数量--
SELECT
Member.MName
AS
姓名,
英语 =
SUM
(
CASE
F.FName
WHEN
'语文'
THEN
Score.Score
END
),
数学 =
SUM
(
CASE
F.FName
WHEN
'数学'
THEN
Score.Score
END
),
语文 =
SUM
(
CASE
F.FName
WHEN
'英语'
THEN
Score.Score
END
),
历史 =
SUM
(
CASE
F.FName
WHEN
'历史'
THEN
Score.Score
END
)
FROM
Score, Member,F
WHERE
F.FID = Score.FID
AND
Member.MID =Score.MID
GROUP
BY
Member.MName
2)查询四门课中成绩低于70分的学生及相对应课程名和成绩–
select 姓名=(select MName from Member where MID=Score.MID),
课程名=(select FName from F where FID=Score.FID),
成绩=Score from Score where Score<70
3)统计各个学生四课程的平均分,且按平均分数由高到底排序--
select 姓名=(select MName from Member where MID=Score.MID),
平均分=Avg(Score) from Score group by MID order by 平均分 desc
4)创建存储过程--
if exists (
select
*
from
sysobjects
where
name
=
'P_stu'
)
drop
procedure
P_stu
GO
create
procedure
P_stu
@num
int
As
print
'参加'
+
convert
(
varchar
(5),@num)+
'门课考试的学生姓名及学号:'
select
姓名=(
select
MName
from
Member
where
MID=Score.MID),
学号=MID
from
Score
group
by
MID
having
count
(*)=@num
--调用存储过程--
exec
P_stu @num=2
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185618.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...