学生与所在宿舍信息的相关管理,我班同学数据库
项目背景介绍:随着科学技术的发展,我们校园的各项管理也日趋完善,本次的数据库设计主要涉及到学生与所在宿舍信息的相关管理、信息查询与用户安全。任务概述:具体关系数据库如下:
数据库名:我班同学数据库
同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号)
宿舍表(宿舍号 char(6),宿舍电话)
具体要求:用SQL语言实现下列功能并导出sql语句代码
(1). 创建数据库[我班同学数据库]代码;
create database 我班同学数据库
(2). 创建数据表[宿舍表]代码;
宿舍表(宿舍号 char(6),宿舍电话)
要求使用:主键(宿舍号)、宿舍电话:以633开头的7位电话号码use 我班同学数据库;
create table 宿舍表
(
宿舍号 char(6) primary key,
宿舍电话 char(7) check(宿舍电话 like '633[0-9][0-9][0-9][0-9]')
)
(3). 创建数据表[同学表]代码;
同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号)
要求使用:主键(学号)、外键(宿舍号)、默认(民族)、非空(民族,姓名,年龄)、
唯一(身份证号)、检查(性别)
create table 同学表
(
学号 nchar(6) primary key,
姓名 char(20) not null,
性别 char(2) check(性别='男' or 性别='女'),
年龄 int not null,
民族 char(20) default '汉族' not null,
身份证号 nchar(18) unique,
宿舍号 char(6),
foreign key(宿舍号) references 宿舍表(宿舍号)
);
(4). 将下列宿舍信息添加到宿舍表的代码
宿舍号 宿舍电话
101 6331157
102 6331777
修改 宿舍号为101的 宿舍电话:6331158
删除 宿舍号为102的 宿舍信息
insert into 宿舍表 values('101','6331157');
insert into 宿舍表 values('102','6331777');
修改 宿舍号为101的 宿舍电话:6331158
update 宿舍表 set 宿舍电话='6331158' where 宿舍号='101';
删除 宿舍号为102的 宿舍信息
delete from 宿舍表 where 宿舍号='102';
(5). 创建视图[同学表视图]代码;
同学表视图(学号, 姓名, 性别, 年龄, 民族, 身份证号, 宿舍号, 宿舍电话)
在创建视图之前,必须向同学表中添加数据,如下所示:
前面操作宿舍表,把102宿舍号删除掉了,这里要把这个数据102宿舍先提前添加上去,
否则向同学表里添加102宿舍同学信息会把bug。
insert into 同学表 values ('001', '张燕', '女', '22', '汉族', '34010220010307783X', '101');
insert into 同学表 values ('002', '江笛韵', '男', '22', '高山族', '110101200007103891', '101');
insert into 同学表 values ('003', '吕元亮', '男', '17', ' 汉族', '210102200508074056', '101');
insert into 同学表 values ('004', '康紫雪', '女', '19', '苗族', '110101200307078958', '102');
insert into 同学表 values ('005', '常红丽', '女', '20', ' 汉族', '110101200210070757', '102');
insert into 同学表 values ('006', '袁专霞', '女', '17', ' 汉族', '11010120050915607X', '102');
接着,在创建视图,操作如下所示:
create view 同学表视图
as
select 同学表.*,宿舍表.宿舍电话
from 同学表,宿舍表
where 同学表.宿舍号=宿舍表.宿舍号;
(6). 从同学表视图中查询姓张的女同学的姓名、性别、宿舍电话;
首先向同学表里添加如下数据:
前面操作宿舍表,把102宿舍号删除掉了,这里要把这个数据102宿舍先提前添加上去,
否则向同学表里添加102宿舍同学信息会把bug。
insert into 同学表 values ('001', '张燕', '女', '22', '汉族', '34010220010307783X', '101');
insert into 同学表 values ('002', '江笛韵', '男', '22', '高山族', '110101200007103891', '101');
insert into 同学表 values ('003', '吕元亮', '男', '17', ' 汉族', '210102200508074056', '101');
insert into 同学表 values ('004', '康紫雪', '女', '19', '苗族', '110101200307078958', '102');
insert into 同学表 values ('005', '常红丽', '女', '20', ' 汉族', '110101200210070757', '102');
insert into 同学表 values ('006', '袁专霞', '女', '17', ' 汉族', '11010120050915607X', '102');
在从同学表视图中查询姓张的女同学的姓名、性别、宿舍电话;
注意:这里特别注意一点,视图就是复制表和表中的数据。
所以,我们在创建视图前,一定要向表中添加数据。否则视图里没有数据。我们可以理解视图是虚拟表。
select 姓名,性别,宿舍电话
from 同学表视图
where 姓名 like '张%';
(7). 从同学表中查询女同学的最大年龄、最小年龄、平均年龄;
select
max(年龄) as 最大年龄,
min(年龄) as 最小年龄,
avg(年龄) as 平均年龄
from 同学表 where 性别='女';
(8). 查询'101'宿舍情况:姓名, 性别, 宿舍电话。
select 姓名,性别,宿舍电话
from 同学表
inner join 宿舍表
on 同学表.宿舍号=宿舍表.宿舍号
where 同学表.宿舍号='101';
还没有留言,还不快点抢沙发?