JavaWeb之Mysql代码练习(十二)

图书馆借书信息库结构

use day14;
DROP TABLE student;
DROP TABLE book;
DROP TABLE borrow;

-- 1. 创建学生表信息
CREATE TABLE student(
	stuID CHAR(10) PRIMARY KEY,
    stuName VARCHAR(10),
    major VARCHAR(50)
);

CREATE TABLE book(
	BID CHAR(10) PRIMARY KEY,
    title CHAR(50),
    author CHAR(20)
);

CREATE TABLE borrow(
	borrowID CHAR(10) PRIMARY KEY,
    stu_ID CHAR(10),
    book_ID CHAR(10),
    T_time DATETIME,
    B_time DATETIME,

    CONSTRAINT FK_stu_ID FOREIGN KEY(stu_ID) REFERENCES student(stuID),
    CONSTRAINT FK_book_ID FOREIGN KEY(book_ID) REFERENCES book(BID)
);
    
SHOW TABLES;
#学生信息表中插入数据
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 VALUES('T001','1001','B001','2007-12-26',null);
INSERT INTO borrow VALUES('T002','1004','B003','2008-1-5',null);
INSERT INTO borrow VALUES('T003','1005','B001','2007-10-8','2007-12-25');
INSERT INTO borrow VALUES('T004','1005','B002','2007-12-16','2008-1-7');
INSERT INTO borrow VALUES('T005','1002','B004','2007-12-22',null);
INSERT INTO borrow VALUES('T006','1005','B005','2008-1-6',null);
INSERT INTO borrow VALUES('T007','1002','B001','2007-9-11',null);
INSERT INTO borrow VALUES('T008','1005','B004','2007-12-10',null);
INSERT INTO borrow VALUES('T009','1004','B005','2007-10-16','2007-12-18');
INSERT INTO borrow VALUES('T010','1002','B002','2007-9-15','2008-1-5');
INSERT INTO borrow VALUES('T011','1004','B003','2007-12-28',null);
INSERT INTO borrow VALUES('T012','1002','B003','2007-12-30',null);


-- 查询表中信息
select * from book;
select * from student;
select * from borrow;

-- 1)	查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、
-- 学生名称、图书编号、图书名称、借出日期;参考查询结果如
SELECT s.stuID as 学生编号, s.stuName as 学生名称, b.BID as 图书编号, b.title as 图书名称,
 borr.T_time as 借出日期 
 FROM student s inner join book b inner join borrow borr 
 on s.stuID=borr.stu_ID and b.BID=borr.book_ID
 where s.major='计算机' 
 and T_time between '2007-12-15' and '2008-1-8';

-- 2)	查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示
select distinct s.stuID as 学生编号, s.stuName 学生名称, s.major 学生专业 
 from student s inner join borrow borr on s.stuID=borr.stu_ID;
select s.stuID as 学生编号, s.stuName 学生名称, s.major 学生专业 
 from student s where s.stuID in (select stu_ID from borrow);

-- 3)	查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;参考查询结果如下图所示:
select s.stuName as 学生姓名, b.title as 图书名称, borr.T_time as 借出日期, borr.B_time 
from student s inner join book b inner join borrow borr 
on s.stuID=borr.stu_ID and b.BID=borr.book_ID where b.author='安意如';

-- 4)	查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所示:
select s.stuName as 学生姓名, count(*)
 from student s, borrow borr where s.stuID=borr.stu_ID and B_time is null group by s.stuName;

 

建立关于系/学生/班级的数据库

create database school;
use school;

#系DEPARTMENT(系号did,系名dname)
create table DEPARTMENT( 
did char(4), 
dname char(8), 
primary key(did));

insert into DEPARTMENT values('001','数学'); 
insert into DEPARTMENT values('002','计算机'); 
insert into DEPARTMENT values('003','化学'); 
insert into DEPARTMENT values('004','中文');
insert into DEPARTMENT values('005','经济');


-- 班CLASS(班号cid,专业名major,系名did,入学年份entrydate)
create table CLASS( 
cid char(6), 
major char(12), 
did char(8), 
entrydat char(6), 
primary key(cid), 
constraint FK_class_did foreign key(did) references DEPARTMENT(did)
);

insert into CLASS values('101','软件','002','1995'); 
insert into CLASS values('102','微电子','002','1996'); 
insert into CLASS values('111','无机化学','003','1995'); 
insert into CLASS values('112','高分子化学','003','1996'); 
insert into CLASS values('121','统计数学','001','1995');
insert into CLASS values('131','现代语言','004','1996'); 
insert into CLASS values('141','国际贸易','005','1997'); 
insert into CLASS values('142','国际金融','005','1996');

