Task3:用T-SQL语句创建约束
** 创建学生管理系统中的所有表,所有的代码放在一个文件里,一旦执行所有的表同时建立好。**
CREATE DATABASE ceshidb --第一步执行
GO
--第二步,执行以下所有内容
USE ceshidb
GO
CREATE TABLE Department
(
DeptNo char(2) PRIMARY KEY, --系部编号
DeptName nvarchar(50) NOT NULL --系部名称
)
CREATE TABLE Professional
(
Pno char(4) PRIMARY KEY, --专业编号
Pname nvarchar(80) NOT NULL, --专业名称
DeptNo char(2) FOREIGN KEY REFERENCES Department(DeptNo) --所属系部编号
)
CREATE TABLE Class
(
ClassNo char(8) PRIMARY KEY, --班级编号
ClassName nvarchar(50) NOT NULL, --班级名称
Num tinyint NOT NULL CHECK(Num>=15), --班级人数
Pno char(4) FOREIGN KEY REFERENCES Professional(Pno) --所属班级编号
)
CREATE TABLE Student
(
Sno char(10) PRIMARY KEY, --学号
Sname varchar(50) NOT NULL, --姓名
Ssex char(2) CHECK (Ssex ='男'OR Ssex='女') default '男', --性别
Sbirthday datetime, --出生日期
EntranceTime datetime NOT NULL, --入学时间
ClassNo char(8) NOT NULL FOREIGN KEY REFERENCES Class(ClassNo), --班级编号
Email varchar(50) CHECK(Email like'%@%'), --电子邮件
Address varchar(100) default '地址不详', --地址
Spassword varchar(50) NOT NULL, --密码
)
CREATE TABLE Course
(
Cno char(7) PRIMARY KEY, --课程编号
Cname varchar(30) NOT NULL, --课程名称
Ccredits real NOT NULL, --学分
Cnature varchar(30) CHECK (Cnature ='必修'OR Cnature='选修'), --课程性质
)
CREATE TABLE Result
(
Cno char(7) FOREIGN KEY REFERENCES Course(Cno), --课程编号
Sno char(10) FOREIGN KEY REFERENCES Student(Sno) on delete cascade, --学号
Result real CHECK(Result>=0 AND Result<=100), --成绩
Semester varchar(20), --学年
Term tinyint --学期
)
CREATE TABLE Teacher
(
Tno char(4) PRIMARY KEY, --教师编号
Tname nvarchar(50) NOT NULL, --姓名
Tsex char(2) CHECK (Tsex ='男'OR Tsex='女') default '男', --性别
Tbirthday datetime, --出生日期
AdmittionTime datetime , --入校时间
PID nvarchar(18) CHECK(LEN(PID)=15 OR LEN(PID)=18), --身份证号
Title char(10), --职称
Phone nvarchar(20), --电话
TPassword varchar(50) NOT NULL, --密码
DeptNo char(2) FOREIGN KEY REFERENCES Department(DeptNo), --系部编号
)
CREATE TABLE Teaching
(
Tid int IDENTITY(1,1), --授课编号
Tno char(4) FOREIGN KEY REFERENCES Teacher(Tno), --教师编号
Cno char(7) FOREIGN KEY REFERENCES Course(Cno) on delete cascade, --课程编号
Cnum int --教学时数
)
--CREATE SEQUENCE s_test start with 1 increment by 1; --建立一个从1开始每次加1的序列