数据库技术及应用上机考试题

数据库技术及应用上机考试题

一、给定的图书_读者库中数据库表结构及样本记录表1-表6数据如下:
图书表book(书号,类别,书名,定价);
读者表reader(读者编号,姓名,单位,性别);
借阅表lend(书号,读者编号,借阅日期,归还日期).
表1 图书表结构
字段名 数据类型 长度 是否为空 约束
书号 CHAR 6 否 主键
类别 CHAR 10 否
书名 CHAR 50 否
定价 MONEY
表2 读者表结构
字段名 数据类型 长度 是否为空 约束
读者编号 CHAR 6 否 主键
姓名 CHAR 10 否
单位 CHAR 30
性别 CHAR 2 否
表3 借阅表结构
字段名 数据类型 长度 是否为空 约束
书号 CHAR 6 否 主键,外键
读者编号 CHAR 6 否 主键,外键
借阅日期 DATETIME 否
归还日期 DATETIME

1、根据给定的样本数据,按顺序完成下列操作:
(1)创建图书-读者数据库。(数据库的名称为代表db+你自己学号的后4位,比如学号最后4位1023的数据库名为db1023)(5分)
(2)创建图书表(book)、读者表(reader)和借阅表(lend)表名必须为(book,reader,lend)。(15分)
(3)输入表4—表6的记录到数据库中。(15分)
表4 图书表数据
书号 类别 书名 定价
S10001 计算机 计算机导论 18.00
S10002 计算机 数据结构 22.00
S10003 计算机 操作系统 20.00
S10004 数学 高等代数 18.00

表5 读者表数据
读者编号 姓名 单位 性别
D10001 张明亮 计算机系 男
D10002 刘和平 计算机系 女
D10003 范闲 数学系 男
D10004 范若若 数学系 男

表6 借阅表数据
书号 读者编号 借阅日期 归还日期
S10001 D10001 2019-01-25 2019-03-20
S10002 D10002 2019-02-20 2019-03-20
S10001 D10002 2019-09-25
S10004 D10003 2019-09-25

