当前位置: 首页 > news >正文

5.11【数据库】第一次实验

民宿预定,至少有不同的民宿,民宿下面有不同的房间(面积,房间编号)

房间类型,单价,

可预订以及不可预订

游客信息

订单信息

公司有很多课程,

学生,课程

每位学生每期只能参加一门课程

一个课程可以由多个学生选择,一个学生只可以选择一门课程。一个学生在一期内只能参加一门课程,必须考虑“每期课程”的概念

Record作为一个实体集,弱实体集,综合了期,课程,学生的信息,主键是学期主键和学生主键,学生参加课程的行为是弱实体。

课程表与Record表之间存在一对多的关系,就是同一个课程在Record当中可能有多个记录

一位老师参与多门课,多位老师独立上同一门课

排课表,一个课程可以安排多次排课,一个排课对应一个独立的授课安排,

不同老师的马原课是同一课程,引用COURSE表中同一记录的主键作为外键,但是是不同的排课,排课表的主键是组合主键(课程编号+排课编号)

SELECT H.NAME,R.TYPE,COUNT(*)AS ROOMCOUNT FROM HOTEL AS H,ROOM AS R WHERE H.HOTELNO=R.HOTELID GROUP BY H.NAME,R.TYPE

从民宿表,房间表,筛选民宿ID和房间ID相同(即连接上,就是房间表里很多的房间,分属于不同的民宿,通过筛选民宿ID来进行选择)

投影到姓名,房间号,筛选从预定表里筛选,在民宿表里,固定城市为长沙,名称为华天宾馆,然后在预定表里,要求预定时间为2019-09-29,最后就是连接,客户编号和预定表里编号一致,房间编号和预定表里的一致

投影到名称,类型与价格,从民宿表,房间表,价格表里找,在民宿表里限定城市为长沙,类型限定,价格限定,最后排序

SELECT COUNT(DISTINCT GUESTNO) FROM 

投影的位置选择聚合函数COUNT,里面是DISTINC,数GUESTNO并对其去重,从预定表里去选,限定条件是日期在2019-08-01与2019-09-01之间,即八月份

从预定表里选,要求该数据项为空

从民宿表里选,在投影位置选择聚合函数COUNT对每一行进行计数

以城市为分组,就是在最后先GROUP BY CITY,在投影区域,投到城市,以及聚合函数AVG上(r.price),即对满足条件的每组的城市的价格求一个平均,从民宿表和房间表里

投影到城市名称、类型、平均价格,从民宿表,房间表,要求民宿名称,而且民宿表的民宿编号和房间表的民宿编号一致(这个就相当于把民宿表和房间表连接到了一起),按在不同城市以及房间类型进行分组

从预订表,民宿表,客户表里选,客户表里要求户籍地是北京,然后预订表要求预订日期,联合要求预订的民宿表和预订表中的一致,客户表里的和预定表里的一致(即把三个表连接到了一起,从逻辑上,预定订单不一定需要订单单号,)

从民宿表,房间表里选,要求民宿表编号和房间表里的民宿表编号一致,民宿表里的城市,民宿表里的名称

这个预定表里就是只有民宿和用户的编号以及房间编号,没有订单单号

从预订表,民宿表里选,还要从房间表里选,要求民宿编号和预订表里的编号一致,预订表里和房间表里一致(连接三 个表),预订表里要求时间

??为什么要连接这么多

从房间表,民宿表里选,要求房间表里的民宿编号和民宿表的一致,民宿表要求城市与名称,对于房间编号,要求不在一个子查询里,这个查询是(

从预订表,民宿表和房间表里选,要求预订表的民宿编号和民宿表的一致,预订表的民宿编号和房间表的民宿编号一致,都是与B连接,核心思路是通过预订表唯一确定上一个房间与一个民宿,这样才能进行连接,而要唯一确定出房间,就必须要确定其民宿编号,这是连接了三个表,练完后对预订日期做限制)

从民宿表,预订表,房间表里选,是要返回每个旅馆的房间入住率,城市名称、宾馆名称、入住率,前两个东西是直接从民宿表里获取的(不用去重,因为民宿表里本身就没有重的)

对于入住率,也不只是从民宿表一个表里取得的,利用子查询完成,是要让入住的除以总共的即可

