zoukankan      html  css  js  c++  java
  • T-SQL :SQL Server 定义数据完整性 6大约束(三)

    1.创建一客户张表

     1 IF OBJECT_ID('dbo.Employees', 'U') IS NOT NULL
     2   DROP TABLE dbo.Employees;
     3 
     4 CREATE TABLE dbo.Employees
     5 (
     6   empid     INT         NOT NULL,
     7   firstname VARCHAR(30) NOT NULL,
     8   lastname  VARCHAR(30) NOT NULL,
     9   hiredate  DATE        NOT NULL,
    10   mgrid     INT         NULL,
    11   ssn       VARCHAR(20) NOT NULL,
    12   salary    MONEY       NOT NULL
    13 );

    2.主键约束

    -- Primary key
    ALTER TABLE dbo.Employees
      ADD CONSTRAINT PK_Employees
      PRIMARY KEY(empid);
      

    对于主键约束后台将创建一个唯一索引,以物理机制强制逻辑的唯一性约束

    3.唯一约束

    -- Unique
    ALTER TABLE dbo.Employees
      ADD CONSTRAINT UNQ_Employees_ssn
      UNIQUE(ssn);

    4.外键约束 创建一张订单表 插入外键

    IF OBJECT_ID('dbo.Orders', 'U') IS NOT NULL
      DROP TABLE dbo.Orders;
    
    CREATE TABLE dbo.Orders
    (
      orderid   INT         NOT NULL,
      empid     INT         NOT NULL,
      custid    VARCHAR(10) NOT NULL,
      orderts   DATETIME2   NOT NULL,
      qty       INT         NOT NULL,
      CONSTRAINT PK_Orders
        PRIMARY KEY(orderid)
    );
    -- Foreign keys
    ALTER TABLE dbo.Orders
      ADD CONSTRAINT FK_Orders_Employees
      FOREIGN KEY(empid)
      REFERENCES dbo.Employees(empid);

    5.CHECK约束

    -- Check
    ALTER TABLE dbo.Employees
      ADD CONSTRAINT CHK_Employees_salary
      CHECK(salary > 0.00);

    6.默认约束

    -- Default
    ALTER TABLE dbo.Orders
      ADD CONSTRAINT DFT_Orders_orderts
      DEFAULT(SYSDATETIME()) FOR orderts;
    
    -- Cleanup
    DROP TABLE dbo.Orders, dbo.Employees;
  • 相关阅读:
    OSPF 相关知识点
    基于LINUX 主机防火墙的端口转发
    WSUS服务器硬盘空间不足,如何迁移补丁文件夹
    ESXi 5.5开启并配置SNMP
    识别远程操作系统
    一个真实的社会
    "要敢杀掉旧的自己,新的自己才会诞生”读后感
    关于独立
    创业心得:从客户的抱怨中发现市场机会
    学习和思考的要点
  • 原文地址:https://www.cnblogs.com/feizianquan/p/9311358.html
Copyright © 2011-2022 走看看