-- 学生STUDENT(学号 sid,姓名sname,年龄sage,班号cid)
create table STUDENT( 
sid char(6), 
sname char(6) not null, 
sage char(2), 
cid char(6), 
primary key(sid), 
constraint FK_student_classid foreign key(cid)references CLASS(cid));

insert into STUDENT values('8101','张三','18','101'); 
insert into STUDENT values('8102','钱四','16','121'); 
insert into STUDENT values('8103','王玲','17','131'); 
insert into STUDENT values('8105','李飞','19','102'); 
insert into STUDENT values('8109','赵四','18','141'); 
insert into STUDENT values('8110','李可','20','142'); 
insert into STUDENT values('8201','张飞','18','111'); 
insert into STUDENT values('8302','周瑜','16','112'); 
insert into STUDENT values('8203','王亮','17','111'); 
insert into STUDENT values('8305','董庆','19','102'); 
insert into STUDENT values('8409','赵龙','18','101'); 
insert into STUDENT values('8510','李丽','20','142');

select * from STUDENT ;
select * from DEPARTMENT; 
select * from CLASS;

/*(1)找出所有姓李的学生,并按其年龄由小到大排序。*/ 
select sname 姓名, sage 年龄 from STUDENT WHERE sname like '李%' order by sage asc;

/*(2)列出所有开设超过两个专业的系的名字。*/ 

select dname 系名 from CLASS c inner join DEPARTMENT d
	where c.did=d.did group by d.did having count(d.did)>=2;

/*(3)列出每个班学生人数大于等于2的系的编号和名称。*/ 
select d.did 系编号, d.dname 系名称, count(s.sid) 学生人数, c.major 专业名 from DEPARTMENT d inner join STUDENT s inner join CLASS c
	on s.cid=c.cid and c.did=d.did group by d.did having count(s.sid)>=2;

/*(4)学校又新增加了一个物理系,编号为006.*/ 
-- insert into DEPARTMENT values('006','物理系');
select * from DEPARTMENT where did='006';

/*(5)学生张三转到化学系111班,请更新相关的表。*/ 
-- UPDATE STUDENT set cid='111' where sname='张三';
select s.sname 姓名, s.cid 班号, c.major 专业名
	from STUDENT s inner join CLASS c on s.cid=c.cid where s.sname='张三';

转载于:https://www.cnblogs.com/codingpark/p/4254211.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
现要为学校建立一个数据库,设学校环境如下:一个系有若干个专业,每个专业一年只招一个,每个有若干个学生。.现要建立关于系、学生级的数据库,关系模式为:   学生STUDENT (学号,姓名,年龄,号)   CLASS (号,专业名,系名,入学年份)   系 DEPARTMENT (系号,系名) 用户USERINFO(用户名,密码) 试用SQL语言完成以下功能:  1 建,在定义中要求声明:   (1)每个的主外码。   (2)每个级的人数不能超过30人。   (3)学生的年龄介于15到40岁之间。   (4)学生姓名不能为空。   (5)只有里没有学生的时候,才能删除该级。 2 插入如下数据 如插入   CLASS(   101,软件,计算机,1995; 102,微电子,计算机,1996;   111,无机化学,化学,1995; 112,高分子化学,化学,1996;   121,统计数学,数学,1995; 131,现代语言,中文,1996;   141,国际贸易,经济,1997; 142,国际金融,经济,1996;   )   STUDENT (   8101,张三,18,101; 8102,钱四,16,121;   8103,王玲,17,131; 8105,李飞,19,102;   8109,赵四,18,141; 8110,李可,20,142   8201,张飞,18,111; 8302,周瑜,16,112;   8203,王亮,17,111; 8305,董庆,19,102;   8409,赵龙,18,101; 8510,李丽,20,142 )   DEPARTMENT( 001, 数学; 002, 计算机;   003, 化学; 004, 中文;   005, 经济;)  3 完成以下查询功能   (1)找出所有姓李的学生,并按其年龄由小到大排序。   (2)列出所有开设超过两个专业的系的名字。   (3)学校又新增加了一个物理系,编号为006。 (4)学生张三转化学系111更新相关。 (5)自己设计并实现一前台界面程序。 (6)系统登录、退出等基本功能 (7)各项数据的查看添加修改插入删除排序功能 (8)由主界面链接到各功能模板的功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值