第二章上機練習
阿新 • • 發佈:2019-02-02
上機練習一:
USE master GO IF EXISTS (SELECT * FROM sysdatabases WHERE name = 'MySchool') DROP DATABASE MySchool GO CREATE DATABASE MySchool ON ( NAME = ' MySchool_data', --主資料檔案的邏輯名 FILENAME = 'D:\project\MySchool_data.mdf' , --主資料檔案的物理名 SIZE = 10 MB, --主資料檔案初始大小 FILEGROWTH = 20 % ) LOG ON ( NAME = 'MySchool_log', FILENAME = 'D:\project\MySchool_log.ldf' , SIZE = 3MB, MAXSIZE = 20MB, FILEGROWTH = 1MB ) GO
上機練習二:
USE MySchool
GO
IF EXISTS (SELECT * FROM sysobjects WHERE name='Subject' )
DROP TABLE Subject
GO
CREATE TABLE Subject --建立課程表
(
SubjectNo int IDENTITY(1,1) NOT NULL,
SubjectName nchar(50) NOT NULL,
ClassHour int NOT NULL,
GradeId int NOT NULL
)
GO
上機練習三:
USE MySchool GO IF EXISTS (SELECT * FROM sysobjects WHERE name=' Result' ) DROP TABLE Result GO CREATE TABLE Result --建立成績表 ( StudentNo int NOT NULL, SubjectNo int NOT NULL, StudentResult int NOT NULL, ExamDate datetime NOT NULL ) GO
上機練習四:
USE MySchool GO IF EXISTS(SELECT * FROM sysobjects WHERE name='Student') DROP TABLE Student CREATE TABLE [dbo].[Student]( [StudentNo] [int] NOT NULL, [LoginPwd] [nvarchar](50) NOT NULL, [StudentName] [nvarchar](50) NOT NULL, [Sex] bit NOT NULL, [GradeId] [int] NOT NULL, [Phone] [nvarchar](50) NULL, [Address] [nvarchar](255) NULL, [BornDate] [datetime] NOT NULL, [Email] [nvarchar](50) NULL, [IdentityCard] [varchar](18) NOT NULL ) IF EXISTS(SELECT * FROM sysobjects WHERE name='Grade') DROP TABLE Grade CREATE TABLE [dbo].[Grade]( [GradeId] [int] IDENTITY(1,1) NOT NULL, [GradeName] [nvarchar](50) NOT NULL )
上機練習五:
USE MySchool
GO
ALTER TABLE Subject --主鍵約束(課程編號)
ADD CONSTRAINT PK_Subject PRIMARY KEY (SubjectNo)
ALTER TABLE Subject --非空約束(課程名稱)
ADD CONSTRAINT CK_SubjectName CHECK (SubjectName is not null)
ALTER TABLE Subject WITH NOCHECK --檢查約束(學時必須大於等於0)
ADD CONSTRAINT CK_ClassHour CHECK (ClassHour>=0)
ALTER TABLE Subject --外來鍵約束(主表Grade和從表Subject建立引用關係)
ADD CONSTRAINT FK_GradeId
FOREIGN KEY (GradeId) REFERENCES Grade (GradeId)
GO
上機練習六:
USE MySchool
GO
ALTER TABLE Result --主鍵約束(學號、科目號、日期)
ADD CONSTRAINT PK_Result PRIMARY KEY
(StudentNo, SubjectNo, ExamDate)
ALTER TABLE Result --預設約束(日期為系統當前日期)
ADD CONSTRAINT CK_ExamDate DEFAULT (getdate()) FOR ExamDate
ALTER TABLE Result --檢查約束(分數不能大於100,小於0)
ADD CONSTRAINT CK_StudentResult CHECK
(StudentResult BETWEEN 0 AND 100)
ALTER TABLE Result --外來鍵約束(主表Student和從表Result建立關係)
ADD CONSTRAINT FK_StudentNo
FOREIGN KEY (StudentNo) REFERENCES Student (StudentNo)
ALTER TABLE Result --外來鍵約束(主表Subject和從表Result建立關係)
ADD CONSTRAINT FK_SubjectNo
FOREIGN KEY (SubjectNo) REFERENCES Subject (SubjectNo)
GO