数据库中的8种常见约束定义

article/2025/9/28 5:14:20

数据库中常见约束的定义理解和应用(附代码)

首先来说数据库中约束的定义是什么? 约束定义:按照表中的数据规则,如果存在违反约束的数据行为,行为就会被阻止。
一般在创建表之后就会创建相关列的约束,或者是在编写sql脚本时就定义好约束。比如常见的check约束:age>18 and age<65;
常见的约束类型:

1.主键约束
2.外键约束
3.默认值约束
4.检查约束
5.唯一性约束
6.非空约束
7.自增长约束
8.非负约束

下面逐一做讲解:
1.主键约束 Primary Key:在表中定义一个主键来唯一确定表中每一行数据的标识符。保证其,唯一且非空;SQL server 2008中的主键约束设置
主键约束设计方式1:行内立即设置
CREATE TABLE student{ NAME VARCHAR(10) PRIMARY KEY, age INT };
方法2:最后声明设置

CREATE TABLE student{
NAME VARCHAR(10),
age INT
primary key(name)
};

方法3:后期添加主键

alter  TABLE student ADD PRIMARY KEY (name);

另外,也存在联合主键

联合主键:把多个字段看成一个整体添加主键

例如:

CREATE TABLE student{
NAME VARCHAR(10),
age INT,
PRIMARY KEY(NAME,age)
};

删除语句:
删除主键:ALTER TABLE student DROP PRIMARY KEY;
删除非空:ALTER TABLE student CHANGE NAME NAME VARCHAR(20) NULL;
另注:要有其他约束要先删除其它约束,再来删除主键约束
2.外键约束 Foreign Key:加强两个表的一列或多列数据之间连接的;先定义主表的主键,再定义从表的外键。
只有主表(被参照表)中的主键才能被从表(参照表)用作外键使用;
主表限制了从表的插入和更新操作;(需要先从主表中插入)
从表限制了从表中数据的的删除;(当删除主表中的某条数据时,先删除从表中的相关数据,再删除主表中的相关数据)。
添加外键:
alter table 多表名称 add foreign key(外键名称) references 一表名称(主键);
其中,多表指关系中的多方,一表指关系中的一方,外键名称自定义,一般为一表名称_id,主要用于多表之间联系。添加外键约束后,主表不能删除从表中已引用的数据,从表不能添加主表中不存在的数据。
添加外键约束后,如何删除主表中的数据:

  • 方法1:如上所说,可以先删除从表中的相关数据,在删除主表中的相关数据;
  • 方法2:级联删除
ALTER TABLE orders ADD FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE;
级联更新:(代码如下)
  ALTER TABLE order ADD FOREIGN KEY (user_id)REFERENCES users(id) ON UPDATE CASCADE;

3.默认值约束(又叫default约束):用户在插入新的数据行时,如果改行没有指定数据,那么系统将默认值赋给该列,如果没有默认值,系统将会默认为NULL;
SQL Server 2008中设置默认值的方法是: 插入值->设置的默认值->NULL

4.检查约束:(又叫Check约束)通过逻辑表达式来判断数据的有效性,用来限制输入一列或多列值的范围。
5.唯一性约束,又叫Unique约束:确保表中的一列数据没有相同的值。与主键约束相似但又不同(主键只能有一个,但一个表中可以定义多个唯一约束;唯一键可以为NULL但主键不可以)。详细可以参考下这个博客SQLServer主键约束和唯一约束的区别

CREATE TABLE student(
NAME VARCHAR(20) UNIQUE NOT NULL,
age INT UNIQUE NOT NULL
)

6.非空约束:not null,使用方法跟主键一样,用not null约束的字段不能为null值,必须给定具体的数据。(代码略)
7.自增长约束:auto_increment,使用方法和主键约束一样。如果是整型字段,添加自增长约束后,还需要配合主键约束一起使用。

create table student(
sid int auto_increment primary key,
name varchar(20),
)