对于入住的总数,从民宿表,预订表里选,预订表里的所有数据数量加以限制后就是入住的总数,即对时间做限制,预订表的民宿编号和民宿表的一致,COUNT(*)就是统计所有的数量)

对于房间总数,从房间表里查,要求房间表的民宿编号和民宿表的一致(相当于通过确定某一民宿编号后,那么房间表里就只有这个编号对应下的民宿里的房间),然后在房间表里去数总数量,最外面的HOTEL AS H就是逐行确认一个房间编号,按照出现的顺序依次去进行遍历

要返回房间号,价格,从民宿表,房间表里去选,先民宿后房间,对于民宿要求名称和城市,然后对于房间要求其民宿编号和刚才确认的民宿编号一致,接着对房间表继续做限制,要求类型是双人间,

还要要求房间没被其他人预订过,这个就要求进行一次子查询,子查询返回的结果是房间编号,即已经在相应时间内被预订过的房间编号,那么就是要求上述的房间编号不在这个编号组内,这个就要求在三个表内去查询,这个顺序的话,是先确定的房间编号,然后民宿编号,要求预订表里的编号和之前的房间编号一致,和之前的民宿编号一致,

投影到类型,聚合函数为MAX,从预订表里选,要求时间

表示触发事件的操作表名

表示任何一条记录上的操作满足触发事件都会触发该触发器

执行语句,INSERT只有NEW是合法的,表示当前已插入的记录对于DELETE只有OLD才合法

UPDATE可以和NEW以及OLD同时使用

存储过程

存储过程就是SQL的代码封装与重用

参数分为IN,OUT,INOUT,IN表示接收调用者传入的数据,OUT表示向调用者返回数据

该参数的值必须由调用程序指定;OUT表示经过存储过程计算后,返回给调用程序

语句的SELECT相当于一个输出

@就是相当于定义了

这个就是一个纯打印,输入参数是起始日期,结束日期和酒店的编号

从房间表,民宿表里选,要求房间表和民宿表的编号对应,然后房间编号不在子查询的结果里

子查询的结果是:满足日期在范围内的编号

当主表没有对应记录,不能将记录加到子表里,即学生成绩表中不能出现没有的学号

删除成绩表,先删子表后删主表

被引用的列具有主键约束或者唯一性,用来建立和强加两个表数据之间的连接

外键是用来建立表与表之间关系的字段

外键可以用来确保所选课程在课程表内,保持数据一致性

http://www.lryc.cn/news/495888.html

相关文章:

  • 【CSS in Depth 2 精译_062】第 10 章 CSS 中的容器查询(@container)概述 + 10.1 容器查询的一个简单示例
  • 蓝桥杯每日真题 - 第23天
  • # Vue 入门级教程三
  • hint: Updates were rejected because the tip of your current branch is behind!
  • PHP 方头像转为圆图
  • centos 7 离线安装postgis插件
  • pyinstaller打包的时候将ffmpeg也加进包中(包括打包文件夹的方法)
  • JVM面试知识点1
  • wordpress
  • Day33 动态规划part02
  • 渗透测试之Web基础之Linux病毒编写——泷羽sec
  • jmeter基础07_组件的层级
  • Nginx反向代理和负载均衡配置
  • 【379】基于springboot的防疫物资管理信息系统
  • Linux 各个目录作用
  • 【Linux】文件操作的艺术——从基础到精通
  • java中的运算符
  • 全面解析 C++ STL 中的 set 和 map
  • css:怎么设置div背景图的透明度为0.6不影响内部元素
  • Kubernetes ConfigMaps
  • 前端热门面试题目[一](HTML、CSS、Javascript、Node、Vue、React)
  • Swift 宏(Macro)入门趣谈(五)
  • ES6 Set、Map、WeakSet、WeakMap 四者辨析与实战应用详解
  • 【数据结构】哈希表实现
  • Verilog的线与类型与实例化模块
  • 芯片测试-RF中的S参数,return loss, VSWR,反射系数,插入损耗,隔离度等
  • 强化学习的几个主要方法(策略梯度、PPO、REINFORCE实现等)(上)
  • Git远程仓库操作
  • GAGAvatar: Generalizable and Animatable Gaussian Head Avatar 学习笔记
  • 什么是VISUAL STUDIO CODE (V S CODE)