use 教学成绩管理数据库
go

--1.创建父表：班级信息表并输入演示数据
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.创建子表：学生信息表
drop table 学生信息表
go
create table 学生信息表(
  学号 char(6) primary key ,
  姓名 nchar(4) not null ,
  性别 nchar(1) check(性别 in ('男','女')) ,
  班级编号 char(8) references 班级信息表(编号) on update cascade  --设置外键
)
go

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

--4.修改父表数据，一条一条执行
update 班级信息表 set 编号 = '20090301' where 编号 = '20090303'
select * from 班级信息表
select * from 学生信息表
select 学号, 姓名, 性别, 名称 as 班级名称, 入学日期
  from 学生信息表, 班级信息表
  where 学生信息表.班级编号 = 班级信息表.编号
