客房管理系统数据库设计与SQL查询实战
客房管理系统数据库设计与SQL查询实战
本文档详细介绍了如何根据《客房管理系统》需求,完成数据库创建、数据表创建以及数据操作任务。
1. 创建数据库
CREATE DATABASE db_07;
2. 创建数据表
2.1 tb_kefang客房表
| 字段名 | 中文说明 | 字段类型 | 字段大小 | 是否为空 | 其它 | |---|---|---|---|---|---| | fid | 客房编号 | int | | false | 主键(由楼层和房间号组成) | | ftype | 房间类型 | varchar | 20 | false | | | fprice | 房价 | float | | false | | | fkzrs | 可住人数 | int | | false | | | fyzrs | 已住人数 | int | | false | 默认值为0 | | fcnt | 入住统计 | int | | false | 默认值为0 |
CREATE TABLE tb_kefang (
fid INT PRIMARY KEY,
ftype VARCHAR(20) NOT NULL,
fprice FLOAT NOT NULL,
fkzrs INT NOT NULL,
fyzrs INT DEFAULT 0,
fcnt INT DEFAULT 0
);
2.2 tb_dengji登记表
| 字段名 | 中文说明 | 字段类型 | 字段大小 | 是否为空 | 其它 | |---|---|---|---|---|---| | did | 编号 | int | | false | 主键 | | dname | 客户名 | varchar | 20 | false | | | dfid | 房间编号 | int | | false | 外键(客房表 fid) | | dyj | 押金 | float | | false | | | drz | 入住时间 | datetime | | false | 默认为当前日期 | | dtf | 退房时间 | datetime | | true | |
CREATE TABLE tb_dengji (
did INT PRIMARY KEY,
dname VARCHAR(20) NOT NULL,
dfid INT NOT NULL,
dyj FLOAT NOT NULL,
drz DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
dtf DATETIME
);
3. 添加数据
-- tb_kefang数据
INSERT INTO tb_kefang (fid, ftype, fprice, fkzrs, fyzrs, fcnt)
VALUES (101, '双人间', 108, 2, 0, 101),
(102, '单人间', 98, 1, 0, 550),
(103, '豪华间', 168, 2, 0, 324),
(201, '麻将房', 208, 4, 0, 0);
-- tb_dengji数据
INSERT INTO tb_dengji (did, dname, dfid, dyj, drz, dtf)
VALUES (1, '喜来乐', 101, 100, '2018-09-01', '2018-09-02'),
(2, '喜来乐', 101, 100, '2019-09-01', '2019-09-02'),
(3, '王老五', 102, 100, '2018-10-05', '2018-10-08'),
(4, '大麻子', 201, 200, '2019-09-05', '2019-09-10');
4. SQL查询语句
4.1 查询所有住过101客房的客户名
SELECT dname FROM tb_dengji WHERE dfid = 101;
4.2 查询101房间的房间类型
SELECT ftype FROM tb_kefang WHERE fid = 101;
4.3 tb_kefang表中按价格降序排序
SELECT * FROM tb_kefang ORDER BY fprice DESC;
4.4 查询tb_kefang表中的房间号、房间类型、价格
SELECT fid, ftype, fprice FROM tb_kefang;
4.5 查询喜来乐在该酒店一共住了多少天
SELECT SUM(DATEDIFF(dtf, drz)) AS stay_days FROM tb_dengji WHERE dname = '喜来乐';
4.6 查询所有2019年9月份入住的客户名、房间号
SELECT dname, dfid FROM tb_dengji WHERE YEAR(drz) = 2019 AND MONTH(drz) = 9;
4.7 查询tb_dengji表中客户名、房间编号、房间类型
SELECT tb_dengji.dname, tb_dengji.dfid, tb_kefang.ftype
FROM tb_dengji
JOIN tb_kefang ON tb_dengji.dfid = tb_kefang.fid;
4.8 查询押金大于100的客户所住的房间类型
SELECT tb_kefang.ftype
FROM tb_dengji
JOIN tb_kefang ON tb_dengji.dfid = tb_kefang.fid
WHERE dyj > 100;
5. 保存SQL脚本
将以上所有SQL代码保存为.sql格式文件,即可方便地进行数据库创建、数据导入和查询操作。
原文地址: https://www.cveoy.top/t/topic/fwZx 著作权归作者所有。请勿转载和采集!