建表时常给字段这种联合约束,方便查询。
8.非负约束:unsigned,使用方法和主键一样,需要强调的是!添加非负约束后,取值范围将发生变化,例如int范围是-128~127,添加非负约束后将变成0-255

参考:
https://www.cnblogs.com/zhw511006/p/12826592.html
https://www.cnblogs.com/cloudtj/articles/6937355.html
https://blog.csdn.net/qq_37115780/article/details/100668568
https://blog.csdn.net/weixin_29789925/article/details/113149169

未完待续···


http://chatgpt.dhexx.cn/article/ZmWipihX.shtml

相关文章

基础SQL第二课:约束

一、约束&#xff1a; 什么是约束&#xff1f; 为了确保表中的数据的完整性(准确性、正确性)&#xff0c;为表添加一些限制。是数据库中表设计的一个最基本规则。使用约束可以使数据更加准确&#xff0c;从而减少冗余数据&#xff08;脏数据&#xff09;。 数据库完整性约束分…

sublime解决中文乱码问题

首先找到你选择的build-system&#xff0c;如下图所示&#xff1a; 第二步&#xff1a;找到preferences下的browse packages&#xff0c;点击进入目录 第三步&#xff1a;找到对应的.sublime-build文件 第四步&#xff1a;打开文件&#xff0c;将"env": {"LANG&…

sublime text 3211 安装中文包

sublime text 3211 安装中文包 安装步骤&#xff1a; 1、打开Sublime Text3&#xff0c;选择Preferences ->Package Contorol 2、在Sublime Text3 弹窗输入install package&#xff0c;选择对应命令,然后鼠标点击安装install package 3、等待一会Sublime Text3 的 insta…

Sublime 中文命名乱码(显示为方框)

今天在使用Sublime中发现&#xff0c;将文件名以部分文字以中文命名&#xff0c;非中文部分能正常显示&#xff0c;中文部分显示不出来。如下图所示 这里就是python能显示出来&#xff0c;其他的汉字就变成了方框。与此对应的现象还有部分文本的部分内容显示为繁体 &#xff0…

解决sublime汉化后部分中文显示为繁体字

解决sublime汉化后部分中文显示为繁体字 1. 问题描述2. 解决方法3. 修正之后的效果 1. 问题描述 使用插件下载汉化包之后&#xff0c;部门字体仍显示为繁体&#xff0c;如下图 这种字体看着实在是别扭的不行 2. 解决方法 找到首选项 -> 设置 添加以下内容 "font_o…

关于sublime中文上下跳动错位的解决方法

关于sublime中文上下跳动错位的解决方法 在preferences-settings打开 增加"font_options":[“gdi”] 对比效果如下&#xff1a;

Sublime text文本编辑器中文乱码解决方法

Sublime text 出现中文乱码的解决方法 问题描述 Sublime text文本编辑器用起来感觉挺好的&#xff0c;它的代码补全功能非常不错&#xff0c;界面也很漂亮。 最近在学习C语言&#xff0c;我感觉Dev-C的界面比较朴实&#xff0c;代码补全功能操作性太强。因此&#xff0c;我会…

Sublime Text3 中文错位解决办法

在使用prettytable库打印列表时偶然发现&#xff0c;相同的中英文混合字符串表格在Windoows控制台以及NotePad上能对齐显示&#xff0c;在SublimeText3以及EmEditor上无法对齐显示&#xff1a; Windoows控制台&#xff08;能对齐显示&#xff09;&#xff1a; EmEditor&…

sublime离线插件安装

一、首先需要安装Package Control 参考官网&#xff1a;Installation - Package Control中的方法。 其中分联网自动下载安装和手动两种。本文介绍手动的。 Click the Preferences > Browse Packages… menuBrowse up a folder and then into the Installed Packages/ fold…

解决 Sublime Text 中文样式显示异常问题

目录 一、问题背景 二、问题解决 1&#xff09;在工具栏中选择 Preferences → Settings &#xff0c;打开配置文件 2&#xff09;在右侧界面添加下方代码块中的内容&#xff0c; CtrlS 保存 三、效果展示 一、问题背景 最近在单位的Mac系统中使用Sublime Text感觉良好&a…

