use 教学成绩管理数据库
go

--1.创建父表：班级信息表并输入演示数据
drop table 学生信息表
drop table 班级信息表
go
create table 班级信息表(
  编号 char(8) primary key,         --必须定义主键
  名称 nvarchar(15) not null,
  入学日期 datetime not null,
  专业编号 char(6)
)
go
insert 班级信息表(编号, 名称, 入学日期) values('20090101', '2009市场营销1班', '2009.09.05')
insert 班级信息表(编号, 名称, 入学日期) values('20090303', '2009软件技术3班', '2009.09.05')
select * from 班级信息表
go

--2.创建子表：学生信息表
create table 学生信息表(
  学号 char(6) primary key ,
  姓名 nchar(4) not null ,
  性别 nchar(1) check(性别 in ('男','女')) ,
  班级编号 char(8) references 班级信息表(编号) on delete cascade  --设置外键, 级联删除
)
go

--3.验证，一条一条执行，富五车 阻止，报错
insert 学生信息表 values('000001', '牛冲天', '男', '20090101')
insert 学生信息表 values('000002', '马行空', '男', '20090101')
insert 学生信息表 values('000003', '龙入海', '男', '20090101')
insert 学生信息表 values('000004', '高八斗', '男', '20090303')
insert 学生信息表 values('000005', '凌云霄', '男', '20090303')
insert 学生信息表 values('000006', '汪清水', '女', '20090303')
insert 学生信息表 values('000007', '富五车', '男', '20090302')
select * from 学生信息表
select 学号, 姓名, 性别, 名称 as 班级名称, 入学日期
  from 学生信息表, 班级信息表
  where 学生信息表.班级编号 = 班级信息表.编号

--4.删除父表数据，一条一条执行
delete 班级信息表 where 编号 = '20090101'
select * from 班级信息表
select * from 学生信息表
select 学号, 姓名, 性别, 名称 as 班级名称, 入学日期
  from 学生信息表, 班级信息表
  where 学生信息表.班级编号 = 班级信息表.编号
