用Transact-SQL代碼實現創建數據庫、數據庫表、以及設置數據庫表的約束

/*
用Transact-SQL代碼實現創建數據庫、數據庫表、以及設置數據庫表的約束
1、下面是一個學校要實現對學生、教師、課程以及學生選課、學生課程成績、教師上課、教師上課報酬等信息進行統一管理,並開發一個教學信息系統
*/

CREATE DATABASE TeachingManageSYS
ON        PRIMARY
(        NAME = TeachingManageSys,
FILENAME = 'E:\TeachingManageSYS\TeachingManageSYS.mdf',
SIZE = 3072KB,MAXSIZE = UNLIMITED,FILEGROWTH = 1024KB        )

LOG ON
(        NAME = 'TeachingManageSYS_log',
FILENAME = 'E:\TeachingManageSYS\TeachingManageSYS_log.ldf',
SIZE = 1024KB,MAXSIZE = 2048GB,FILEGROWTH = 10%        )
GO

USE TeachingManageSYS
GO
CREATE TABLE CourseInfo                /*課程信息表*/
(        
Cno                        char(4) PRIMARY KEY                NOT NULL,
Cname                char(10)        NOT NULL,
Credit                real        NOT NULL,
CouresHour        int                NOT NULL
        )
GO

CREATE TABLE RankPayMent        /*職別課酬*/
(
Trank                char(6) PRIMARY KEY                NOT NULL,
Payment                real        NOT NULL
        )
GO

CREATE TABLE StuAchievement        /*成績表*/
(
Sno                char(6) PRIMARY KEY                NOT NULL,
Sfundamental        real        NULL,
Sminor                real        NULL
        )
GO

CREATE TABLE StudentCourse                /*學生選課表*/
(
Sno                char(6)         NOT NULL,
Cno                char(4)                NOT NULL,
Score        real        NULL
        )
GO

CREATE TABLE StudentInfo        /*學生信息表*/
(
Sno                char(6) PRIMARY KEY                NOT NULL,
Sname        char(10)        NOT NULL,
Ssex        char(2)                NOT NULL,
Sage        int NOT                NULL,
Saddress         varchar(30)         NULL,
Sphoto        image                NULL,
Smemory         varbinary(100)                NULL
        )
GO

CREATE TABLE Teach        /*教學表*/
(
Tno                char(6)                PRIMARY KEY                NOT NULL,
Cno                char(4)                NOT NULL,
Ssatisfact        real                NULL
        )
GO

CREATE TABLE TeacherInfo        /*教師信息表*/
(        
Tno                char(6)                PRIMARY KEY NOT NULL,
Tname        char(10)        NOT NULL,
Tsex        char(2)                NOT NULL,
Tage        int                        NOT NULL,
Trank        char(6)                NOT NULL,
Taddress        varchar(30)        NOT NULL,
Tphoto        image                NULL,
Tmemory        varchar(100)        NULL
        )
GO

/**
設置約束
1、需要對TeacherInfo(教師信息表)的Tname字段進行約束,
     即根據學校實際情況規定教師姓名不能重複
*/

CREATE UNIQUE NONCLUSTERED INDEX UN_TeacherInfo
ON        dbo.TeachInfo
(
Tname
)
GO

/**設置外鍵*/
--USE TeachingManageSYS
--GO

/* StudentCourse(外鍵 Sno)--StudentInfo(主鍵 Sno);*/
ALTER TABLE StudentCourse WITH CHECK ADD
CONSTRAINT FK_StudentCourse_StudentInfo
FOREIGN KEY        (Sno)
REFERENCES StudentInfo (Sno)
GO

/* StudentCourse(外鍵 Cno)--CourseInfo(主鍵 Cno).*/
ALTER TABLE StudentCourse WITH CHECK ADD
CONSTRAINT FK_StudentCourse_CourseInfo
FOREIGN KEY        (Cno)
REFERENCES        CourseInfo        (Sno)
GO

/*TeacherInfo(外鍵 Trank)--RankPayment(主鍵 Trank)*/
--USE TeachingManageSYS
--GO
ALTER TABLE TeacherInfo        WITH CHECK ADD
CONSTRAINT FK_TeacherInfo_RankPayMent
FOREIGN        KEY (Trank)
REFERENCES        RankPayment        (Trank)
GO

/*設計CHECK值
規定StudentInfo表的Sage(年齡)必須在18歲到20歲之間。
*/

ALTER TABLE StudentInfo
ADD CONSTRAINT Sage_check
CHECK (Sage>=18 AND Sage<=20)
GO

/*設計默認值
教師大部分家庭住址都是在“四川成都”,
可以在TeacherInfo(教師信息表)的Taddress字段處定義默認值爲“四川成都”
*/

ALTER TABLE dbo.TeacherInfo
ADD CONSTRAINT DF_TeacherInfo_Taddress
DEFAULT '四川成都' FOR Taddress
GO

/*輸入數據
以StudentInfo表爲例,採用INSERT命令輸入三條記錄數據,由於記錄手機比較多,
我們不在列出全部的命令。
*/

INSERT INTO StudentInfo
                (Sno,Sname,Ssex,Sage,Saddress)
        VALUES
                ('010101','蔡依林','女','25','臺灣台北')
INSERT INTO StudentInfo
                (Sno,Sname,Ssex,Sage,Saddress)
        VALUES
                ('010102','劉歡','男','45','北京海淀')
INSERT INTO StudentInfo
        VALUES
                ('010103','馬化騰','男','39','深圳南山')
GO

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章