2、用命令完成以下操作
(1)输入新借阅图书记录:(‘S10003’,’D10003’,’2019-09-25’) (5分)
(2)修改图书记录:将书名=‘数据结构’的记录的定价修改为25.00。(5分)
(3)修改读者信息表中姓名为范若若的性别改为女(5分)
(4)编写试图,名为lendbook 查询所有借阅了还没归还的借阅信息
(包括书号、书名、读者编号、姓名、借阅日期(5分)

**创表 插入原始数据**
create table book(
书号 char(6) primary key,
类别 char(10),
书名 char(50),
定价 money,
)
create table reader(
读者编号 char(6) primary key,
姓名 char(10),
单位 char(30),
性别 char(2),
)
create table lend(
书号 char(6),
读者编号 char(6),
借阅日期 datetime,
归还日期 datetime,
primary key(书号,读者编号),
foreign key(书号)references book(书号),
foreign key(读者编号)references reader(读者编号),
)
insert into book values('S10001','计算机','计算机导论',18)
insert into book values('S10002','计算机','数据结构',22)
insert into book values('S10003','计算机','操作系统',20)
insert into book values('S10004','数学','高等代数',18)

insert into reader values('D10001','张明亮','计算机系','男')
insert into reader values('D10002','刘和平','计算机系','女')
insert into reader values('D10003','范闲','数学系','男')
insert into reader values('D10004','范若若','数学系','男')

insert into lend values('S10001','D10001','2019-01-25','2019-03-20')
insert into lend values('S10002','D10002','2019-02-20','2019-03-20')
insert into lend values('S10001','D10002','2019-09-25',null)
insert into lend values('S10004','D10003','2019-09-25',null)
**2题 操作数据**
insert into lend values('S10003','D10003','2019-09-25',null)

update book set 定价=25 where 书名='数据结构'

update reader set 性别='女' where 姓名='范若若'

create view lendbook as
(select book.书号,书名,reader.读者编号,姓名,借阅日期,归还日期 
from book,reader,lend where book.书号=lend.书号 
and reader.读者编号=lend.读者编号)
select 书号,书名,读者编号,姓名,借阅日期 from lendbook where 归还日期 is null
**查询三张表**
select * from book
select * from reader
select * from lend

二、在查询窗口中执行下列代码生成数据库bg及相关内容,并完成相关操作

create database bg
on
(   name=bg,
    filename='d:\bg.mdf',
    size=4000kb,
    filegrowth=10%,
    maxsize=10000kb)
log on
(   name=bglog,
    filename='d:\bg.ldf',
    size=1,
    filegrowth=5%)
go
use bg
go
create table rooms
( roomno varchar(50) primary key not null,
  roomtype varchar(50),
  roomposition varchar(50),
  roomprice numeric,
  putup varchar(50) default('否'),
  roommemo varchar(50))
create table bookin
(   bookno varchar(50) primary key,
    guestid varchar(50) not null,
    roomno varchar(50) check(roomno like '[0-9][0-9][0-9]' or roomno like '[0-9][0-9][0-9][0-9]'),
    staydate datetime,
    returndate datetime,
    discount numeric(18,2) default(0.8),
    amount numeric,
    check(returndate>staydate))
insert rooms(roomno,roomtype,roomposition,roomprice,putup) values ('1003','标准房','10层朝南',468,'否')
insert rooms(roomno,roomtype,roomposition,roomprice,putup) values('1009','单人房','10层朝东',368,'是')
insert rooms(roomno,roomtype,roomposition,roomprice,putup) values('903','套房','9层朝南',688,'是')
insert into bookin(bookno, guestid, roomno, staydate, returndate, discount, amount) values(
'001','142212199805060033','1003','2018-5-5','2018-5-6',0.8,468)
insert into bookin(bookno, guestid, roomno, staydate, returndate, discount, amount) values(
'002','142212199805060034','1009','2018-5-5','2018-5-6',0.8,368)
insert into bookin(bookno, guestid, roomno, staydate, returndate, discount, amount) values(
'003','142212199805060035','903','2018-6-5','2018-6-6',0.8,688)

表的描述如下
rooms(客房信息表)
列名(英文
名) 列名(中文名) 数据类型 允许空值 说明
客房编号 Varchar(50) N 主键
roomtype 客房类型 varchar(50) Y
roomposition 客房位置 varchar(50) Y
roomprice 单价 numeric Y
putup 是否被预定 varchar(50) Y 默认为’否’
roommemo 备注 varchar(50) Y

bookin(订房信息表)
列名(英文名) 中文说明 数据类型 允许空值 说明
bookno 订房编号 Varchar(50) N 主键
guestid 身份证号 varchar(50) N 非空
roomno 客房编号 varchar(50) Y 格式为三位或者四位数字
staydate 入住日期 Datetime Y
returndate 结算日期 Datetime Y 晚于入住日期
discount 折扣 numeric Y 默认为0.8
amount 房费 numeric Y

完成下面的问题
(1)编写SQL语句查询订房信息表中前2条的记录,显示订房编号,入住日期,结算日期(5分)
(2)编写SQL语句查询客房编号是’903’的客房类型、位置和单价(10分)
(3)编写SQL语句将所有未被预定的标准房的价格打7折(10分)
(4)编写SQL语句将客房编号以‘9’开头的所有预订信息删除(10分)
(5)编写SQL语句查询被预定的单人房的客房编号, 按客房编号的升序排序(10分)

**第二题**
select top 2 bookno,staydate,returndate from bookin

select roomtype,roomposition,roomprice from rooms where roomno='903'

update rooms set roomprice=roomprice*0.7  
where roomtype ='标准房'and putup='否'

delete from bookin where roomno like '9%'

select rooms.roomno from bookin,rooms where roomtype ='单人房' 
and  putup='是' group by rooms.roomno
发布了6 篇原创文章 · 获赞 0 · 访问量 749

猜你喜欢

转载自blog.csdn.net/qq_43760243/article/details/103528580
今日推荐