• SQL中主键的相关操作


    PRIMARY KEY 关键字可以用来设置主键约束,PRIMARY KEY 关键字可以指定一列或者多列中的数据值具有唯一性,不存在相同的数据值。

    在列上创建主键约束的语法格式如下:

    column_name data_type PRIMARY KEY
    

    定义数据表tb_emp2,其主键为id,SQL语句如下:  

    CREATE  TABLE  tb_emp2
    (
        id   INT PRIMARY KEY,  --定义id 为tb_emp2中的主键
        name  VARCHAR(25) NOT NULL,
        deptId  CHAR(20) NOT NULL,
        salary  FLOAT NOT NULL      
    );
    

    给主键加约束名称,SQL语句如下:

    CREAT  TABLE  tb_emp3
    (
        id     INT NOT  NULL,
        name  VARCHAR(25)  NOT NULL,
        deptId  CHAR(20) NOT NULL,
        salary FLOAT NOT NULL
        CONSTRAINT 员工编号  --给tb_emp3表中的id添加主键约束名称为:员工编号
        PRIMARY KEY(id)        
    );
    

    在创建Table中,忘记给Table添加主键。后续添加主键的方法如下:

    ALTER  TABLE  able_name 
    ADD
     COUSTRAINT  约束名称
    PRIMARY KEY [CLUSTERED | NONCLUSTERED] [列名] [, ...n]
    

    实例:定义tb_emp4,创建完成后忘了给Table添加主键,现将id字段添加为主键

    CREATE  TABLE  tb_emp4
    (
        id  INT  NOT  NULL,
        name  VARCHAR(15) NOT NULL,
        deptId  CHAR(20) NOT NULL,
        salary  FLOAT  NOT NULL
    );
    执行下面这段SQL语句,就能给tb_emp4添加一个主键
    
    GO
    ALTER tb_emp4
    ADD
    CONSTRAINT  员工编号
    PRIMARY  KEY(id)
    

    定义多字段联合主键(意思就是在一个Table中定义两个字段为主键) PRIMARY KEY

    实例:在tb_emp5表中,假设没有主键id,为了确定一个员工,可以将name,deptId联合起来作为主键。SQL语句如下:

    CREATE  TABLE  tb_emp5
    (
         name VARCHAR(15),
         deptId   INT,
        salary  FLOAT,
          CONSTRAINT  姓名部门约束
          PRIMARY KEY(name,deptId)    --将name跟deptId两个字段同时定义为主键
    );
    

    使用主键约束需注意的事项:

    1、一个表只能包含一个PRIMARY KEY 约束

    2、由PRIMARY KEY 约束生成的索引不会使表中的非聚集索引超过249个,聚集索引超过1个。

    3、如果没有为PRIMARY KEY约束指定 CLUSTERED 或  NONCLUSTERED,并且没有为UNIQUE约束指定聚集索引,则将对该PRIMARY KEY约束使用 CLUSTERED。

    4、在PRIMARY KEY约束中定义的所有列都必须定义为 not null 定义的约束也一样 不能为 not null  

    删除主键的方法使用DROP语句将其删除: 

    ALTER   TABLE  table_name
    DROP
    CONSTRAINT  约束名
    

    删除tb_emp5表中定义的联合主键,SQL语句如下:

    ALTER  TABLE  tb_emp5
    DROP
    CONSTRAINT  姓名部门约束
    

     注:执行完删除主键,可以在SSMS对象资源管理器中,查看tb_emp5表中的主键信息。

     

      

     

       

  • 相关阅读:
    html设置360兼容/极速模式
    es查询备忘录
    TypeError: __init__() got an unexpected keyword argument 'strict'
    pandas处理csv
    scrapy中cookie处理
    滑动验证码破解(一)
    python 自定义属性访问 __setattr__, __getattr__,__getattribute__, __call__
    数据库的增删改、单表查询
    库的操作,表的操作,数据类型,完整性约束
    Mysql常用命令(二)
  • 原文地址:https://www.cnblogs.com/leiminghui/p/13067898.html
Copyright © 2020-2023  润新知