SQL约束

文章目录

  • 约束
    • 约束的分类:
      • 按照约束的作用效果不同
        • 唯一约束
        • 主键约束
        • 外键约束
        • 检查约束
        • 非空约束
        • 默认值约束
      • 按照是否跟随列和字段属性来创建约束
        • 行级约束
        • 表级约束
    • 创建约束
      • 创建唯一约束
        • 创建完表之后创建唯一约束
        • 创建表的同时创建唯一约束
          • 行级约束
          • 表级约束
      • 创建主键约束
        • 创建完表之后创建主键约束
        • 创建表的同时添加主键约束
          • 行级约束
          • 表级约束
      • 创建外键约束
        • 创建完表之后创建外键约束
        • 创建表的同时创建外键约束
          • 行级约束
          • 表级约束
      • 创建检查约束
        • 创建完表之后添加检查约束
        • 创建表的同时添加检查约束
          • 行级约束
          • 表级约束
      • 非空约束
        • 创建完表之后添加非空约束
        • 创建表的同时添加非空约束
          • 行级约束
      • 默认值约束
        • 创建完表之后添加默认值
        • 创建表的同时添加默认值
    • 删除约束


约束

CONSTRAINT
作用:作用在表中,让你的表按照约束条件和规则录入数据,让表更符合实际


约束的分类:

按照约束的作用效果不同

唯一约束

UNIQUE
作用:该字段插入的数据唯一,不能重复,可以为空

主键约束

PRIMARY KEY
作用:该字段不能重复而且不能为空

外键约束

FOREIGN KEY
作用:该字段数据的取值来自于另一张表的某字段

检查约束

CHECK
作用:是根据实际需求自定义约束内容

非空约束

NOT NULL
作用:该字段不能有空值

默认值约束

DEFAULT
作用:该字段不插入数据的时候,会自动填入默认值

按照是否跟随列和字段属性来创建约束

行级约束

在建表的同时,仅跟随字段和字段属性来声明约束,这就叫行级约束

CREATE TABLE 表名(列名1 字段属性 约束,列名2 字段属性......)

是指在列名后添加约束,为行级约束

表级约束

在建表的同时,声明所有字段和字段属性后,再单独声明约束

CREATE TABLE 表名(列名1 字段属性,
			 	 列名2 字段属性,
			 	 ....,
			 	 约束)


创建约束

创建唯一约束

创建完表之后创建唯一约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名1,列名2.....)

注意:如果括号内两个字段添加了一个唯一约束,即两个字段都相同才算重复,如ename,job字段,都是SMITH跟MANAGER才算重复,SMITH跟ANALYSE不算重复

ALTER TABLE Heih ADD CONSTRAINT un_HeiH_xingming UNIQUE (ename)

在这里插入图片描述
在这里插入图片描述
注意:
1.唯一约束约束不了空值
2.当有违反约束的数据村则,则创建约束会失败

创建表的同时创建唯一约束
行级约束
CREATE TABLE 表名 (列名1 字段属性 UNIQUE,    ---给列名1添加唯一约束
                  列名2 字段属性........)

UNIQUE跟在哪个字段后面,就约束谁
约束名自动分配
在这里插入图片描述
如果想自己取名

CREATE TABLE 表名 (列名1 字段属性 CONSTRAINT 约束名 UNIQUE,    ---给列名1添加唯一约束
                  列名2 字段属性........)

如此可以自己取约束名

表级约束

语法:

CREATE TABLE 表名(列名1 字段属性
			    ,列名2 字段属性
			    ,..........
			    ,CONSTRAINT 约束名 UNIQUE (列名1,列名2,列名3,.....))

创建主键约束

创建完表之后创建主键约束

主键约束:PRIMARY KEY
该列不能为空也不能重复

Alter TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (列名...)

在同一个字段不能有作用相同的约束,如某个字段有唯一约束,则该字段不能添加主键约束,因为二者作用都有不能重复的作用
主键一般都是表里的唯一标识

创建表的同时添加主键约束
行级约束
CREATE TABLE 表名(列名1 字段属性 [CONSTRAINT 约束名] PRIMARY KEY
				,列名2 字段属性
				,......)

同样,约束名为系统分配

表级约束
CREATE TABLE 表名(列名1 字段属性
			    ,列名2 字段属性
			    ,..........
			    ,CONSTRAINT 约束名 PRIMARY KEY (列名1,列名2,列名3,.....))

注意:每张表只能有一个主键约束


创建外键约束

创建完表之后创建外键约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY (列名) REFERENCES 父表(主键列或者唯一列)

如果表中已有数据,并且表中添加外键约束的列在父表中找不到相应的值,会报错
插入值的时候,添加外键约束的列同样应为父表列中的值,否则会报错。
注意:
1.外键约束约束不了空值,空值是可以随便添加的。
2.NO action:代表当子表有记录的时候,父表不能删除
3.CASCADE: 当子表有记录的时候,父表和子表一同删除
3.Set Null:当子表 有记录的时候,删除父表,子表变空值
在这里插入图片描述

