MySQL数据库的约束限制详解
作者:面屏思过??????? 发布时间:2024-01-16 02:53:38
标签:MySQL,数据库,约束
一、介绍
数据库的约束是对表中数据进行的一种限制,为了保证数据的正确性、有效性、完整性。
无论是在添加数据还是在删除数据的时候,都能提供帮助。所有的关系型数据库都支持对数据表的约束。
主键:唯一标识一条记录,不能重复,不允许为空。主要用来保证数据的完整性。
外键: 表的外键是另一表的主键,外键可以有重复,可以为控制。主要用来和其他表建立联系。
二、操作
添加
添加主键:
// 一般设置id为主键
CREATE TABLE student(
id INT PRIMARY KEY,
NAME VARCHAR(30),
age INT
);
添加自增主键:
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30),
age INT
);
创建唯一约束:
// 这里age为唯一约束
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30),
age INT UNIQUE
);
创建非空约束:
// 这里 NAME 属性为非空约束
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30) NOT NULL,
age INT UNIQUE
);
建表时添加外键约束:
// 这里是指orderlist这个表的uid是USER表id主键的外键约束
CREATE TABLE orderlist(
id INT PRIMARY KEY AUTO_INCREMENT, -- id
number VARCHAR(20) NOT NULL, -- 订单编号
uid INT, -- 外键列
CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id)
);
建表后单独添加主键约束:
ALTER TABLE student MODIFY id INT PRIMARY KEY;
建表后单独添加非空约束:
ALTER TABLE student MODIFY NAME VARCHAR(30) NOT NULL;
建表后单独添加唯一约束:
ALTER TABLE student MODIFY age INT UNIQUE;
建表后单独添加外键约束:
ALTER TABLE orderlist ADD CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id);
删除
删除主键:
LTER TABLE student DROP PRIMARY KEY;
删除自增约束:
ALTER TABLE student MODIFY id INT;
删除唯一约束:
ALTER TABLE student DROP INDEX age;
删除非空约束:
ALTER TABLE student MODIFY NAME VARCHAR(30);
删除外键约束:
ALTER TABLE orderlist DROP FOREIGN KEY ou_fk1;
外键联级操作
添加外键约束,同时添加级联更新 标准语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名)
ON UPDATE CASCADE;
添加外键约束,同时添加级联删除 标准语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名)
ON DELETE CASCADE;
添加外键约束,同时添加级联更新和级联删除 标准语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名)
ON UPDATE CASCADE ON DELETE CASCADE;
来源:https://juejin.cn/post/7125453297288216613
0
投稿
猜你喜欢
- 场景游戏里有很多关卡(可能有几百个了),理论上每次发布到外网前都要遍历各关卡看看会不会有异常,上次就有玩家在打某个关卡时卡住不动了,如果每个
- 这个翻滚代码没有使用什么marquee或者其它位移方法,而是每隔一秒把列表最顶端的那个li删掉,把这个li里面的内容插入到最底端新生成的li
- CAST函数用于将值从一种数据类型转换为表达式中指定的另一种数据类型语法CAST(value AS datatype)AS关键字用于分隔两个
- 在 python 开发中我们最常用的IDE就是PyCharm,有关PyCharm的优点这里就不在赘述。在项目开发中我们经常用到许多第三方库,
- 去听了牛人 dbaron 的一个 Web Page Layout/Display in Mozilla 讲座( via )。讲的东西对我一个
- 一、内存泄漏像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题。对于一个用 python 实现的,长
- 1 简介kepler.gl作为开源地理空间数据可视化神器,也一直处于活跃的迭代开发状态下。而在前不久,kepler.gl正式发布了其2.4.
- Django 提供了两种方式来执行原生 SQL 代码。一种是使用 raw() 函数,一种是 使用 connection.cursor()。但
- 根据"客服果果"的"十几行的超简日历组件"http://bbs.51js.com/viewthrea
- 1. 相对与比较老的环境,建议使用第二个 set dbconnection=Server.CREATEOBJECT("ADODB.
- SQL Server 2005默认是不允许远程连接的,要想通过远程连接实现MSSQL,数据库备份,需要做如下设置:步骤/方法1.打开SQL
- 很早就听说韩国网站的设计师们很会利用空间,来创造更多的信息承载量.最近浏览了几个韩国SHOPPING网站果不其然,就拿小小的广告轮播来说,非
- 之前使用smarty的时候,通常是在php程序端读取数据(一般从数据库),然后assign给模板的变量,才可以在前端使用这个变量。这样不是不
- python 如何实现Excel 的Vlookup功能1、Excel 中VLOOKUP具体步骤Excel 中的VLOOKUP使用说明采用下面
- 前言声明:python版本3.6,以下讨论的Python也都是适用于3.x版本在实际使用安装python的pip安装 依赖库是非常的便捷的。
- Python函数的设计规范1、Python函数设计时具备耦合性和聚合性1)、耦合性:(1).尽可能通过参数接受输入,以及通过return产生
- Linux RedHat下安装Python2.7、pip、ipython环境、eclipse和PyDev环境准备工作,源Python2.6备
- 虚拟环境的搭建为什么要使用虚拟环境#1、使不同应用开发环境相互独立2、环境升级不影响其他应用,也不会影响全局的python环境3、防止出现包
- 每天你都可能会执行许多重复的任务,例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等,使用自动化脚本,就无需手动一次又一次地完成这些任
- 本文介绍基于PowerShell语言,对文件夹中全部文件的名称加以批量替换、修改的方法。在之前的文章基于Python实现自动批量修改文件名称