精华内容
下载资源
问答
  • 数据库系统原理与设计第三版课后答案 ,是各大高校计算机专业教授数据库的通用教材,但此书课后没有答案,令学生们学习带来诸多不便,因此这里提供全部题目答案,大家分享。
  • 数据库系统原理与设计复习重点.ppt
  • BookDB2017(mysql)数据库系统原理与设计(第三版)课程知识第103页习题3的数据库运行文件,mysql版。
  • 万常选数据库系统原理与设计实验教程第1-4,6-10次实验的参考答案,全部自己写的,经过验证。
  • 数据库系统原理与设计实验教程实验一简单查询答案,内容全面,欢迎下载
  • 数据库系统原理与设计》万常选著知识点整理

    千次阅读 多人点赞 2020-04-19 17:17:32
    数据库系统原理与设计 1.1数据库系统 数据管理技术经历了人工管理、文件系统和数据库管理系统3个阶段。 1.人工管理的数据是面向应用程序的。 2.文件系统阶段已经有了操作系统,有专门的软件对数据进行统一管理。 3....

    数据库系统原理与设计
    1.1数据库系统
    数据管理技术经历了人工管理、文件系统和数据库管理系统3个阶段。
    1.人工管理的数据是面向应用程序的。
    2.文件系统阶段已经有了操作系统,有专门的软件对数据进行统一管理。
    3.数据库管理阶段有数据库管理系统(DBMS),数据库管理系统是由一个相互关联的数据的集合(称为数据库)和一组用以访问、管理和控制这些数据的程序组成。DBMS是位于用户与操作系统之间的一层数据管理系统,它提供一个可以方便且高效地存取、管理和控制数据库信息的环境。
    DBMS的特点:
    1.数据结构化。
    2.数据的共享度高,冗余度低
    3.数据独立性高。数据独立是指数据的使用(即应用程序)与数据的说明(即数据的组织结构和存储方式)分离,使应用程序只考虑如何使用数据
    在这里插入图片描述

    1.2数据模型是一个描述数据结构、数据操作和数据约束的概念及其符号表示系统。
    在这里插入图片描述

    关系数据模型的优缺点:
    1.关系模型建立在严格的数学概念的基础之上
    2.关系模型的概念单一,数据结构简单。
    3.关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性。
    缺点:由于存取路径对用户透明,查询效率往往不如非关系数据模型。为了提高性能,DBMS必须对用户的查询请求进行优化,这样就增加了开发DBMS的难度。
    1.3数据库三级模式结构及两层映像
    在这里插入图片描述

    1.模式(逻辑模式)对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述。
    2.外模式(子模式/用户模式)对应于视图层数据抽象,它是数据库用户(包括应用程序和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述。
    3.内模式(存储模式)对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式。
    4.外模式/模式映像 保证了数据与应用程序的逻辑独立性(数据的逻辑独立性)。
    5.模式/内模式映像:保证了数据与应用程序的物理独立性(数据的物理独立性)。
    1.4数据库系统
    在这里插入图片描述

    第一章
    数据库系统概论

    在这里插入图片描述
    在这里插入图片描述

    3 SQL语言
    组成部分
    在这里插入图片描述

    SQL语言的
    两种使用方法
    在这里插入图片描述
    SELECT [ALL|DISTINCT]<目标列表达式>[[AS]<别名>](DISTINT消除重复元组、AS给属性列取别名)
    FROM
    [WHERE<条件表达式>]
    [GROUP BY<列名1>,<列名2>]分组聚合:GROUP BY 对查询结果按某一列或某几列进行分组,值相等的分为一组
    [HAVING<条件表达式>]:HAVING分句对分组的结果进行选择,仅输出满足条件的组
    [ORDER BY<列名表达式>[ASC|DESC]] 排序运算ASC升序,DESC降序
    (WHERE条件表达式使用下列谓词运算符:
    比较运算符:>,>=,<,<=,=,<>,!=; WHERE grade=2015
    逻辑运算符:AND,OR,NOT; WHERE courseNo=’001’ OR courseNo=’005’ OR courseNo=’003’
    范围运算符:[NOT]BETWEEN…AND; WHERE score BETWEEN 80 AND 90
    集合运算符:[NOT]IN; WHERE courseNo IN(‘001’,’005’,’003’)
    空值运算符:IS[NOT]null; WHERE priorCourse IS null
    字符匹配运算符:[NOT]LIKE; WHERE className LIKE ‘%会计%’
    存在量词运算符:[NOT]EXISTS;)
    聚合查询:聚合函数
    在这里插入图片描述
    7.1数据定义语言
    在这里插入图片描述
    7.1.1数据库的定义
    1.数据库的创建 CREATE DATABASE databaseName>
    [ON [PRIMARY]
    [FILEGROUP] ]
    [LOG ON ]
    2.数据库的修改 ALTER DATABASE
    3.数据库的删除 DROP DATABASE databaseName>
    7.1.2基本表的定义
    1创建基本表
    CREATE TABLE Course(
    courseNo char(3) NOT NULL,
    courseName varchar(30) UNIQUE NOT NULL,(UNIQUE建立唯一索引)
    creditHour numeric(1) DEFAULT 0 NOT NULL,
    courseHour tinyint DEFAULT 0 NOT NULL,
    priorCourse char(3) NULL,
    (建立命名的主码约束和匿名的外码约束)
    CONSTRAINT CoursePK PRIMARY KEY (courseNo),(PRIMARY KEY:建立主码)
    FOREING KEY (priorCourse) REFERENCES Course(courseNo)(FOREING KEY :建立外码)
    )
    2基本表的修改
    增加列 ALTER TABLE tableName>
    ADD columnName> dataType>
    增加约束 ALTER TABLE tableName>
    ADD CONSTRAINT constraintName>
    删除约束 ALTER TABLE tableName>
    DROP constraintName>
    修改列的数据类型 ALETR TABLE tableName>
    ALTER COLUMN columnName>newDataType>
    3基本表的删除
    DROP TABLE TempTable
    7.3视图
    7.3.1创建视图
    CREATE VIEW viewName>[( columnName1>[, columnName2>…])]
    AS subquery>
    [WITH CHECK OPTION]
    viewName>:新建视图的名称,该名称在一个数据库中必须唯一;
    columnName1>[, columnName2>…]:视图中定义的列名。如果列名缺省不写,则视图的列名自动取subquery>语句查询出来的列名。如果存在下列3种情况之一,则必须写视图的列名:
    ① subquery>查询中的某个目标列是聚合函数或表达式
    ② subquery>查询中出现了多表连接中名称相同的列名;
    ③在视图中需要为某列取新的名称更合适。
    AS subquery>:子查询,不允许含有ORDER BY子句和DISTINCT短语;
    [WITH CHECK OPTION]:表示在对视图进行更新(插入、删除或修改)操作时必须进行合法性检查,只有当更新操作的结果满足创建视图中谓语条件(即 subquery>子查询的条件表达式)时,该更新操作才被允许。
    7.3.2查询视图
    7.3.3更新视图(插入、删除DELETE、修改UPDATE)
    建立视图的作用不是利用视图来更新数据库的数据,而是简化用户的查询,因此尽量不要对视图执行更新操作。
    7.3.4删除视图
    DROP VIEW viewName>[CASCADE]:级联删除,把该视图和由它导出的所有视图一起删除
    7.1.3索引的定义
    1.索引的建立
    CREATE [UNIQUE][CLUSTERED|NONCLUSTERED]
    INDEX indexName>
    ON tableName>(columnName1>[ASC|DEAC] )
    ONfilegroupName>
    UNIQUE:建立唯一索引
    CLUSTERED|NONCLUSTERED:表示建立聚集或非聚集索引,默认为非聚集索引
    tableName>(columnName1>[ASC|DEAC] ):指出为哪个基本表关于哪些属性建立索引,其中[ASC|DEAC]为按升序还是降序建立索引,默认为升序
    ONfilegroupName>:指定索引存放在哪个逻辑设备(组)上
    2.索引的删除
    DROP INDEX indexName> ON tableName>
    7.2SQL数据更新语言
    在这里插入图片描述
    7.2.1插入数据
    插入一个元组
    INSERT INTO Student VALUS
    (‘1500006’,’李相东’,‘男’,‘1998-10-21 00:00’,‘云南’‘撒呢族’,‘CS1502’)
    INSERT INTO Student(studentName,birthday,studentNo)
    VALUES(‘张东立’,‘1999-12-10 00:00’,‘1500007’)
    插入多个元组
    INSERT INTO tableName [( columnName1 [,columnName2…])]
    subquery
    7.2.2删除数据
    DELETE FROM tableName [WHERE predicate ]
    7.2.3修改数据
    UPDATE Score
    SET score=88
    WHERE courseNo=’002’ AND termNo=’151’ AND studentNo IN
    (SELECT studentNo FROM Student WHERE studentName=’王红敏’)
    也可以写成
    UPDATE Score
    SET score=88
    FROM Score a,Student b
    WHERE a.studentNo=b.studentNo
    AND courseNo=’002’ AND termNo=’151’ AND studentName=’王红敏’
    7.5游标
    一个SQL语句原则上可产生或处理一组记录,而程序语言一次只能处理一个记录,为此必须协调两种处理方式,这是通过使用游标机制来解决的。
    7.7触发器
    触发器是一种特殊的存储过程,触发器的事件可以是插入INSERT、修改UPDATE或删除DELETE事件,也可以是这几个事件的组合。
    在这里插入图片描述
    第九章数据库安全性与完整性
    权限的授予与收回
    GRANT和REVOKE有两种权限:目标权限和命令权限
    1)命令权限的授予与收回(DDL操作权限)
    GRANT{all|command_list}TO{public|username_list}
    REVOKE{all|command_list}FROM{public|username_list}
    <command_list>可以是create database、create default、create function、create procedure、create rule、create table、create view、create index、backup database、backup log
    2)目标权限的授予与收回(DML操作权限)
    GRANT{all|command_list}ON objectName>[(columnName_list>)]
    TO{public|username_list}[WITH GRANT OPTION]
    REVOKE{all|command_list}ON objectName>[(columnName_list>)]
    FROM{public|username_list}[CASCADE|RESTRICT]
    其中<command_list>可以是update、select、insert、delete、execute和all。execute针对存储过程授予执行权限,update、select、insert、delete针对基本表和视图授权,all表示所有的权限。
    CASCADE:级联收回
    RESTRICT:默认值,若转赋了权限,则不能收回。
    WITH GRANT OPTION:将指定对象上的目标权限授予其他安全账户的能力,但是不允许循环授权,即不允许将得到的权限授予祖先。

    数据库的完整性
    在这里插入图片描述

    第4章数据库建模
    数据库设计过程:
    1.需求分析
    2.概念设计 E-R模型建模方法
    3.逻辑设计 将E-R模型转化为关系数据库模式
    4.模式求精
    5.物理设计 建立索引
    6.应用与安全设计
    ER模型向关系模型的转换应遵循如下原则:
    ①每个实体类型转换为一个关系模式。
    ②一个1:1的联系可转换为一个关系模式,或与任意一端的关系模式合并。若独立转换为一个关系模式,那么,两端关系的码及联系的属性为该关系的属性,且两端关系的码均可作为候选码;若与一端合并,那么将另一端的码及联系的属性合并到该端。
    ③一个1:n的联系可转换为一个关系模式,或与n端的关系模式合并,若独立转换为一个关系模式,那么,两端关系的码及联系的属性为关系的模式,而n端的码为关系的码。
    ④一个n:m的联系可转换为一个关系模式,那么,两端关系的码及联系的属性为关系的属性,而关系的码为两端实体的码的组合。
    ⑤三个或三个以上多对多的联系可转换为一个关系模式,那么,诸关系的码及联系的属性为关系的属性,而关系的码为各实体的码的组合。
    ⑥具有相同码的关系可以合并。
    第5章关系数据理论与模式求精
    5.1数据冗余导致的问题:①冗余存储②更新异常③插入异常④删除异常
    5.2函数依赖定义1函数依赖

    在这里插入图片描述

    2平凡与非平凡函数依赖
    非平凡函数依赖

    在这里插入图片描述

    平凡函数依赖

    在这里插入图片描述

    3完全函数依赖和部分函数依赖

    在这里插入图片描述

    4传递函数依赖

    在这里插入图片描述

    5.3范式
    第一范式1NF:关系模式r(R)的每个属性对应的域值都是不可再分的。
    第二范式2NF:非主属性不允许依赖于部分的候选码属性
    第三范式3NF:非主属性不能依赖于另一个(组)非主属性。3NF的放松之处在于允许存在主属性对候选码的传递依赖和部分依赖。3NF存在信息冗余和异常问题。3NF分解即使无损分解,又是保持依赖分解。
    BCNF范式:①α->β是平凡函数依赖(即β⊆α)。
    ②α是r®的一个超码(即α中包含r®的候选码)
    BCNF是基于函数依赖理论能够达到的最好关系模式。BCNF分解是无损分解,但不一定是保持依赖分解。
    5.4函数依赖理论
    左无关属性检测算法
    右无关属性检测算法
    无损连接分解:给定关系模式r(R),则将关系模式r®分解成r1(R1)和r2(R2)的分解是无损连接分解,当且仅当包含函数依赖R1ՈR2->R1或R1ՈR2->R2。
    保持函数依赖:称具有函数依赖集F的关系模式r(R)的分解r1(R1),r2(R2),…rn(Rn)为保持函数分解,当且仅当
    求最小函数依赖集:步骤:①用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;
    ②去掉多余的函数依赖:从第一个函数依赖X->Y开始,将其从F中去掉,然后在剩下的函数依赖中求X的闭包,看是否包含Y,若是,则去掉X->Y,否则不能去掉,依次做下去。直到找不到冗余的函数依赖。
    5.5模式分解算法
    BCNF分解:可将r®分解为r1(R1)和r2(R2),其中R1=αβ,R2=R-(β-α)
    3NF分解:1.计算:①合并函数依赖α->β1,α->β2合并为α->β1β2
    ②去除无关属性:左无关、右无关
    2.分解关系r®
    第8章数据库存储与查询处理
    查询优化:“尽早执行选择操作”
    “尽早执行投影操作”
    “尽早执行选择运算”的规则优先于“尽早执行投影运算”的规则
    第10章事务管理与恢复
    10.1事务特性
    ①原子性:事务的所有操作要么全部都被执行,要么都不被执行
    ②一致性:将数据库从一个一致性状态转化为另一个一致性状态
    ③隔离性:并发执行的各个事务不能相互干扰
    ④永久性:一个事务成功提交后,它对数据库的改变必须是永久的,即使随后系统出现故障也不会受到影响。
    事务开始:BEGIN TRANSACTION
    事务结束:①事务提交:COMMIT TRANSACTION:将成功完成事务的执行结果(即更新)永久化,并释放事务占有的全部资源。
    ②事务回滚:ROLLBACK TRANSACTION:终止当前事务、撤销其对数
    据库所做的更新,并释放事务占有的全部资源。
    事务的并发执行可能出现以下3种不一致性。①读脏数据②不可重复读③丢失更新
    10.2并发控制
    基于封锁的并发控制方法:
    ①共享锁(S锁):如果事务T获得了数据对象Q的共享锁,则T可读但不能写Q.
    ②排它锁(X锁):如果事务T获得了数据对象Q上的排它锁,则T既可读Q又可写Q。
    SL(Q)——申请数据对象Q上的共享锁;
    XL(Q)——申请数据对象Q上的排他锁;
    UL(Q)——释放数据对象Q上的锁。
    10.3恢复与备份
    事务故障:①输入数据的错误、②运算溢出、③违反某些完整性限制、某些应用程序的错误、并发事务发生死锁。
    关于日志的故障恢复策略:数据库中的日志记录有两种类型:①记录数据更新操作的日志记录②记录事务操作的日志记录
    1.UNDO操作:对于要UNDO的事务T,日志中记录有<T,START>以及T对数据库的所有更新操作的日志记录。UNDO过程为:从T的最后一条更新日志记录开始,从日志尾向日志头(反向)依次将T更新的数据元素值恢复为旧值。之所以需要UNDO,是因为故障发生时未提交事务的修改可能已写到磁盘上。
    2.对于要REDO的事务T,日志中已经记录了<T,START>,T的所有更新操作日志以及<T,COMMIT>,REDO过程为:从T的第一条更新日志记录开始,从日志头向日志尾(顺向)依次将T更新的数据元素恢复为新值。需要REDO操作的原因是,故障发生时可能有些已经提交的事务的更新数据还未写到磁盘上。
    并发执行事务的基本恢复过程包括3个阶段:
    ①分析阶段:从日志头开始顺向扫描日志,以确定重做事务集(REDO-set)和撤销事务集(UNDO-set)将既有<T,START>又有<T,COMMIT>日志记录的事务T加入REDO-set;将只有<T,START>没有<T,COMMIT>日志记录的事务T加入UNDO-set。
    ②撤销阶段:从日志尾反向扫描日志,对每一条属于UNDO-set中事务的更新操作日志依次执行UNDO操作。
    ③重做阶段:从日志头顺向扫描日志,对每一条属于REDO-set中事务的更新操作日志依次执行REDO操作。
    检查点:
    在这里插入图片描述

    展开全文
  • 数据库系统原理与设计(万常选版)期末考试练习题和答案详解
  • 掌握数据库开发工具的使用以及综合编程调试的能力,结合数据库原理的基本理论,选用一种现代关系数据库系统设计一个具体的信息管理系统,具备基本的数据库编程能力,为以后能进行数据库系统设计、开发维护打下...
  • 就是有关数据库系统原理与设计的复习大纲。老师给的有需要拿去用。万常选版得
  • 数据库系统原理与设计实验教程》实验七,详细SQL语言
  • 数据库系统原理与设计(万常选版)整本书练习题和详细答案详解
  • 数据库系统原理与设计实验教程》实验一,详细SQL语音,还附上结果图片
  • 数据库系统原理与设计实验教程》实验八,详细SQL语言
  • 数据库原理与设计课后实验报告,数据库原理与设计淘红才第三版,亲测有效,在自己计算机上一个一个打出来的经过实验。
  • 数据库系统原理与设计第二版课后答案 篇一数据库系统原理与设计万常选版整本书练习 题和详细答案详解 第一章绪论 一选择题 1-dbs是采用了数据库技术的计算机系统dbs是一个集合体包 含数据库计算机硬件软件和 系统...
  • 3.1 查询2019年出生的读者姓名、工作单位、身份证号 SELECT readerName,workUnit,...3.2查询图书名中含有“数据库”的图书的详细信息 SELECT * FROM book WHERE bookName LIKE '%数据库%'; 3.3查询在2015...

    3.1 查询2019年出生的读者姓名、工作单位、身份证号
    SELECT readerName,workUnit,identifycard FROM reader WHERE identifycard LIKE '%1991%';


    3.2查询图书名中含有“数据库”的图书的详细信息
    SELECT * FROM book WHERE bookName LIKE '%数据库%';


    3.3查询在2015——2016年之间入库的图书编号、出版时间、入库时间和图书名称,并按入库时间的降序排序输出
    SELECT bookNo,publishingDate,shopDate,bookName FROM book

    WHERE year(shopDate) IN (2015,2016) ORDER BY shopDate DESC;


    3.4查询读者“喻自强”借阅的图书编号、图书名称、借书日期和归还日期
    SELECT a.bookNo,bookName,borrowDate,returnDate FROM borrow a,book b,reader c 
    WHERE a.bookNo=b.bookNo AND a.readerNo=c.readerNo AND readerName='喻自强';


    3.5查询借阅了清华大学出版社出版的图书的读者编号、读者姓名、图书名称、借书日期和归还日期
    SELECT a.readerNo,readerName,bookName,borrowDate,returnDate FROM reader a,borrow b,book c,publisher d
    WHERE a.readerNo=b.readerNo AND b.bookNo=c.bookNo AND c.publisherNo=d.publisherNo

                   AND publisherName='清华大学出版社';


    3.6查询会计学院没有归还所借图书的读者编号、读者姓名、图书名称、借书日期和应归还日期
    SELECT a.readerNo,readerName,bookName,borrowDate,shouldDate FROM reader a,borrow b,book c
    WHERE a.readerNo=b.readerNo AND b.bookNo=c.bookNo AND returnDate IS NULL;


    3.7查询在2015—2016年之间借阅但还未归还图书的读者编号、读者姓名、以及这些借阅为归还图书的图书编号、图书名称和借书日期

    SELECT a.readerNo,readerName,c.bookNo,bookName,borrowDate FROM reader a,borrow b,book c
    WHERE a.readerNo=b.readerNo AND b.bookNo=c.bookNo AND  year(borrowDate) IN (2015,2016) AND returnDate IS NULL;


    3.8查询每种类别图书的分类号、分类名称、最高价格和平均价格,并按最高价格的升序输出

    SELECT a.classNo,className,max(price),avg(price) FROM book a,bookclass b
    WHERE a.classNo=b.classNo GROUP BY classNo ORDER BY max(price);


    3.9查询每个读者在借(即借阅未完归还)的图书数量、读者编号、读者姓名、工作单位,并按借书数量的降序排序输出

    SELECT count(bookNo),a.readerNo,readerName,workUnit FROM reader a,borrow b
    WHERE a.readerNo=b.readerNo GROUP BY bookNo ORDER BY count(bookNo) DESC;


    3.10查询每个出版社出版的每种类别的图书的平均价格,要求显示出版社名称、图书类别名称和平均价格

    SELECT publisherName,className,avg(price) FROM book a,bookclass b,publisher c
    WHERE a.classNo=b.classNo AND a.publisherNo=c.publisherNo GROUP BY publisherName,className;


    3.11查询在借图书的总价不低于200元的读者编号、读者姓名和在借图书总价

    SELECT a.readerNo,readerName,sum(price) FROM reader a,borrow b,book c
    WHERE a.readerNo=b.readerNo AND b.bookNo=c.bookNo AND returnDate IS NULL
    GROUP BY readerNo HAVING sum(price)>=200;


    3.12查询从来没有借过书的读者姓名和工作单位

    使用IN子查询:

    SELECT readerName,workUnit FROM reader 
    WHERE readerNo NOT IN (SELECT readerNo FROM borrow);

    使用存在量词子查询:

    SELECT readerName,workUnit FROM reader x
    WHERE NOT EXISTS (SELECT * FROM borrow a WHERE x.readerNo=a.readerNo);


    3.13查询目前没有在借“经济类”图书的读者编号、读者姓名和出生日期

    IN子查询:

    SELECT readerNo,readerName,SUBSTR(identifycard FROM 7 FOR 8) 出生日期 FROM reader 
    WHERE readerNo NOT IN 
          (SELECT readerNo FROM borrow WHERE bookNo IN 
                        (SELECT bookNo FROM book WHERE classNo IN 
                                        (SELECT classNo FROM bookclass WHERE className LIKE '%经济类%'))); 

    存在量词子查询:

    SELECT readerNo,readerName,SUBSTR(identifycard FROM 7 FOR 8) 出生日期 FROM reader x
    WHERE NOT EXISTS 
          (SELECT * FROM borrow a,book b,bookclass c 
                 WHERE x.readerNo=a.readerNo AND a.bookNo=b.bookNo AND b.classNo=c.classNo 
                       AND className LIKE '%经济类%'); 


    3.14查询既借阅过“政治经济学”图书又借阅过“数据库系统概念”图书的读者编号、读者姓名以及这两种图书的图书名称、借书日期和归还日期

    SELECT a.readerNo,readerName,bookName,borrowDate,returnDate FROM reader a,borrow b,book c
    WHERE a.readerNo=b.readerNo AND b.bookNo=c.bookNo AND bookName IN ('政治经济学','数据库系统概念') 
          AND a.readerNo IN 
                (SELECT readerNo FROM borrow,book 
                 WHERE borrow.bookNo=book.bookNo AND bookName='政治经济学' AND readerNo IN 
                       (SELECT readerNo FROM borrow,book WHERE borrow.bookNo=book.bookNo AND bookName='数据库系统概念'));


    3.15查询借阅过图书名称中包含“数据库”的所有图书的读者编号、读者姓名以及他们所借阅的这些图书的图书名称、借阅日期和归还日期

    SELECT a.readerNo,readerName,bookName,borrowDate,returnDate FROM reader a,borrow b,book c
    WHERE a.readerNo=b.readerNo AND b.bookNo=c.bookNo AND bookName LIKE '%数据库%';


    3.16查询至少借阅过读者“张小娟”所借阅过的所有图书的读者编号、读者姓名和工作单位

    SELECT a.readerNo,readerName,workUnit FROM reader a RIGHT JOIN borrow b ON a.readerNo=b.readerNo
    WHERE bookNo IN
          (SELECT bookNo FROM reader a,borrow b WHERE a.readerNo=b.readerNo  AND readerName='张小娟')
    GROUP BY readerNo
    HAVING count(DISTINCT bookNo)>=3;


    3.17查询至少有三本在借图书的读者编号、读者姓名以及在借图书的图书编号、图书名称,按读者编号升序、借阅日期降序排序输出

    SELECT a.readerNo,readerName,c.bookNo,bookName FROM reader a,borrow b,book c
    WHERE a.readerNo=b.readerNo AND b.bookNo=c.bookNo AND returnDate IS NULL 
    GROUP BY readerNo HAVING count(b.bookNo)>=3;

     

    展开全文
  • 数据库系统原理课程设计,大学期末作业,做了一个图书管理系统,包括源码好文档报告
  • 数据库系统原理与设计(第3版)第二章课后习题

    千次阅读 多人点赞 2021-03-25 23:52:49
    8 所示的成绩管理数据库 ScoreDB 的模式导航图, 根据图 2-11 所示的实例数 据, 试写出如下查询的关系代数表达式, 并给出其查询结果。 (1) 查找籍贯为“上海” 的全体学生。 σnative = ‘上海’(Student) (2...

    第二章课后习题
    2. 8. 对于图 2. 8 所示的成绩管理数据库 ScoreDB 的模式导航图, 根据图 2-11 所示的实例数
    据, 试写出如下查询的关系代数表达式, 并给出其查询结果。
    (1) 查找籍贯为“上海” 的全体学生。
    σnative = ‘上海’(Student)

    (2) 查找 2000 年元旦以后出生的全体男同学。
    σyear(birthday)>=2000∧sex=’男’(Student)

    (3) 查找信息学院非汉族同学的学号、 姓名、 性别及民族。
    ∏studentNo, studenName, sex, nation (σnation! =’汉族 ‘(Student) ⋈ ( σ institute=’信息学院’(Class) ) )

    (4) 查找2016-2017学年第二学期(16172) 开出课程的编号、 名称和学分。
    ∏courseNo, courseName, courseHour (Course ⋈ (σ term=’16172’ (Score)))

    (5) 查找选修了“操作系统” 的学生学号、 成绩及姓名。
    ∏ studentNo, score ,studenName(Student ⋈(Score ⋈(∏ courseNo ( σ courseName=’操作系统’(Course) ) )))

    (6) 查找班级名称为“会计学 15(3) 班” 的学生在2015-2016学年第一学期(15161) 选课情况, 要求显示学生姓名、 课程号、 课程名称和成绩。
    ∏studenName, courseNo, courseName, score ( ( σ className=’会计学 15(3)班’Class) ⋈Student ⋈ ( σ term=’15161’Score) ⋈Course)

    (7) 查找至少选修了一门其直接先修课编号为 CS012 的课程的学生学号和姓名。
    ∏ studenNo, studentName ( ( σpriorCourse=’ CS012’(Course)) ⋈Score ⋈Student)

    (8) 查找选修了2016-2017 学年第一学期(16171) 开出的全部课程的学生学号和姓名。
    ∏studenNo, studentName (Score )÷ ( ∏ courseNo ( σ term=’ 16171’(Score) )⋈Student)

    (9) 查找至少选修了学号为 1503010的学生所选课程的学生学号和姓名。
    ∏ studenNo, studentName (Score)÷(∏ courseNo ( σstudentNo=’ 1503010’(Score) )⋈Student)

    2.9 对于图 2-10 所示的学生选课数据库 SCDB 的模式导航图, 试写出如下查询的关系代数
    表达式。
    (1) 查找 2016 级蒙古族学生信息, 包括学号、 姓名、 性别和所属班级。
    ∏studenNo, studentName, sex, classNo ((σnation=’蒙古族 ‘(Student) )⋈ ( σ grade=2016 Class) )

    (2) 查找“C 语言程序设计” 课程的课程班号、 上课时间以及上课地点。
    ∏cClassNo, time, location ((σcourseName=’C语言程序设计’(Course) )⋈CourseClass ⋈ Classroom)

    (3) 查找选修了先修课程为“计算机概论” 的学生学号、 课程号和成绩。
    ∏studenNo, courseNo, score ((∏C1. courseNo ((ρC1 Course) ⋈C1. priorCourse=C2. courseNo ( σ courseName=’计算机概论’(ρC2 Course)) )) ⋈SC)

    (4) 查找李勇老师 2016-2017 学年第二学期(16172) 开出的课程号、 课程名和学分。
    ∏courseNo, courseName, creditHour (( ∏ teacherNo (σteacherName’李勇’(Teacher))) ⋈( σterm=’16172’(CourseClass) )⋈Course)

    (5) 查找信息学院学生选课情况, 要求显示学生姓名、 课程号、 课程名、 课程班号、 成绩和任课教师。
    ∏studentName, courseNo, courseName, cClassNo, score, teacherName ((∏instituteNo (σinstituteName=’信息学院’(Institute))) ⋈ Class ⋈Student ⋈SC ⋈Course ⋈CourseClass ⋈Teacher)

    展开全文
  • 数据库系统原理与设计实验教程实验1.doc
  • 数据库系统原理与设计_考试复习,清华大学出版社,万常选版。
  • 数据库系统原理与设计(第2版)万常选版第1章数据库系统概论课后答案.pdf
  • 3.1 查询1991年出生的读者姓名、工作单位和身份证号。 SELECT readerName,workUnit,identitycard ...3.2 查询图书名中含有“数据库”的图书的详细信息。 SELECT * FROM Book WHERE bookName LIKE ‘%数据库%’ 3...

    3.1 查询1991年出生的读者姓名、工作单位和身份证号。
    SELECT readerName,workUnit,identitycard
    FROM Reader
    WHERE SUBSTRING(identitycard,7,4) =‘1991’
    3.2 查询图书名中含有“数据库”的图书的详细信息。
    SELECT *
    FROM Book
    WHERE bookName LIKE ‘%数据库%’
    3.3 查询在2015-2016年之间入库的图书编号、出版时间、入库时间和图书名称,并按入库时间降序排序输出。
    SELECT bookNo,bookName,publishingDate,shopDate
    FROM Book
    WHERE YEAR(shopDate) BETWEEN 2015 AND 2016
    ORDER BY shopDate DESC
    3.4 查询读者“喻自强”借阅的图书编号、图书名称、借书日期和归还日期。
    SELECT Book.bookNo,bookName,borrowDate,returnDate
    FROM Book,Borrow
    WHERE Book.bookNo=Borrow.bookNo AND readerNo IN(
    SELECT readerNo
    FROM Reader
    WHERE readerName=‘喻自强’ )
    3.5 查询借阅了清华大学出版社出版的图书的读者编号、读者姓名、图书名称、借书日期和归还日期。
    SELECT Reader.readerNo,readerName,bookName,borrowDate,returnDate
    FROM Reader,Borrow,Book,Publisher
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo
    AND Publisher. PublisherNo= Book. PublisherNo AND publisherName=‘清华大学出版社’
    3.6 查询上海生物研究室没有归还所借图书的读者编号、读者姓名、图书名称、借书日期和应归还日期。
    SELECT Reader.readerNo,readerName,bookName,borrowDate,shouldDate
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo
    AND workUnit=‘上海生物研究室’ AND returnDate IS NULL
    3.7 查询在2015-2016年之间借阅但没有归还图书的读者编号、读者姓名、读者工作单位以及这些借阅未归还图书的图书编号、图书名称和借书日期(分别使用IN子查询和存在量词子查询表达)。
    SELECT a.readerNo,readerName,workUnit,c.bookNo,bookName, borrowDate
    FROM Reader a,Borrow b,Book c
    WHERE a.readerNo=b.readerNo AND b.bookNo=c.bookNo AND returnDate IS NULL AND a.readerNO IN(
    SELECT readerNo
    FROM Borrow
    WHERE YEAR(borrowDate) BETWEEN 2015 AND 2016 AND returnDate IS NULL )
    3.8 查询每种类别的图书分类号、分类名称、最高价格和平均价格,并按最高价格的降序输出。
    SELECT Book.classNo,BookClass.className,MAX(price) AS maxPrice,AVG(price) AS avgPrice
    FROM Book,BookClass
    WHERE Book.classNo=BookClass.classNo
    GROUP BY Book.classNo,className
    ORDER BY MAX(price) DESC
    3.9 查询每个读者在借(即借阅未归还)的图书数量、读者编号、读者姓名和工作单位,并按借书数量的降序排序输出。
    SELECT Reader.readerNo,Reader.readerName,Reader.workUnit,COUNT() AS 未归还图书数量
    FROM Reader,Borrow
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.returnDate IS NULL
    GROUP BY Reader.readerNo,Reader.readerName,Reader.workUnit
    3.10查询每个出版社出版的每种类别的图书平均价格,要求显示出版社名称、图书类名称和平均价格。
    SELECT Publisher.publisherName,BookClass.className,AVG(price) AS 平均价格
    FROM Book,Publisher,BookClass
    WHERE Book.classNo=BookClass.classNo AND Book.publisherNo=Publisher.publisherNo
    GROUP BY Book.publisherNo, Publisher.publisherName,BookClass.className
    3.11 查询所借图书的总价不低于200元的读者编号、读者姓名和所借图书的总价。
    SELECT Reader.readerNo,readerName,SUM(price) AS money
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo
    AND returnDate IS NULL
    GROUP BY Reader.readerNo,readerName
    HAVING SUM(price)>200
    3.12查询从来没有借过书的读者姓名和工作单位(分别使用IN子查询和存在量词子查询表达)
    –use IN
    SELECT readerName,workUnit FROM Reader
    WHERE readerNo NOT IN(
    SELECT readerNo FROM Borrow )
    –use EXISTS
    SELECT readerName,workUnit FROM Reader
    WHERE NOT EXISTS(
    SELECT * FROM Borrow WHERE Reader.readerNo=Borrow.readerNo)
    3.13 查询没有借阅“经济类”图书的读者编号、读者姓名和出生日期(分别使用IN子查询和存在量词子查询表达)。
    –use IN
    SELECT Reader.readerNo,readerName,SUBSTRING(identitycard,7,8) AS birthday
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo AND returnDate IS NULL AND Book.classNo NOT IN(
    SELECT classNo FROM BookClass WHERE className=‘经济类’ )
    –use EXISTS
    SELECT Reader.readerNo,readerName,SUBSTRING(identitycard,7,8) AS birthday
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo AND returnDate IS NULL AND NOT EXISTS (
    SELECT * FROM BookClass WHERE className=‘经济类’ AND Book.classNo=BookClass.classNo )
    3.14 查询既借阅了“政治经济学”图书又借阅了“数据库系统概念”两本图书的读者编号、读者姓名以及这两种图书的图书名称、借书日期和归还日期。
    SELECT Reader.readerNo,readerName,bookName,borrowDate,returnDate
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo
    AND (bookName=‘政治经济学’ OR bookName=‘数据库系统概念’)
    AND Reader.readerNo IN(
    SELECT readerNo FROM Borrow WHERE bookNo IN(
    SELECT bookNo FROM Book WHERE bookName=‘政治经济学’ ) )
    AND Reader.readerNo IN(
    SELECT readerNo FROM Borrow WHERE bookNo IN(
    SELECT bookNo FROM Book WHERE bookName=‘数据库系统概念’ ) )

    SELECT Reader.readerNo,readerName,borrowDate,bookName
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo
    AND (bookName=‘政治经济学’ OR bookName=‘数据库系统概念’)
    AND Reader.readerNo IN
    (SELECT Reader.readerNo
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo
    AND bookName=‘政治经济学’
    AND Reader.readerNo IN (
    SELECT Borrow.readerNo FROM Borrow,Book
    WHERE Borrow.bookNo=Book.bookNo AND bookName=‘数据库系统概念’))
    3.15 查询借阅过图书名称中包含“数据库”的所有图书的读者编号、读者姓名以及他们所借阅的这些图书的图书名称、借阅日期和归还日期。
    SELECT Reader.readerNo,Reader.readerName,Book.bookName,Borrow.borrowDate,Borrow.returnDate
    FROM Book,Reader,Borrow
    WHERE Book.bookNo=Borrow.bookNo AND Reader.readerNo=Borrow.readerNo
    AND returnDate IS NOT NULL AND bookName LIKE ‘%数据库%’
    3.16 查询至少借阅过读者“张小娟”所借阅过的所有图书的读者编号、读者姓名和工作单位。
    SELECT readerNo,readerName,workUnit
    FROM Reader r
    WHERE NOT EXISTS(
    SELECT * FROM Borrow b1,Reader r1 WHERE b1.readerNo=r1.readerNo AND readerName=‘张小娟’
    AND NOT EXISTS(
    SELECT * FROM Borrow b2
    WHERE b2.bookNo=b1.bookNo AND B2.readerNo=r.readerNo ) )
    3.17 查询至少有3本在借图书的读者编号、读者姓名以及在借图书的图书编号、图书名称,并按读者编号升序、借阅日期降序排序输出。
    SELECT Reader.readerNo,readerName,Book.bookNo,bookName
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo AND
    returnDate IS NULL AND Reader.readerNo IN(
    SELECT readerNo FROM Borrow
    WHERE returnDate IS NULL GROUP BY readerNo HAVING COUNT(
    )>=3 )
    ORDER BY Reader.readerNo
    3.18 查询所借阅的图书(包括已归还的图书)总价最高的读者编号、读者姓名和出生日期。
    SELECT readerNo,readerName,SUBSTRING(identitycard,7,8) AS birthday
    FROM Reader
    WHERE readerNo IN(
    SELECT readerNo FROM Borrow,Book
    WHERE Borrow.bookNo=Book.bookNo
    GROUP BY readerNo HAVING SUM(price) >=ALL(
    SELECT SUM(price) FROM Borrow,Book
    WHERE Borrow.bookNo=Book.bookNo
    GROUP BY readerNo ))

    第七章
    7.2 在图书管理数据库BookDB中用SQL语句完成如下操作
    (1) 将“经济管理”类图书的单价提高10%。
    UPDATE Book
    SET price=price1.1 WHERE classNo IN(
    SELECT classNo FROM BookClass WHERE className=‘经济类’ )
    (2) 将入库数量最多的图书单价下调5%。
    UPDATE Book
    SET price=price
    0.95 WHERE shopNum =
    (SELECT MAX(SHOPNUM) FROM BOOK)
    (3)删除读者“张小娟”的借书记录
    DELETE FROM Borrow WHERE readerNo IN
    (SELECT readerNo FROM Reader WHERE Reader.readerName=‘张小娟’)
    (4)创建一个视图,该视图为所借图书的总价在60元以上的读者编号、读者姓名和所借图书的总价。
    CREATE VIEW BookView1 AS
    SELECT Reader.readerNo,readerName,SUM(price) AS money
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo
    GROUP BY Reader.readerNo,readerName
    HAVING SUM(price)>=60
    (5)创建一个视图,该视图为年龄在25-35岁之间的读者,属性列包括读者编号、读者姓名、年龄、工作单位、所借图书名称和借书日期。
    CREATE VIEW BookView2 AS
    SELECT Reader.readerNo,readerName,SUBSTRING(identitycard,7,8) AS birthday,workUnit,bookName,borrowDate
    FROM Reader,Borrow,Book
    WHERE Reader.readerNo=Borrow.readerNo AND Borrow.bookNo=Book.bookNo
    AND year(getdate())-CONVERT(int,SUBSTRING(identitycard,7,4)) BETWEEN 25 AND 35
    (6)创建一个视图,该视图仅包含“清华大学出版社”在2015–2016年出版的“计算机类”的图书基本信息。
    CREATE VIEW BookView3 AS
    SELECT * FROM Book
    WHERE publisherNo =
    (SELECT publisherNo FROM Publisher WHERE publisherName= ‘清华大学出版社’)
    AND YEAR(publishingDate) IN(2015,2016)
    AND classNo=(SELECT classNo FROM BookClass WHERE className=‘计算机类’)
    (7)对由题(6)所建立的视图进行插入、删除和更新操作。
    INSERT BookView3
    VALUES(‘0000001’,‘003’,‘Linux网络技术’,‘王波’,‘P005’, 28,‘2014-5-1’, ‘2015-1-11’,80)
    DELETE BookView3 WHERE bookName LIKE ‘Linux%’
    UPDATE BookView3 SET shopNum=shopNum+10

    INSERT BookView3
    VALUES(‘0000003’,‘003’,‘Linux网络技术’,‘王波’,‘P002’, 28,‘2015-5-1’, ‘2016-1-11’,80)

    展开全文
  • (1)数据库系统原理与设计(万常选版)整本书练习题和详细答案详解 https://wenku.baidu.com/view/4c661b8252ea551811a68700.html (2)数据库系统原理与设计(万常选版)整本书练习题和详细答案详解 ...
  • SQL查询语言的重要性不言而喻,故而整理SQL查询语言的知识点,意在系统地理解知识,不那么杂乱。
  • 数据库系统原理与设计数据库系统原理与设计数据库系统原理与设计数据库系统原理与设计数据库系统原理与设计
  • ScoreDB2017(mysql)数据库系统原理与设计(第三版)课程知识的相关数据库运行文件,mysql版。
  • 数据库系统原理与设计》课后答案 (第四版,王珊,萨师煊)《数据库系统原理与设计》课后答案 (第四版,王珊,萨师煊)
  • 数据库原理与应用第三版_习题参考答案
  • 数据库系统原理与设计实验教程》实验二,详细SQL语音
  • 经过需求调研分析,该数据库系统主要包含以下信息。 1)商品信息:主要包括商品名称,商品编号,商品的销售价格,商品的进货价格,商品的类型和该商品的供应商等信息。 2)订单信息:主要包括订单编号,购买客户,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 315,215
精华内容 126,086
关键字:

数据库系统原理与设计