写一个只用sql语言的学生宿舍管理系统 要求 1)学生表,包含学生姓名,学生id,年龄,性别,电话,班级,年级,学院,专业,缴费情况,所属宿舍。 2)宿舍楼表 ,包含宿舍管理员,楼id,宿管id,楼位置,楼名称。 3)宿舍表,包含宿舍id,宿舍所属楼层,宿舍朝向,已入住人数,最大入住人数,宿舍价格,所属楼id。 4)宿舍管理员表,包含 宿管id,姓名,性别,电话。 5)创建视图,入住情况表,包含 学生姓名,宿舍楼号,宿舍id,所属楼层的宿舍管理员,是否缴纳宿舍费用。 6)基本的统计功能:1.某个宿舍楼内的住宿人数. 2.某个学院所居住的宿舍 编号.3.某一年级所居住的宿舍编号.4.统计未缴费学生的基本信息.5.统计已缴费学生的基本信息.5.统计同一学院,同一专业,同一年级学生的信息等等。 7)住宿信息查询 8)住宿调整管理 使用外键将所有表关联起来,使用很多的存储过程,存储函数,视图设计数据库
时间: 2023-09-23 11:11:07 浏览: 149
以下是使用SQL语言实现的学生宿舍管理系统:
学生表:
```
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
gender VARCHAR(10),
phone VARCHAR(20),
class VARCHAR(50),
grade INT,
college VARCHAR(50),
major VARCHAR(50),
payment_status VARCHAR(20),
dorm_id INT,
FOREIGN KEY (dorm_id) REFERENCES dorms(id)
);
```
宿舍楼表:
```
CREATE TABLE dorm_buildings (
id INT PRIMARY KEY,
manager_name VARCHAR(50),
manager_gender VARCHAR(10),
manager_phone VARCHAR(20),
location VARCHAR(100),
name VARCHAR(50)
);
```
宿舍表:
```
CREATE TABLE dorms (
id INT PRIMARY KEY,
building_id INT,
direction VARCHAR(50),
occupants INT,
max_occupancy INT,
price DECIMAL(10, 2),
FOREIGN KEY (building_id) REFERENCES dorm_buildings(id)
);
```
宿舍管理员表:
```
CREATE TABLE dorm_managers (
id INT PRIMARY KEY,
name VARCHAR(50),
gender VARCHAR(10),
phone VARCHAR(20)
);
```
创建视图,入住情况表:
```
CREATE VIEW occupancy AS
SELECT s.name AS student_name, d.building_id, d.id AS dorm_id, dm.name AS manager_name, s.payment_status
FROM students s
INNER JOIN dorms d ON s.dorm_id = d.id
INNER JOIN dorm_buildings db ON d.building_id = db.id
INNER JOIN dorm_managers dm ON db.manager_id = dm.id;
```
基本的统计功能:
1.某个宿舍楼内的住宿人数。
```
SELECT COUNT(*) AS occupants
FROM students s
INNER JOIN dorms d ON s.dorm_id = d.id
INNER JOIN dorm_buildings db ON d.building_id = db.id
WHERE db.id = [building_id];
```
2.某个学院所居住的宿舍编号。
```
SELECT d.id AS dorm_id
FROM students s
INNER JOIN dorms d ON s.dorm_id = d.id
WHERE s.college = [college_name];
```
3.某一年级所居住的宿舍编号。
```
SELECT d.id AS dorm_id
FROM students s
INNER JOIN dorms d ON s.dorm_id = d.id
WHERE s.grade = [grade];
```
4.统计未缴费学生的基本信息。
```
SELECT *
FROM students
WHERE payment_status = 'unpaid';
```
5.统计已缴费学生的基本信息。
```
SELECT *
FROM students
WHERE payment_status = 'paid';
```
6.统计同一学院,同一专业,同一年级学生的信息。
```
SELECT *
FROM students
WHERE college = [college_name] AND major = [major_name] AND grade = [grade];
```
住宿信息查询:
```
SELECT s.name AS student_name, s.phone AS student_phone, s.class, s.grade, s.college, s.major, d.id AS dorm_id, d.price, db.name AS building_name, db.location, db.manager_name AS manager_name, db.manager_phone AS manager_phone
FROM students s
INNER JOIN dorms d ON s.dorm_id = d.id
INNER JOIN dorm_buildings db ON d.building_id = db.id;
```
住宿调整管理:
可以使用存储过程或者存储函数来实现住宿调整管理功能。
阅读全文