服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL数据库的约束限制详解

MySQL数据库的约束限制详解

2022-08-03 11:35面屏思过 Mysql

这篇文章主要介绍了MySQL数据库的约束限制详解,数据库的约束是对表中数据进行的一种限制,为了保证数据的正确性、有效性、完整性,下文简单介绍需要的朋友可以参考一下

一、介绍

数据库的约束是对表中数据进行的一种限制,为了保证数据的正确性、有效性、完整性。

无论是在添加数据还是在删除数据的时候,都能提供帮助。所有的关系型数据库都支持对数据表的约束。

  • 主键:唯一标识一条记录,不能重复,不允许为空。主要用来保证数据的完整性。
  • 外键: 表的外键是另一表的主键,外键可以有重复,可以为控制。主要用来和其他表建立联系。

二、操作

添加

添加主键:

?
1
2
3
4
5
6
// 一般设置id为主键
CREATE TABLE student(
    id INT PRIMARY KEY,
    NAME VARCHAR(30),
    age INT
);

添加自增主键:

?
1
2
3
4
5
CREATE TABLE student(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(30),
    age INT
);

创建唯一约束:

?
1
2
3
4
5
6
// 这里age为唯一约束
CREATE TABLE student(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(30),
    age INT UNIQUE
);

创建非空约束:

?
1
2
3
4
5
6
// 这里 NAME 属性为非空约束
CREATE TABLE student(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(30) NOT NULL,
    age INT UNIQUE
);

建表时添加外键约束:

?
1
2
3
4
5
6
7
// 这里是指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)
);

建表后单独添加主键约束:

?
1
ALTER TABLE student MODIFY id INT PRIMARY KEY;

建表后单独添加非空约束:

?
1
ALTER TABLE student MODIFY NAME VARCHAR(30) NOT NULL;

建表后单独添加唯一约束:

?
1
ALTER TABLE student MODIFY age INT UNIQUE;

建表后单独添加外键约束:

?
1
ALTER TABLE orderlist ADD CONSTRAINT ou_fk1 FOREIGN KEY (uid) REFERENCES USER(id);

删除

删除主键:

?
1
LTER TABLE student DROP PRIMARY KEY;

删除自增约束:

?
1
ALTER TABLE student MODIFY id INT;

删除唯一约束:

?
1
ALTER TABLE student DROP INDEX age;

删除非空约束:

?
1
ALTER TABLE student MODIFY NAME VARCHAR(30);

删除外键约束:

?
1
ALTER TABLE orderlist DROP FOREIGN KEY ou_fk1;

外键联级操作

?
1
2
3
4
5
6
7
8
9
10
11
添加外键约束,同时添加级联更新  标准语法:
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 约束内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7125453297288216613

延伸 · 阅读

精彩推荐
  • MysqlMySQL优化之如何写出高质量sql语句

    MySQL优化之如何写出高质量sql语句

    在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要因素。这篇文章主要给大家介绍了关于MySQL优化之如何写出高质量s...

    strive_day4442021-07-14
  • Mysqlmysql 复制过滤重复如何解决

    mysql 复制过滤重复如何解决

    在进行mysql复制过程中,会出现数据重复的现象,怎样利用mysql 过滤重复的数据呢?本文将提供详细的解决方法,需要了解的朋友可以参考下 ...

    MYSQL教程网5602019-12-12
  • Mysql分析MySQL抛出异常的几种常见解决方式

    分析MySQL抛出异常的几种常见解决方式

    在本文中,总结了开发过程中最为常见的几种 MySQL 抛出的异常以及如何解决,包括高版本驱动的问题、时区配置问题、SSL 连接问题等。于我个人而言,这...

    华为云开发者社区11272021-07-16
  • Mysqlmysql 5.5.x zip直接解压版安装方法

    mysql 5.5.x zip直接解压版安装方法

    这篇文章主要介绍了mysql 5.5.x zip直接解压版安装方法 ,需要的朋友可以参考下 ...

    MYSQL教程网2622020-06-04
  • Mysql有关mysql的一些小技巧

    有关mysql的一些小技巧

    有关mysql的一些小技巧,有需要的朋友可以参考下 ...

    MYSQL教程网4782019-12-17
  • Mysqlmysql unique key在查询中的使用与相关问题

    mysql unique key在查询中的使用与相关问题

    今天小编就为大家分享一篇关于mysql unique key在查询中的使用与相关问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    iCoding914202020-09-18
  • Mysql深入数据库通用的连接方式详解

    深入数据库通用的连接方式详解

    本篇文章是对数据库通用的连接方式进行了详细的分析介绍,需要的朋友参考下 ...

    MYSQL教程网3212019-12-26
  • Mysql利用SQL注入漏洞登录后台的实现方法

    利用SQL注入漏洞登录后台的实现方法

    工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意。读这篇文章,我假设读者有过写SQL语句的经历,或者能看得懂SQL语...

    WEB开发_小飞6202019-11-28