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


猜你喜欢
- QZONE平台的相册功能为保证加载速度一直以来以简洁的图片排列查看模式呈现相片,随着市场上各类相册产品推陈出新,用户越来越强烈的要求个人相册
- 本文实例为大家分享了python版百度语音识别功能的具体代码,供大家参考,具体内容如下环境:使用的IDE是Pycharm1.新建工程2.配置
- 本文实例讲述了JS截取与分割字符串的常用方法。分享给大家供大家参考,具体如下:JS截取字符串可使用 substring()或者slice()
- 在Python中可以存储很大的值,如下面的Python示例程序:x = 1000000000000000000000000000000000
- 2006-10-8表数据:tab1id name numA  
- 如下所示:import requestsurl='http://####'proxy={'http':
- PHP如何获取当前页完整URL及其参数 <? echo 'http://'.$_SERVER[&
- 老板由于事务繁忙无法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少人。o(>﹏<)o|||最初我的想法
- 因工作需要,最近在学习使用python来解析各种文件,包括xmind,xml,excel,csv等等。在学习python解析XML的时候看到
- python语句mode = ‘test’ if y is None else &lsquo
- 具体代码如下:from django.template import loaderfrom emai
- 一、configparser模块是什么可以用来操作后缀为 .ini 的配置文件;python标准库(就是python自带的意思,无需安装)二
- 1. yum list installed | grep php 查看安装的php版本mod_php72w.x86_64 7.2.1-1.w
- 1.安装 Selenium 模块Selenium支持很多浏览器,我选择的是Firefox浏览器。安装方法:①打开cmd;②输入命令 pip
- IDLE 3.0 >>> dic = {"aa":1,"bb":2,"a
- 1,System.ComponentModelSystem.ComponentModel 命名空间提供用于实现组件和控件的运行时和设计时行为
- Web框架把我们从WSGI中拯救出来了。现在,我们只需要不断地编写函数,带上URL,就可以继续Web App的开发了。但是,Web App不
- select 终极美化,主要是针对下拉框的美化一个很古老的话题了,不过貌似目前为止也没有比较好的做到,在jxdawei的基础上做了
- 首先上结构mynode -> app5 -> urls.py & views.py| -> templates -
- 本文实例讲述了php设计模式之正面模式。分享给大家供大家参考,具体如下:星际里面的战斗都是在地图上进行的,只要我们可以编辑地图,就可以创造一