zoukankan      html  css  js  c++  java
  • 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='张三';
  • 相关阅读:
    MySQL状态变量Aborted_connects与Aborted_clients浅析
    ERROR 1044 (42000): Access denied for user 'root'@'localhost'
    ERROR 3009 (HY000): Column count of mysql.user is wrong…..
    服务器CPU繁忙或内存压力引起网络掉包的浅析与总结
    ORACLE如何找到引起账号锁定的IP的一点思考与总结
    记一次坑爹的ORA-01152&ORA-01110错误
    RMAN restore fails with ORA-01180: can not create datafile 1
    SQL Server的优化器会缓存标量子查询结果集吗
    Snapshot origin volumes can be resized only while inactive: try lvchange -an
    MySQL InnoDB下关于MVCC的一个问题的分析
  • 原文地址:https://www.cnblogs.com/codingpark/p/4254211.html
Copyright © 2011-2022 走看看