热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Sql约束(1)

SQL约束讲解2009-04-2709:29约束主要包括:NOTNULLUNIQUEPRIMARYKEYFOREIGNKEYCHECKDEFAULT1、notnull:用于控制字段的内容一定不能为空(NULL)。用法:CreatetableMyTable(idvarchar(32)notnull,namevarchar(32))2、Uniq

SQL 约束 讲解 2009-04-27 09:29 约束 主要包括: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT 1、not null :用于控制字段的内容一定不能为空(NULL)。 用法 :Create table MyTable ( id varchar(32) not null , name varchar (32) ) 2、Uniq

SQL 约束讲解

2009-04-27 09:29

约束主要包括:

  • NOT NULL
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
  • DEFAULT

    1、not null :用于控制字段的内容一定不能为空(NULL)。
    用法 :Create table MyTable
    (
    id varchar(32) not null,
    name varchar (32)
    )

    2、Unique :控件字段内容不能重复,一个表允许有多个 Unique 约束
    在Sql Server、Orcale、MS Access 支持的添加 Unique 语法
    Create table MyTable
    (
    id varchar(32) not null unique,
    name varchar (32)
    )

    在Sql Server、 My Sql 支持的添加 Unique 语法
    Create table MyTable
    (
    id varchar(32) not null,
    name varchar (32),
    unique (id,.....)
    )

    在Sql Server、Orcale、MS Access、My Sql 都支持的添加 Unique 语法
    Create table MyTable
    (
    id varchar(32) not null,
    name varchar (32),
    Constraint uniqueName unique(UniqueColumn,.....)
    )

    :第一种写法(也就是在字段后面直接添加约束),保证每个字段数据唯一性
    第二种写法(也就是同时添加几个字段为约束),这个是保证几个字段数据同时是唯一的,比如 Unique(id,name) 两个字段为约束,那么当 id 有重复值,而 name 没有重复值的情况下是允许的,只有当两个字段数据都与原数据重复的情况下才是不允许的。

    在Sql Server、Oracle、MS Access 删除 Unique 约束语法:drop constraintUniqueName;
    在My Sql 删除 Unique 约束语法:drop index UniqueName;

    3、Primary Key :也是用于控件字段内容不能重复,但它在一个表只允许出现一个。

  • 这个表的外键必须是另一个表的主键!
  • 表内至少要有一行数据才可以创建

  • 在Sql Server、Orcale、MS Access 支持的添加Primary Key语法
    Create table myTB1
    (
    id nvarchar(32) not null primary key,
    name nvarchar(32)
    )
    在Sql Server、My Sql 支持的添加Primary Key 语法
    Create table myTB1
    (
    id nvarchar(32) not null,
    name nvarchar(32),
    primary key (id)
    )
    在Sql Server、Orcale、MS Access、My Sql 支持的添加Primary Key 语法
    Create table myTB1
    (
    id nvarchar(32) not null,
    name nvarchar(32),
    constraint PrimaryName primary key (id)
    )
    在Sql Server、Orcale、MS Access、My Sql 表已存在的情况下,添加表的Primary Key约束语法
    Alter table myTB1
    ADD Primary Key (id,......) --这样的写法,系统会自定义约束名称

    Alter table myTB1
    Add Constaint PrimaryName primary key (id)--这样的写法,自己可以自定义约束名称

    在Sql Server、Orcale、MS Access 删除表已存在的 Primary Key 约束的语法:
    Alter table myTB1
    Drop Constraint PrimaryName

    在My Sql 删除表已存在的 Primary Key 约束的语法:
    Alter table myTB1
    Drop Primary Key
    Unique 与 Primary 的相同之处:UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
    Unique 与 Primary 的不同之处:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束,Unique允许有NULL值,而 Primary key 不允许有NULL值。

    :在同一个数据库中,就算在不同的表中,约束名称是不允许相同的。

    4、Foreign Key
    :FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
    在Sql Server、My Sql 支持的添加Foreign Key语法
    Create table myTB1
    (
    id nvarchar(32) not null primary key,
    name nvarchar(32),
    foreign key(id) references myTB(id)
    )

    在Sql Server、Orcale、MS Access 支持的添加Foreign Key语法
    Create table myTB1
    (
    id nvarchar(32) not null foreign key references myTB(id),
    name nvarchar(32)
    )

    在Sql Server、Orcale、MS Access、My Sql 都支持的添加Foreign Key语法
    Create table myTB1
    (
    id nvarchar(32) not null primary key,
    name nvarchar(32),
    Constraint foreignName foreign key(id) references myTB(id)
    )

    在Sql Server、Orcale、MS Access、My Sql 的表已存在情况下,向表添加外键约束的语法:
    Alter table myTB1
    Add foreign key(id) references myTB(id) --这样写系统会自定义约束名称

    Alter table myTB1
    Add Constraint foreignName foreign key(id) references myTB(id) --这样写自己可以自定义约束名称

    在Sql Server、Orcale、MS Access 中删除外键约束的语法:
    Alter table myTB1
    Drop Constraint foreignName;

    在My Sql 中删除外键约束的语法:
    Alter table myTB1
    Drop foreign key foreignName;


    5、Check :用于控制字段的值范围。
    在Sql Server、My Sql 支持的添加check 语法
    Create table myCheck
    (
    id nvarchar(32) not null,
    age int not null,
    check (age>15 and age <30)
    )

    在Sql Server、Orcale、MS Access 支持的添加 check语法
    Create table myCheck
    (
    id nvarchar(32) not null,
    age int not null check (age>15 and age<30)
    )

    在Sql Server、Orcale、MS Access、My Sql 都支持的添加 check 语法
    Create table myCheck
    (
    id nvarchar(32) not null,
    age int not null,
    constraint checkName check (age<15 and age>30)
    )

    在Sql Server、Orcale、MS Access、My Sql 的表已存在情况下,向表添加check约束的语法:
    Alter table myCheck
    add check (id='celly'); --这样定义是系统自定义 check约束名称。

    Alter table myCheck
    add constraint checkName check(id='celly'); --这样定义是自己自定义 check约束名称。


    在 Sql Server、Orcale、MS Access 删除表已存在的 check 约束的语法:
    Alter table myCheck
    drop constraint checkName

    6、Default :用于设置新记录的默认&#20540;。

    在Sql Server、Orcale、MS Access、My Sql 添加default约束的语法:
    Create table myDefault
    (
    id int,
    name nvarchar(32) default 'celly'
    )

    在My Sql 的已存在表中添加 字段默认&#20540;:
    Alter table myDefault
    Alter [id] set default 0

    在 Sql Server、Orcale、MS Access 的已存在表中添加 字段默认&#20540;:
    Alter table myDefault
    Alter column [id] set default 0

    在 My Sql 中删除字段默认&#20540;语法:
    Alter table myDefault
    Alter ColumnName drop default

  • 推荐阅读
    • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
    • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
    • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
    • MySQL缓存机制深度解析
      本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
    • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
    • 精选30本C# ASP.NET SQL中文PDF电子书合集
      欢迎订阅我们的技术博客,获取更多关于C#、ASP.NET和SQL的最新资讯和资源。 ... [详细]
    • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
      本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
    • Hadoop入门与核心组件详解
      本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
    • 本文介绍如何在 FireDAC 环境下实现 FDMEMTable 字段的自动获取,为开发人员提供便捷的数据处理方式。 ... [详细]
    • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
    • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
    • openGauss每日一练:第6天 - 模式的创建、修改与删除
      本篇笔记记录了openGauss数据库中关于模式(Schema)的创建、修改和删除操作。通过这些操作,用户可以更好地管理和控制数据库对象。实验环境为openGauss 2.0.0,并使用由墨天轮提供的线上环境。 ... [详细]
    • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
    • 深入解析三大范式与JDBC集成
      本文详细探讨了数据库设计中的三大范式,并结合Java数据库连接(JDBC)技术,讲解如何在实际开发中应用这些概念。通过实例和图表,帮助读者更好地理解范式理论及其在数据操作中的重要性。 ... [详细]
    • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
    author-avatar
    弹指一点红
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有