SQL数据库基础二:建库、建表、建约束

USE master

GO

IF EXISTS (SELECT * FROM sysdatabases WHERE name = 'MySchool')        --判断库是否存在

  DROP DATABASE MySchool                                       --若存在先删除

GO 

CREATE DATABASE MySchool

ON

(

  NAME = ' MySchool_data',                                                                                          --主数据文件的逻辑名

  FILENAME = 'G:\MySchool_data.mdf' ,                                                                         --主数据文件的物理名

  SIZE = 10 MB,                                                                                                          --主数据文件初始大小

  MAXSIZE=100MB,                                                                                                     --主数据文件最大100M

  FILEGROWTH = 20 %                                                                                                --主数据文件每次增长20%

)                                   

 LOG ON 

(

  NAME = 'MySchool_log',

  FILENAME = 'G:\MySchool_log.ldf' ,

  SIZE = 3MB,

  MAXSIZE = 20MB,

  FILEGROWTH = 1MB

)

GO

USE MySchool  

GO

--建Subject表

--sysobjects表:存储本库中的对象信息,建表时需查此表判断要创建表是否存在,故需先打开本数据库。

IF EXISTS (SELECT * FROM  sysobjects  WHERE  name='Subject' )            --判断表是否存在

    DROP  TABLE  Subject                                                                       --若存在先删除表,drop table将表和数据均删除。

GO

CREATE  TABLE Subject                                         --创建课程表

(

    SubjectNo int  IDENTITY(1,1)  NOT NULL,            --设置标识列(自增列),初始值为1,步长为1

    SubjectName nchar(50) NOT NULL,                     --not null 表示该列不可空,默认为null

    ClassHour int NOT NULL,

    GradeId int NOT NULL

)

GO

-------------------------开始建约束,录入数据前创建约束,否则数据可能不满足约束要求而出错。

USE MySchool

GO

ALTER TABLE Grade

ADD CONSTRAINT PK_GradeID PRIMARY KEY (GradeID)       -主键约束(值不能重复,不能为空)

GO

 

ALTER TABLE Student                                                   --唯一约束(身份证号唯一)

ADD CONSTRAINT UQ_stuID UNIQUE (IdentityCard)          --唯一约束(可有一个为空,值不能为重复)

 

ALTER TABLE Student --默认约束(地址不详)

ADD CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR Address         --默认约束(用户不填写时,自动填写的值,可为常亮、函数值,不能涉及其他字段) 

 

ALTER TABLE Student --检查约束(出生日期是自1980年1月1日以后)

ADD CONSTRAINT CK_stuBornDate CHECK(BornDate>='1980-1-1')              --Check约束(值带入表达式后,若表达式值为true,值可进入表,否则出错)

 

ALTER TABLE Student --添加外键约束

ADD CONSTRAINT FK_Grade         

FOREIGN KEY(GradeID) REFERENCES Grade(GradeID)                              --外键约束(外键引入主键,所以他们两个类型宽度等要一致,主键字段必须要设置成主键)

 

 

约束的重要实例:

ALTER TABLE Book ADD CONSTRAINT ck_bid CHECK(BID LIKE 'ISBN%')     --以ISBN开头

ALTER TABLE Book ADD CONSTRAINT ck_pubdate CHECK(PubDate <getDate())   --出版日期在当前日期之前

ALTER TABLE Borrow ADD CONSTRAINT DF_lenddate DEFAULT (getDate()) FOR LendDate    --借阅日期默认为当天

ALTER TABLE Borrow ADD CONSTRAINT DF_willdate DEFAULT(DateADD(mm,1,getDate())) FOR  willdate  --默认日期为当天假一个月

ALTER TABLE Penalty ADD CONSTRAINT ck_ptype CHECK(PType  LIKE '[1-3]')                      --PType值为1-3

posted @ 2017-02-25 22:20  仰之  阅读(146)  评论(0)    收藏  举报