sql server复习 练习
- 使用sql脚本创建学校图书馆借书信息管理系统的三个表:
数据库名:BOOK
学生信息表:student
字段名称 |
数据类型 |
说明 |
stuID |
char(10) |
学生编号,主键 |
stuName |
Varchar(10) |
学生名称 |
major |
Varchar(50) |
专业 |
图书表:book
字段名称 |
数据类型 |
说明 |
BID |
char(10) |
图书编号,主键 |
title |
char(50) |
书名 |
author |
char(20) |
作者 |
借书信息表:borrow
字段名称 |
数据类型 |
说明 |
borrowID |
char(10) |
借书编号,主键 |
stuID |
char(10) |
学生编号,外键 |
BID |
char(10) |
图书编号,外键 |
T_time |
datetime |
借书日期 |
B_time |
datetime |
还书日期 |
2、向表中插入以下测试数据
--学生信息表中插入数据--
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)
3、请编写SQL语句完成以下的功能:
- 显示出“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:
- 查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:
- 定义存储过程,实现查询任意作者的图书补借阅的情况,例如借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;参考查询结果如下图所示:
- 查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所示:
按照要求求解即可
--创建数据库BOOK
create database BOOKon(name = 'BOOK_main',filename = 'D:\SQL Server2012\Workspace\BOOK_main.mdf',size = 20MB,maxsize = 1000MB,filegrowth = 1MB)log on(name='BOOK_log',filename='D:\SQL Server2012\Workspace\BOOK_log.ldf',size=10MB,maxsize=100MB,filegrowth = 10%)--创建学生信息表
create table student(stuID char(10) primary key, --学生编号,主键stuName varchar(10), --学生名称major varchar(10) --专业
)--创建图书表
create table book(BID char(10) primary key, --图书编号,主键title char(50), --书名author char(20) --作者
)--创建借书信息表
create table borrow(borrowID char(10) primary key, --借书编号,主键stuID char(10), --学生编号,外键BID char(10), --图书编号,外键T_time datetime, --借书日期B_time datetime --还书日期
)
--添加外键
alter table borrowadd constraint fk_borrow_student_stuIDforeign key(stuID) references student(stuID)
alter table borrowadd constraint fk_borrow_book_BIDforeign key(BID) references book(BID)--学生信息表中插入数据
insert into student values('1001','林林','计算机'),('1002','白杨','计算机'),('1003','虎子','英语'),('1004','北漂的雪','工商管理'),('1005','五月','数学')----图书信息表中插入数据
insert into book values('B001','人生若只如初见','安意如'),('B002','入学那天遇见你','晴空'),('B003','感谢折磨你的人','如娜'),('B004','我不是教你诈','刘庸'),('B005','英语四级','白雪')--借书信息表中插入数据
insert into borrow values('T001','1001','B001','2007-12-26',null),('T002','1004','B003','2008-1-5',null),('T003','1005','B001','2007-10-8','2007-12-25'),('T004','1005','B002','2007-12-16','2008-1-7'),('T005','1002','B004','2007-12-22',null),('T006','1005','B005','2008-1-6',null),('T007','1002','B001','2007-9-11',null),('T008','1005','B004','2007-12-10',null),('T009','1004','B005','2007-10-16','2007-12-18'),('T010','1002','B002','2007-9-15','2008-1-5'),('T011','1004','B003','2007-12-28',null),('T012','1002','B003','2007-12-30',null)
select*from student
select*from book
select*from borrow
--显示出“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期:with student_borrow(stuID,stuName,major,T_time,BID,B_time,borrowID)
as(
select s.stuID,s.stuName,s.major,b.T_time,b.BID,b.B_time,b.borrowID
from student s inner join borrow b
on s.stuID = b.stuID
where b.T_time>='2007-12-15' and b.T_time<='2008-01-08 ' and s.major = '计算机'
)
select sb.stuID,sb.stuName,k.BID,k.title,sb.T_time
from student_borrow sb inner join book k
on sb.BID = k.BID--查询所有借过图书的学生编号、学生名称、专业:
select distinct s.stuID,s.stuName,s.major
from student s inner join borrow b
on s.stuID = b.stuID--定义存储过程,实现查询任意作者的图书补借阅的情况,例如借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期:
create proc proc_bookborrow@author char(20)aswith student_borrow(stuID,stuName,major,T_time,BID,B_time,borrowID)as(select s.stuID,s.stuName,s.major,b.T_time,b.BID,b.B_time,b.borrowIDfrom student s inner join borrow bon s.stuID = b.stuID)select sb.stuName,k.title,sb.T_time,sb.B_timefrom student_borrow sb inner join book kon sb.BID = k.BIDwhere k.author = @authorgoproc_bookborrow '安意如'--查询目前借书但未归还图书的学生名称及未还图书数量:
select distinct s.stuName'学生名称',count(s.stuName)'借书数量'
from student s inner join borrow b
on s.stuID = b.stuID
where b.B_time is null
group by s.stuName
sql server复习 练习相关推荐
- SQL server 复习一
第一天 下面我们从最基础的开始: 在运行里面输入:services.msc 一.启动服务 二.数据库登录的两种身份验证方式 另外一种身份验证方式就是SQL Server身份验证. sa不能使用的时候可 ...
- sql创建计算机用户,2015年计算机四级数据库复习要点:SQL Server 登录账户
2015年计算机四级数据库复习要点:SQL Server 登录账户 系统内置的登录账户 1. BUILTIN\Administrators:是一个Windows组账户,表示所有的Windows Adm ...
- Sql server 期末知识点复习
**数据库基础概念: 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 数据库复习知识 数据库基本概念 一.第一章概念知识复习 二.数据库创建,数据库及数据库对象 数据库基本概念 一. ...
- SQL Server 入门复习(2008)图解
1 首先找到开始菜单中相关内容:如下图:安装的组件不同可能有所不同:我的电脑中包括如下项: 商业智能:管理控制台:导入和导出数据:分析服务:集成服务:配置工具:文档和教程:性能工具: 因为偶装的组件多 ...
- SQL Server 2008 复习(一)
导入 有关数据库系统的基本概念 1.信息与数据: 数据(Data)是描述事物的符号记录,数据的表现形式,可以是文本.图表.图形.图像.声音.语言.视频等. 信息(Information)是具有特定意义 ...
- 复习--SQL Server (一) -系统数据库
SQL Server 2000自带了四个数据库: 1. Master数据库(系统数据库): 记录了SQL Server 的所有服务器级别的系统信息(16张服务器系统表&17张数据库级系统表), ...
- c井语言和SQL第一章上机1,第一章 SQL Server 数据库基础复习内容(上机)
上机课程总目标 在本学期中,将模拟开发一套学员信息管理系统,用来管理学员的个人基本资料,老师资料,学生成绩,课程信息等教学相关内容,以实现学校的信息自动化,提高工作效率. 该系统包括学生档案管理.学生 ...
- SQL Server各种日期计算方法
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函 ...
- 标 题:[转帖]SQL Server日期计算(收藏)
分 类:数据库相关 关键字 :日期 相 关:作者:未知 来源:xpilot 的 Blog 引 用:[0]http://goaler.xicp.net/TrackBack.asp ...
- 整理一些sql server基础资料
闲来无事,整理些sql server 基础资料,以便以后查找.复习 SQL Server日期计算 a. 一个月的第一天 Select DATEADD(mm, DATEDIFF(mm,0,getdate ...
最新文章
- 从4个月到7天,Netflix开源Python框架Metaflow有何提升性能的魔法?
- [开源]C#二维码生成解析工具,可添加自定义Logo
- 肝一波 ~ 手写一个简易版的Mybatis,带你深入领略它的魅力!
- 在HTML中小心使用空格和回车
- Windows删除删除文件提示无法读源文件或磁盘解决方法
- matlab设计声音听听
- linux 批量传文件大小,小弟我使用过的Linux命令之rz - 批量下传文件,简单易用...
- c++string类的相关操作
- SparkStreaming优化
- linux下海康威视MVS以及库的安装
- Spring集成Quartz定时器
- 郭德纲家训--话糙理不糙
- 代码何须全部自己写,融云守护程序猿发际线
- Qt使用QCustomPlot画坐标图教程
- 【数据挖掘】天池挑战赛 新闻推荐
- 学习百度Apollo中的决策规划
- 购物网站 mysql设计_购物网站数据库设计
- 均衡计算机教室一类标准,义务教育基本均衡样表(黎思小学201711更新-)
- 《红楼梦》各版本总结
- VScode打字特效插件的配置