sublime text里面中文字体显示异常解决方案

sublime text下载之后一开始转成中文之后&#xff0c;会出现中文显示异常的问题&#xff0c;比如下图中“门”字显示异常 通过如下的设置可以解决该问题&#xff1a; 首选项--》设置 在该位置添加如下内容&#xff1a; {"font_options": ["gdi"],"dp…

Linux sublime设置中文,Sublime Text 3 设置为Ubuntu 14.04默认编辑器并支持中文

Ubuntu 14.04下设置Sublime Text 3支持中文输入 发现Sublime Text不支持中文&#xff0c;我用的是Fctix&#xff0c;查了好长时间教程搞定了&#xff0c;在此分享并记录下&#xff0c;最后附上本次所需文件的下载地址。 1、 复制如下的代码为sublime_imfix.c文件并放到sublime_…

sublime匹配汉字

需要处理的文本 GET/aaa/v1/xxx【门户】获取商机列表信息 POST/aaa/v1/xxx创建商机接口 POST/aaa/v1/xxx/approve审核渠道报备商机 GET/aaa/v1/xxx/areaSales根据区域编码获取对应的销售负责人(渠道经理) POST/aaa/v1/xxx/assign分派渠道报备商机 POST/aaa/v1/xxx/convert/ord…

解决SublimeText中文注释乱码

在使用Sublime Text过程中&#xff0c;出现文件中中文呈现乱码的情况 解决&#xff1a;安装Package Control --> 安装插件ConvertToUTF8 1. 安装Package Control 1&#xff09;Preferences --> Browse Packages&#xff0c;进入打开上层目录&#xff0c;选择Installed…

Sublime 打开文件中文乱码

解决步骤&#xff1a; 1. Ctrl Shift P 打开命令行 2. 输入install Package Control &#xff0c;点击进行安装 3. CTRLSHIFTP > 安装 Install Package 4. Install Package 安装完毕后&#xff0c;在弹出的命令行&#xff0c;输入ConvertToUTF8&#xff0c;点击进行安装…

Sublime中文乱码问题!今天星期四~

Sublime使用过程中&#xff0c;不知道为啥里面的中文注释全部变成了乱码&#xff01;&#xff01;&#xff01;好生气&#xff01; 问题描述 变成乱码之后我按照搜索的教程下载 Package Install&#xff0c;ConvertTOUTF-8&#xff0c;结果全都不行&#xff01;&#xff01; …

Sublime使用

文章目录 一、汉化二、修改字体三、总结 一、汉化 Sublime Text 4 软件本身是支持汉化的&#xff0c;但是需要安装插件&#xff0c;不需要再去找汉化包之类 首先我们需要调出命令面板&#xff1a;点击“Tools”-》Commadn Palette或者直接按下快捷键Ctrlshiftp调出 在调出的页面…

Sublime Text设置中文

1. 在Sublime Text中&#xff0c;主菜单栏选择Tools->Command Palette&#xff0c;或快捷键ShiftCtrlP,弹出命令面板&#xff1a; 2. 输入install&#xff0c;点击Instal Package Control 3. 稍等几秒&#xff0c;弹出提示&#xff1a;安装成功&#x…

解决Sublime出现中文乱码的情况

Sublime text 软件中出现中文乱码&#xff0c;大多是因为编码格式不支持&#xff0c;只需要安装一个插件就可以解决中文乱码问题。 1.首先我们需要安装Package Control插件 直接在工具栏的&#xff1a;Tools/Install Package Control 然后等待一会儿&#xff0c;安装好后重启…

sublime改成中文简体及菜单变成中文

只需三步就可以让你的sublime变成中文 1.按住ctrlshiftp 输入 install Package&#xff0c;然后选择红框框住的&#xff1b; 2.选择第一个之后不要着急&#xff0c;这个得多等一下下&#xff0c;它才能出来&#xff1b; 3.输入Chinese&#xff0c;选择第一个就ok&#xff0c;…