CREATE DATABASE 英才大学学生管理 create table 系
(系编号 char(4) primary key, 系名称 char(20) not null, 系主任 char(6), 班级个数 smallint, )
create table 班级
(班级编号 char(8) primary key, 班级名称 char(12) unique, 班级人数 smallint, 班长姓名 char(6), 专业 char(20),
系编号 char(4) references 系(系编号) )
create table 学生 (学号 char(6) primary key, 姓名 char(6),
性别 char(2) check(性别='男' or 性别='女'), 出生年月 datetime, 籍贯 varchar(50),
班级编号 char(8) references 班级(班级编号)
)
二、根据T-SQL语句写出执行结果
对上题所创建的表添加记录后如图所示,请详细写出下面的SQL语句的执行结果。
1、select * from 系
where 班级个数 between 14 and 17
2、select 班长姓名 from 班级
where 班级人数<26 or 专业='计算机网络技术'
3、select 姓名,系名称 from 学生,班级,系
where 学生.班级编号=班级.班级编号 and 班级.系编号=系.系编号 and 籍贯='山东'
4、select sum(班级个数) as 班级数 from 系
5、select 籍贯,count(*) as 人数 from 学生,班级
where 学生.班级编号=班级.班级编号 and 班级名称='网ZG092' group by 籍贯
三、对第一题中的表用T-SQL语句完成如下操作。 1、在班级表中查询班级人数最多的班级名称和人数。
select 班级名称,班级人数 from 班级
where 班级人数 = (select max(班级人数) from 班级) 2、查询姓王的学生的姓名和所在班级。
select 姓名,班级名称 from 学生,班级
where 学生.班级编号 = 班级.班级编号 and 姓名 like'王%' 3、在班级表中删除系部是“管理系”的记录。
delete 班级 where 系编号=(select 系编号 from 系 where 系名称='管理系') 4、显示比管理系班级人数最少的班级的人数还少的班级名称和专业。
select 班级名称,专业 from 班级
where 班级人数 < all(select 班级人数 from 班级,系
where 班级.系编号=系.系编号 and 系名称='管理系') 5、为系表创建一个触发器,实现一次最多只能删除2条记录。
create trigger tr01 on 系 for delete as
if (select count(*) from deleted )>2 begin rollback tran end
一、根据要求用T-SQL语句创建数据库和表。 创建数据库“英才大学教师管理”。
分别创建三个表,具体的表名、字段名如下:
系(系编号,系名称,系主任,教研室个数) 其中系名称字段非空 教研室(教研室编号,教研室名称,教师人数,系编号)
教师(教师编号,姓名,性别,职称,教研室编号) 其中性别字段只能为“男”或“女” 带下划线的字段为主键,表之间的外键关联参考下图,各字段的数据类型应尽量合理。
CREATE DATABASE 英才大学教师管理 create table 系
(系编号 char(4) primary key, 系名称 char(20) not null, 系主任 char(6), 教研室个数 smallint, )
create table 教研室