外键很麻烦,所以很少用,甚至禁止使用

创建表的同时创建外键约束
行级约束
CREATE TABLE 表名(列名1 字段属性 [CONSTRAINT 约束名] REFERENCES 父表(主键列或者唯一列)
				,列名2 字段属性
				,.......)
表级约束
CREATE TABLE 表名(列名1 字段属性
				,列名2 字段属性
				,.......
				, [CONSTRAINT 约束名] FORRIGN KEY (列名)
				 REFERENCES 父表(主键列或者唯一列)
)

创建检查约束

创建完表之后添加检查约束

语法:

ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK(条件1 AND 条件2 AND.....)
创建表的同时添加检查约束
行级约束
CREATE TABLE 表名(列名1 字段属性 [CONSTRAINT 约束名] CHECK(条件1 AND 条件2 AND.....OR .....)    --条件只能引用列名1,不能写列名2,只能列名1怎样怎样
				,列名2 字段属性
				,......)
表级约束
CREATE TABLE 表名(列名1 字段属性
				,列名2 字段属性
				,......
				,[CONSTRAINT 约束名] CHECK(条件1 AND 条件2 AND.....OR .....)   --可以引用列名1列名2啊之类


非空约束

NOT NULL
其实算不上约束,放到这边来记
作用:该列不能有空值

创建完表之后添加非空约束
ALTER TABLE 表名 MODIFY 列名 NOT NULL
创建表的同时添加非空约束
行级约束
CREATE TABLE 表名 (列名1 字段属性 NOT NULL
				  ,列名2 字段属性......)

没有表级约束


默认值约束

DEFAULT
作用,当该列没有插入数据时,默认填入一个值

创建完表之后添加默认值
ALTER TABLE 表名 MODIFY 列名 DEFAULT 值;

仍然可以特意去添加空值。

创建表的同时添加默认值
CREATE TABLE 表名(列名1 字段属性 DEFAULT 值
				 ,列名2 字段属性....)

没有表级写法


删除约束

1.前四个:

ALTER TABLE 表名 DROP CONSTRAINT 约束名;

2.删除非空约束

ALTER TABLE 表名 MODIFY 列名 NULL;

3.删除默认值

ALTER TABLE 表名 MODIFY 列名 DEFAULT NULL;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/563899.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录一下hive启动metestore服务时报错

【背景说明】 之前hadoop有问题,把hadoop和MySQL删了重装,hive没有动,然后启hive的metastore服务的时候,显示找不到metastore数据库 【报错】 Caused by: java.lang.reflect.InvocationTargetExceptionat sun.reflect.Generated…

完成学校官网页面制作

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>教务系统</title> <style> .wap{ margin:0 auto; width:955px; } .top{ height:150px; padding-left:85px; …

内旋风铣也挺有意思,不够还没搞透

内旋风铣&#xff0c;这一术语在机械制造业中并不陌生&#xff0c;它代表着一种高效且精确的加工方法。这一技术的名称“内旋风铣”便揭示了其两大核心特点&#xff1a;一是“内”&#xff0c;指的是在工件内部进行加工&#xff0c;通常涉及到难以触及的复杂曲面&#xff1b;二…

FebHost:CC域名商业和非商业使用的区别

在当今互联网的世界中&#xff0c;域名的选择不仅关乎一个网站的在线身份&#xff0c;更与其背后的商业策略紧密相连。.cc 顶级域&#xff08;TLD&#xff09;作为众多选择之一&#xff0c;其使用方式可分为商业和非商业两大类。 商业用途&#xff1a;当提及.cc域名的商业用途…

Windows安装ElasticsSearch详细指南(亲测)

一、安装jdk ElasticSearch是基于lucence开发的&#xff0c;也就是运行需要java jdk支持。所以要先安装JAVA环境。 由于ElasticSearch 5.x 往后依赖于JDK 1.8的&#xff0c;所以现在我们下载JDK 1.8或者更高版本。 下载JDK1.8,下载完成后安装。 二、安装ElasticSearch 1.El…

【UE5.1 C++】VS2022下载安装

目录 步骤 一、Visual Studio下载安装 二、Visual Studio Integration Tool插件安装 先看一下UE和VS的兼容性 &#xff08;虚幻5&#xff1a;为虚幻引擎C项目设置Visual Studio开发环境&#xff09; &#xff08;虚幻4&#xff1a;设置虚幻引擎的Visual Studio&#xff0…

OJ:寻找独一无二的数

目录 &#x1f3dd;1.问题描述&#xff1a; &#x1f3dd;2.分析问题&#xff1a; &#x1f3dd;3.最终代码&#xff1a; &#x1f3dd;1.问题描述&#xff1a; &#x1f3dd;2.分析问题&#xff1a; 先看看下面的代码的结果是多少&#xff1f; #include<stdio.h> in…

宝塔面板国际版aaPanel 精简版安装

宝塔面板国际版aaPanel 精简版安装 很多人都知道宝塔面板&#xff0c;但不知道宝塔面板还有英文版&#xff0c;宝塔面板英文版不是单纯的宝塔面板的翻译&#xff0c;而是根据老外的使用习惯及国外的网络环境做了一定的优化&#xff0c; 比如&#xff1a;去掉了手机号验证、去…

论文笔记;LargeST: A Benchmark Dataset for Large-ScaleTraffic Forecasting

Neurips 2023 1 intro 目前交通预测数据集的问题 规模小&#xff0c;通常只包含数百个节点和边在时间覆盖范围上存在严重不足&#xff0c;通常不超过6个月单个节点的元数据不足 ——> 提出了一个新的基准数据集LargeST 广泛的图大小&#xff0c;包括加利福尼亚州的8,600个…

向量的求导

参考&#xff1a; 向量的求导 向量内积求导

基于Vue3的openlayers地图显示

基于Vue3的openlayers地图显示 &#xff08;1&#xff09;接着上一篇将讲&#xff0c;在components文件夹下创建BaseMap.vue文件夹 &#xff08;2&#xff09;在App.vue文件里面引入BaseMap.vue文件&#xff0c;如下代码所示&#xff1a; &#xff08;3&#xff09;在BaseMa…

Rust异步编程简介

Rust异步编程简介 计算机已经尽可能快了。加快程序速度的一种方法是并行或并发执行操作。这两个术语之间有细微的区别。并行执行意味着我们同时在两个不同的 CPU 上执行两个不同的任务。并发执行意味着单个 CPU 通过交错执行这些任务&#xff0c;同时在多个任务上取得进展。 R…

【支付宝】对接手机网站支付踩坑点记录

前言 简单记录一下对接Wap支付的问题&#xff0c;alipay和wxpay认证过程差不多&#xff0c;有个体商户或企业即可&#xff0c;前者文档不易懂后者还好&#xff0c;但是wxpay门槛高&#xff0c;个人认为pc网站支付(native支付)就是为了收300认证费&#xff01; 应用公私钥 第一…

【数据结构】时间复杂度的例题

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构 &#x1f337;追光的人&#xff0c;终会万丈光芒 前言&#xff1a; 这篇文章是关于时间复杂度的一些例题&#xff0c;关于时间复杂度和空间复杂度和算法的计算效率的基本知识点我放在…

应变计技术解读:如何精确测量结构物的形变

振弦式应变计是一种用于精确测量结构物形变的高精度仪器。这种应变计利用了振弦原理&#xff0c;即物体的振动频率会因其尺寸、形状或应变状态的改变而改变。通过测量这种频率变化&#xff0c;振弦式应变计能够提供关于材料形变的详细信息&#xff0c;这在结构健康监测、工程试…

Apache POI报表统计

Apache POl是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POl 在 Java 程N序中对Miscrosoft Office各种文件进行读写操作。一般情况下&#xff0c;POI都是用于操作 Excel 文件。 导入Maven坐标&#xff1a; <dependency>&l…

【数据结构(八)上】二叉树经典习题

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你学更多数据结构的知识 目录 1.前言2.经典习题2.1相同的树2.2另一棵子树2.3翻转二叉树2.4平衡二叉树2.5对…

免费开源圈子社交交友社区系统 可打包小程序 支持二开 源码交付!

线上社交的好处&#xff1a; 当今社会&#xff0c;人们越来越依赖于网络社交。互联网无疑为人类带来了许多好处&#xff0c; 其中一个就是线上社交。通过各种社交平台&#xff0c;人们可以随时随地互动交流&#xff0c;扩大自 己的社交圈&#xff0c;丰富生活。但是&#xf…

智慧水务能效管理系统平台/地下污水厂配电系统电气安全设计

安科瑞电气薛瑶瑶18701709087 1、引言 地下水污厂在城市建设中扮演着重要的角色,负责对城市污水和废物进行处理和排放。然而,由于地下水污厂中存在着许多危险因素,如有害气体、液体和固体废物等,因此要保证电气安全。电气安全系统是地下水污厂安全生产的重要保障措施之一,包括…

常见的软件架构模式

在软件开发过程中&#xff0c;软件架构模式是实现高质量、可扩展系统的关键。本文将介绍一些常见的软件架构模式&#xff0c;分析其优缺点和适用场景&#xff0c;从而帮助大家在实际项目中做出更明智的架构选择&#xff08;注意以下的架构模式相互之间并不一定互斥&#xff0c;…