在一个用javaweb和mysql实现的宿舍管理系统中,管理员可以查看自己管理的宿舍楼中的全部学生信息,并能通过宿舍楼号对数据库进行查询,若宿舍楼号属于自己所管理范围,则显示该楼号中的学生信息,若该楼号不属于该管理员管理范围,则显示“职责范围外”,应如何构建数据库和sql语句?
时间: 2024-04-07 15:30:43 浏览: 65
在这个宿舍管理系统中,需要构建两张表:管理员表和学生表。
管理员表包括以下字段:
- id: 管理员ID
- username: 管理员用户名
- password: 管理员密码
- manage_range: 管理员管理的宿舍楼范围,可以使用字符串来表示,例如“1,2,3”表示管理1、2、3号宿舍楼。
学生表包括以下字段:
- id: 学生ID
- name: 学生姓名
- gender: 学生性别
- dormitory: 学生所属的宿舍楼号
管理员可以通过宿舍楼号来查询学生表中该宿舍楼的学生信息,如果该宿舍楼属于管理员管理的范围,则显示该宿舍楼中的学生信息,否则显示“职责范围外”。
以下是构建数据库和SQL语句的具体步骤:
1. 创建管理员表和学生表:
```sql
CREATE TABLE `admin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`manage_range` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`gender` varchar(255) NOT NULL,
`dormitory` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```
2. 插入管理员数据:
```sql
INSERT INTO `admin`(`username`, `password`, `manage_range`) VALUES ('admin', '123456', '1,2,3');
```
3. 插入学生数据:
```sql
INSERT INTO `student`(`name`, `gender`, `dormitory`) VALUES ('张三', '男', '1');
INSERT INTO `student`(`name`, `gender`, `dormitory`) VALUES ('李四', '女', '2');
INSERT INTO `student`(`name`, `gender`, `dormitory`) VALUES ('王五', '男', '3');
```
4. 查询宿舍楼中的学生信息:
```sql
SELECT * FROM `student` WHERE `dormitory` = '1';
```
5. 查询管理员管理的宿舍楼范围:
```sql
SELECT `manage_range` FROM `admin` WHERE `username` = 'admin' AND `password` = '123456';
```
6. 判断宿舍楼号是否属于管理员管理的范围:
```sql
SELECT COUNT(*) FROM `admin` WHERE `username` = 'admin' AND `password` = '123456' AND FIND_IN_SET('1', `manage_range`);
```
其中,FIND_IN_SET函数可以判断一个值是否在一个逗号分隔的字符串中存在。
阅读全文