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;

到此这篇关于MySQL数据库的约束限制详解的文章就介绍到这了,更多相关MySQL 约束内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于MySQL数据库的数据约束实例及五种完整性约束介绍

    为了防止不符合规范的数据进入数据库,在用户对数据进行插入.修改.删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确.有效.相容. #数据约束 #五种完整性约束: #NOT NULL :非空约束,指定某列不能为空: #UNIQUE : 唯一约束,指定某列或者几列组合不能重复 #PRIMARY KEY :主键,指定该列的值可以唯一地标识该列记录 #FOREIGN KEY :外键,指定该行记录从属于主表中的一条记录,主要用于参照完

  • Mysql关于数据库是否应该使用外键约束详解说明

    一.前言 对于[是否使用外键约束]这个话题已经是老生常谈的了.在学校中,老师交给我们的大多是需要我们建立外键约束,但进入了实际工作很多时候并不会使用外键,而是通过代码逻辑来控制.包括在阿里的JAVA规范中也明确规定:[强制]不得使用外键与级联,一切外键概念必须在应用层解决. 为什么要做这样的规定呢?到底该不该使用外键约束呢?我们可以举一个例子来说明 二.举例说明 现在我们在数据库中建立了两张表:[product和project],[project]的porduct字段,关联Product,他们之

  • MySQL数据库表约束讲解

    目录 MySQL数据库表约束 一.主键约束 二.外键约束 三.非空约束 四.唯一约束 五.默认约束 六.自增约束 数据库建表的约束条件 常用约束条件及简单介绍 MySQL数据库表约束 为了防止往数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束. 常见的表的约束: 上表中列举的约束条件都是针对表中字段进行限制, 从而保证数据表中数据的正确性和唯一性. 一.主键约束 在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现.主键约束是通过PRIMARY

  • MySQL示例讲解数据库约束以及表的设计

    目录 数据库约束 not null unique default primary key 主键 foreign key 外键 check 表的设计 一对一 一对多 多对多 数据库约束 not null 指定某列的存储不能为null值 create table student (id int not null,name varchar(20)); Query OK, 0 rows affected (0.01 sec) mysql> desc student; +-------+---------

  • MySQL数据库多表操作通关指南(外键约束和多表联合查询)

    目录 1 多表关系 2 外键约束(FOREIGN KEY) 2.1 外键约束说明 2.2 外键约束的创建 2.3 外键约束实操:一对多关系 2.4 删除外键约束 2.5 外键约束实操:多对多关系 3 多表联合查询 3.1 联合查询的简介和分类 3.2 联合查询数据准备 3.3 交叉联合查询 3.4 内连接查询 3.5 外连接查询 3.6 子查询 3.6.1 子查询说明与实操 3.6.2 子查询中的关键字 3.7 自关联查询 写在最后 1 多表关系 一对一关系 比如:一个人有一个身份证,一个身份证

  • MySQL数据库如何给表设置约束详解

    目录 一.PK(主键约束) 1.什么是主键? 2.怎么设置主键? 二.FK(外键约束) 1.什么是外键 2.怎么设置外键 三.unique(唯一约束) 1.什么是唯一约束? 2.如何设置唯一约束 四.notnull(非空) 五.default(默认值) 六.auto_increment(自增) 一.PK(主键约束) 1.什么是主键? 在了解主键之前,先了解一下什么是关键字 关键字:在表中具有唯一性的字段,比如一个人的身份证号,学号.一个表中可以有多个关键字. 主键也叫主关键字,就是由一个或多个关

  • MySQL学习之数据库表五大约束详解小白篇

    目录 1.约束概念和分类 2.五大约束的添加和删除 2.1添加约束的六种方法 2.2三种删除约束的方式 2.3五大约束分别对应的添加删除方式(序号对应2.1和2.2) 2.4对于创建约束的总结 2.5对于主键和唯一的区别 3.自增长列 3.1概念 3.2在创建表的时候添加主键约束,并且完成主键自增长的例子 3.3自增长的添加和删除 3.4设置自增长步长 1.约束概念和分类 1.1约束的概念: 对表中的数据进行限定,保证数据的正确性,有效性,完整性 1.2约束分类 1.主键约束(primary k

  • MySQL 数据库的约束及数据表的设计原理

    目录 1. 数据库的约束 1.1 介绍 1.2 约束类型 1.3 not null 1.4 unique 1.5 default 1.6 primary key 1.7 foreign key 1.8 check 2. 数据库表的设计 2.1 一对一关系 2.2 一对多关系 2.3 多对多关系 1. 数据库的约束 1.1 介绍 数据库中的约束 ,顾名思义即是对插入数据库中的数据进行限定,这么做的目的是为了保证数据的有效性和完整性. 这样就大幅度地提高了数据库中数据的质量,节省了数据库的空间和调用

  • MySQL数据库的约束限制详解

    目录 一.介绍 二.操作 添加 删除 外键联级操作 一.介绍 数据库的约束是对表中数据进行的一种限制,为了保证数据的正确性.有效性.完整性. 无论是在添加数据还是在删除数据的时候,都能提供帮助.所有的关系型数据库都支持对数据表的约束. 主键:唯一标识一条记录,不能重复,不允许为空.主要用来保证数据的完整性. 外键: 表的外键是另一表的主键,外键可以有重复,可以为控制.主要用来和其他表建立联系. 二.操作 添加 添加主键: // 一般设置id为主键 CREATE TABLE student( id

  • Java之jdbc连接mysql数据库的方法步骤详解

    Java:jdbc连接mysql数据库 安装eclipse和mysql的步骤这里不赘述了. 1.一定要下jar包 要想实现连接数据库,要先下载mysql-connector-java-5.1.47(或者其他版本)的jar包.低版本的jar包不会出现时差问题的异常. 建议在下载界面点右边的"Looking for previous GA versions?"下载低版本的. https://www.jb51.net/article/190860.htm我看的是这个教程. 2.mysql前期

  • Mysql数据库group by原理详解

    目录 引言 1. 使用group by的简单例子 2. group by 原理分析 2.1 explain 分析 2.2 group by 的简单执行流程 3. where 和 having的区别 3.1 group by + where 的执行流程 3.2 group by + having 的执行 3.3 同时有where.group by .having的执行顺序 3.4 where + having 区别总结 4. 使用 group by 注意的问题 4.1 group by一定要配合聚

  • MySQL数据库中表的操作详解

    目录 1.Mysql中的数据类型 2.创建数据表 3.删除表 4.插入数据 5.更新数据 6.删除数据 7.快速复制表 8.快速删除表数据 1.Mysql中的数据类型 varchar 动态字符串类型(最长255位),可以根据实际长度来动态分配空间,例如:varchar(100) char 定长字符串(最长255位),存储空间是固定的,例如:char(10) int 整数型(最长11位) long 长整型 float 单精度 double 双精度 date 短日期,只包括年月日 datetime

  • nodejs连接mysql数据库及基本知识点详解

    本文实例讲述了nodejs连接mysql数据库及基本知识点.分享给大家供大家参考,具体如下: 一.几个常用的全局变量 1.__filename获取当前文件的路径 2.__dirname获取当前文件的目录 3.process.cwd()获取当前工程的目录 二.文件的引入与导出 1.使用require引入文件 2.使用module.exports导出文件中指定的变量.方法.对象 三.node项目的搭建目录结构 demo package.json 当前项目所依赖的包或者模块     router  存

  • 基于mysql数据库的密码问题详解

    今儿在做实验用到mysql数据库时,用户密码忘记了,让我也是找了半天:现在给大家介绍下我自己的方法:用到了mysql自身的函数来测试的. 复制代码 代码如下: mysql> select user,password,host from user;+------+------------------+-----------+| user | password         | host      |+------+------------------+-----------+| root | 7

  • 如何利用C++实现mysql数据库的连接池详解

    目录 为什么是mysql? 为什么要搞资源池? mysql资源池实现的案例源码 头文件:MysqlPool.h 实现文件:MysqlPool.cpp 测试函数 总结 为什么是mysql? 现在几乎所有的后台应用都要用到数据库,什么关系型的.非关系型的:正当关系的,不正当关系的:主流的和非主流的, 大到Oracle,小到sqlite,以及包括现在逐渐流行的基于物联网的时序数据库,比如涛思的TDengine,咱们中国人自己的开源时序数据库,性能杠杠滴. 凡此总总,即使没用过,也听说过,但大部分人或企

  • mysql数据库查询基础命令详解

    目录 1.启动数据库命令行客户端 2.查询数据库 3.进入数据库 3.查询所在数据库中所有表信息 4.查询数据库某张表结构 5.简单select查询语句(单张表) 5.1查询单张表所有数据 5.2 LIMIT限制查询结果返回数据项 5.3查询指定列数 5.4 WHERE带条件精准查询 5.5 LIKE使用通配符模糊查询 5.6 ORDER BY查询结果排序 1.启动数据库命令行客户端 #linux命令,注意区分大小写 mysql 2.查询数据库 #执行结果:返回所有数据库列表 SHOW DATA

  • MySQL数据库事务隔离级别详解

    数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为 Read uncommitted:允许脏读. Read committed: 防止脏读,最常用的隔离级别,并且是大多数数据库的默认隔离级别. Repeatable read:可以防止脏读和不可重复读. Serializable:可以防止脏读,不可重复读取和幻读,(事务串行化)会降低数据库的效率. 这四个级别可以逐个解决脏读 .不可重复读 .幻读 这几类问题. √: 可能出现 ×: 不会出现 事务级别 脏读 不可重复读 幻读 Read

  • MySQL数据库服务器端核心参数详解和推荐配置

    MySQL手册上也有服务器端参数的解释,以及参数值的相关说明信息,现针对我们大家重点需要注意.需要修改或影响性能 的服务器端参数,作其用处的解释和如何配置参数值的推荐,此事情拖了不少时间,为方便大家帮忙纠错(注:总是断断续续写的,可能存在笔误),先以文章的方 式发布到网站,后续确定没问题,将会通过新浪微博的微盘提供PPT下载,方便学习和参考. l lower_case_table_names Linux或类Unix平台,对文件名称大小写敏感,也即对数据库.表.存储过程等对象名称大小写敏 感,为减

随机推荐