zoukankan      html  css  js  c++  java
  • SQLServer之PRIMARY KEY约束

    PRIMARY KEY约束添加规则

    1、在表中常有一列或多列的组合,其值能唯一标识表中的每一行,这样的一列或多列成为表的主键(PrimaryKey)。

    2、一个表只能有一个主键,而且主键约束中的列不能为空值。

    3、只有主键列才能被作为其他表的外键所创建。

    4、一般情况下一个表中只能有一个主键。

    使用SSMS数据库管理工具添加主键约束

    使用SSMS数据库管理工具添加一列作为一个主键约束

    1、连接数据库,选择数据表-》右键点击,选择设计。

    2、在新窗口中,选择一行,右键点击-》选择设置主键-》点击保存按钮(或者ctrl+s)。

    3、刷新表查看示例结果。

    使用SSMS数据库管理工具添加多列作为一个主键约束

    1、连接数据库,选择数据表-》右键点击-》选择设计。

    2、在新窗口中-》按下ctrl键,选择多行-》右键点击-》选择设置主键-》点击保存(或者ctrl+s)。

    3、刷新表查看示例结果。

    使用T-SQL脚本添加主键约束

    使用T-SQL脚本添加一列作为一个主键约束

    当表中约束存在时,不可以直接添加主键约束,因为一张表只允许存在一个主键约束,如果需要添加主键约束需要先删除已存在的主键约束再添加主键约束。当表中不存在主键约束时,可直接添加主键约束。

    语法:

    if exists(select * from sysobjects where name=约束名)
    alter table 数据库名.[dbo].表名 drop constraint 约束名;
    alter table 数据库名.[dbo].表名 add constraint 约束名 primary key(列名 [asc|desc]);

    示例:

    --如果约束存在则删除约束,如果约束不存在则不删除
    if exists(select * from sysobjects where name='idcon2')
    alter table [testss].[dbo].[test1] drop constraint idcon2;
    --添加约束
    alter table [testss].[dbo].[test1] add constraint idcon2 primary key(id asc);

    使用T-SQL脚本添加多列作为一个主键约束

    当表中约束存在时,不可以直接添加主键约束,因为一张表只允许存在一个主键约束,如果需要添加主键约束需要先删除已存在的主键约束再添加主键约束。当表中不存在主键约束时,可直接添加主键约束。

    语法:

    --添加多列主键约束

    if exists(select * from sysobjects where name=约束名)
    alter table 数据库名.[dbo].表名 drop constraint 约束名;
    alter table 数据库名.[dbo].表名 add constraint 约束名 primary key(列名 [asc|desc],列名 [asc|desc],......);

    示例:

    --添加多列主键约束
    if exists(select * from sysobjects where name='idcon2')
    alter table [testss].[dbo].[test1] drop constraint idcon2;
    --添加约束
    alter table [testss].[dbo].[test1] add constraint idcon2 primary key(id asc,name desc);

    PRIMARY KEY约束优缺点

    优点:

    1、简单、效率高。 

    2、保证数据完整性。

    3、不会有空值。

    4、不允许存在重复值。

    缺点:

    1、主键自增一般使用int型,有数据条数的限制。

    2、在数据库进行数据合并时会比较麻烦。 

  • 相关阅读:
    uwsgi 的启动停止重启
    项目部署(Python3 + ubuntu 16.04(ali server) + Nginx + uWSGI + Django 1.11)
    阿里云连接上Mysql数据库(10061 errors)
    本地数据库上传到阿里云Mysql
    Django 用户的修改密码接口
    django 的忘记密码接口
    Git光速入门
    缓存问题:一致性、穿击、穿透、雪崩、污染
    redis进阶-高可用:主从复制详解
    Redis分片技术(Redis Cluster)
  • 原文地址:https://www.cnblogs.com/vuenote/p/9566175.html
Copyright © 2011-2022 走看看