SQL约束的作用

SQL约束的作用SQL 约束用于规定表中的数据规则 如果存在违反约束的数据行为 行为会被约束终止 约束可以在创建表时规定 通过 CREATETABLE 语句 或者在表创建之后规定 通过 ALTERTABLE 语句 SQL nbsp CREATETABLE CONSTRAINT 语法 CREATETABLEt name column name1data type size

SQL 约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。

约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

SQL CREATE TABLE + CONSTRAINT 语法:

CREATE TABLE table_name ( column_name1 data_type(size) constraint_name, column_name2 data_type(size) constraint_name, column_name3 data_type(size) constraint_name );

SQL中的约束有以下几种:

  • NOT NULL —— 指示某列不能存储NULL值。
  • UNIQUE —— 指示某列中每一行的值必须唯一,不可重复。
  • PRIMARY KEY —— 主键,每个表都应该有且只能有一个主键。其约束相当于NOT NULL + UNIQUE,确保某列(或多个列的结合)有唯一标识,有助于更快地找到一个表中特定的记录。
  • FOREIGN KEY —— 外键,用于保证一个表中的数据匹配另一个表中的值的参照完整性。当指定了表1中某列为外键,并且其reference为表2中的某列(该列必须是UNIQUE约束的),就说明表1中的外键列的取值必须要在其所指向的列中取得。通过这样的约束,来预防破坏表之间连接的行为,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
  • CHECK —— 保证列中的值符合指定的条件。如果对单个列定义 CHECK 约束,那么该列只允许特定的值;如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
  • DEFAULT —— 规定没有给列赋值时的默认值。
  • 另外还有一个AUTO INCREMENT字段,会在新记录插入表中时生成一个唯一的数字,这个数字默认是从1开始递增的。我们通常希望在每次插入新记录时,自动地创建主键字段的值,此时就可以为主键添加AUTO INCREMENT字段
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (Id_P) //PRIMARY KEY约束 ) CREATE TABLE Persons ( Id_P int PRIMARY KEY, //PRIMARY KEY约束 LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

PRIMARY KEY可以放在创建表的最后一行声明(上面第一段代码),也可以在声明数据类型的时候直接添加约束(第二段)。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201941.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:15
下一篇 2026年3月20日 上午8:15


相关推荐

  • 解决eclipse代码自动补全功能默认给变量名添加一些后缀的问题,比如String类型变量名默认添加String后缀

    解决eclipse代码自动补全功能默认给变量名添加一些后缀的问题,比如String类型变量名默认添加String后缀eclipse关闭String变量名添加String后缀问题1.问题2.解决方案1.问题1.问题说明和图示:设置了代码自动补全功能之后,每次新建String类型的变量,输入==空格、;==的时候都会给变量名补上一个String后缀,太多余。2.以下是设置代码自动补全图解1.通过Window》Preferences,进入偏好设置。2.先复制以下代码块中的内容。通过搜索ContentAssist(不分大小写)关键字,找到对应选项,填入.后面保存即可生效。_abcdefghijklmnopq

    2022年5月31日
    36
  • 树莓派4B基础教程

    树莓派4B基础教程树莓派4B基础教程准备:硬件:树莓派4B,SD一张软件:SDCardFormatter(SD卡格式化工具),Win32DiskImager(烧录系统工具)这是一个纯新手教程,由于更新换代,有些东西3b的教程能用4b用不了,由于版本原因,有些东西直接出错,所以干脆花时间自己整理了一下.作者自述:对!东西全是百度来的,劳资只是一个搞Java开发的,也没有见过这些小东西可能比普通…

    2022年6月10日
    57
  • 51单片机入门教程(5)——定时器中断

    51单片机入门教程(5)——定时器中断51 单片机入门教程 5 定时器中断一 中断的概念二 定时器中断 2 1 软件延时的不足 2 2 中断寄存器 2 2 1 中断允许控制寄存器 IE2 2 2 定时器工作方式寄存器 TMOD2 2 3 定时器控制寄存器 TCON2 2 4 定时器初值寄存器 THx TLx2 3 定时器中断程序写法写在开头 中断是包括单片机在内的所有微处理器很重要的功能之一 初学单片机必须这一部分的知识 一 中断的概

    2025年11月17日
    4
  • 前端批量删除

    前端批量删除效果图 jsp lt pagelanguage java contentType text html charset UTF 8 pageEncoding UTF 8 gt lt tagliburi http java sun com jsp jstl core prefix c gt lt

    2026年3月20日
    3
  • PrintWriter and BufferedWriter区别和使用「建议收藏」

    PrintWriter and BufferedWriter区别和使用「建议收藏」区别:BufferedWriter:将文本写入字符输出流,缓冲各个字符从而提供单个字符,数组和字符串的高效写入。通过write()方法可以将获取到的字符输出,然后通过newLine()进行换行操作。并且BufferedWriter只能对字符流进行操作。PrintWriter:相对于BufferedWriter的好处在于,如果PrintWriter开启了自动刷新,那么当PrintWri…

    2022年6月5日
    38
  • leetcode 回溯算法_java生成带括号的数学题

    leetcode 回溯算法_java生成带括号的数学题原题链接数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:[“((()))”,”(()())”,”(())()”,”()(())”,”()()()”]示例 2:输入:n = 1输出:[“()”] 提示:1 <= n <= 8题解回溯class Solution {public: vector<string>res; string t = “”; voi

    2022年8月9日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号