• 2


    上一节讲的是直接在创建表的时候添加条件约束,但是有时候是在表格创建完毕之后,再添加条件约束的,那么这个又该如何实现?

    其实,跟上一节所写的SQL代码,很多是相同的,只是使用了修改表的ALTER关键字及添加约束的ADD CONSTRAINT关键字而已,其他大同小异。

    代码如下:

    USE PersonInfo  --使用PersonInfo数据库
    GO
    
    IF EXISTS (SELECT * FROM sys.tables WHERE [name] = 'Employee ')  --如果存在Employee这张表
    DROP TABLE Employee  --则删除
    GO
    
    IF EXISTS(SELECT * FROM sys.tables WHERE [name] = 'Person')  --如果存在Person这张表
    DROP TABLE Person --则删除
    GO
    
    CREATE TABLE Person --创建Person(人物)表
    (
      --索引
      PersonID int IDENTITY(1,1) NOT NULL,-- 创建一个整型、自增为1、标识种子为1、不允许为空的列PersonID
      --名字
      Name nvarchar(20) NOT NULL, --创建一个Unicode非固定长度(最多存储20个Unicode字符)的列Name
      --年龄
      Age int NOT NULL ,--创建一个整型的列Age
      --性别
      Gender bit NOT NULL, --创建一个类型为bit的列Gender
      --身份信息
      [Identity] nchar(18) NOT NULL--创建一个非Unicode非固定长度(最多存储18个非Unicode字符)的列Identity
    )
    
    ALTER TABLE Person
    ADD  CONSTRAINT PK_PersonID PRIMARY KEY(PersonID), --为PersonID创建主键约束
         CONSTRAINT CK_Age CHECK(Age >=18 AND Age <=55),--为Age创建检查约束
         CONSTRAINT DF_Gender DEFAULT(1) FOR Gender,--为Gender创建默认约束
         CONSTRAINT CK_Identity CHECK (LEN([Identity])=18),--为Identity创建检查约束
         CONSTRAINT UQ_Identity UNIQUE([Identity]) --为Identity创建唯一约束
    GO         
    
    CREATE TABLE Employee --创建Employee(雇员)表
    (
        --索引
        EmployeeID int IDENTITY(1,1001) NOT NULL, -- 创建一个整型、自增为1、标识种子为1001、不允许为空的列EmployeeID
        --人物索引 
        PersonID int NOT NULL ,
        --职位 
        Post nvarchar(20) NOT NULL,--创建一个Unicode非固定长度(最多存储20个Unicode字符)的列Post
        --入职时间 
        EntryTime datetime --创建一个类型为datetime的列EntryTime
    )
    GO
    
    ALTER TABLE Employee
    ADD CONSTRAINT PK_EmployeeID PRIMARY KEY(EmployeeID),--为EmlpoyeeID创建主键约束
        CONSTRAINT FK_PersonID FOREIGN KEY(PersonID) REFERENCES Person(PersonID),--为PersonID创建外键约束
        CONSTRAINT DF_EntryTime DEFAULT getdate() FOR EntryTime--为EmlpoyeeID创建默认约束
    GO

    结果:

  • 相关阅读:
    SQLite存储类(数据类型)
    SQLite常用命令
    C# 跨线程操作无效
    Android打开新的Activity并同时关闭当前Activity
    SQLite实现Top功能
    Android调用Sqlite数据库时自动生成db-journal文件的原因
    C#使用SqlDataReader读取数据库数据时CommandBehavior.CloseConnection参数的作用
    Android计算时间差
    PS通道抠图总结
    Android再次激活Activity时触发事件用于列表重新读取载入
  • 原文地址:https://www.cnblogs.com/cncc/p/5585732.html
Copyright © 2020-2023  润新知