约束

约束保证数据的完整性和一致性

约束分为表级约束和列级约束

约束类型包括:NOT NULL (非空约束),PRIMARY KEY(主键约束),UNIQUE KEY(唯一约束),DEFAULT(默认约束),FOREIGN(外键约束)

1.主键约束

PRIMARY KEY

每张数据表只能存在一个主键

主键保证记录的唯一性,主键的值不重复

主键自动为 NOT NULL

举例,创建一张student表,将学号设置为主键创建完表之后,通过SHWO COLUMNS FROM student查看表结构

CREATE TABLE student(

id int PRIMARY KEY,

stu_name varchar(20)

);

2.唯一约束

UNIQUE KEY

唯一约束可以保证记录的唯一性

唯一约束的字段可以为空值(NULL)

每张数据表可以存在多个唯一约束

举例,创建一个teacher表,id字段自增,tea_name唯一

CREATE TABLE teacher(

id int AUTO_INCREMENT PRIMARY KEY,

tea_name varchar(20) NOT NULL UNIQUE KEY

);

3.默认约束

DEFAULT

当插入记录时,如果没有明确为字段赋值,则自动赋予默认值

举例,创建一张course表,默认上课时间为40分钟

CREATE TABLE course(

id int AUTO_INCREMENT PRIMARY KEY,

cou_name varchar(20) NOT NULL UNIQUE KEY,

time int DEFAULT 40

);

INSERT INTO course(cou_name) values('语文');

4.非空约束

NOT NULL

强制列不能为 NULL 值,约束强制字段始终包含值。

这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

举例,在 "Persons" 表创建时在 Id列、name列创建 not null 约束:

create table Persons(

id int not NULL,

p_name varchar(20) not null,

deparment varchar(20),

address varchar(20),

telNum varchar(20)

)

DESC Persons;

5.外键约束

FOREIGN KEY

保持数据的一致性,完整性

实现1对1或1对n关系

1.父表与子表必须使用相同的存储引擎,而且禁止使用临时表。

2.数据表的存储引擎只能是InnoDB

3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。

4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

CREATE TABLE school(

id int AUTO_INCREMENT PRIMARY KEY,

sname varchar(20) NOT NULL

);

CREATE TABLE student2(

id int AUTO_INCREMENT PRIMARY KEY,

sid int,

FOREIGN KEY (sid) REFERENCES school(id)

);

外键约束的参照操作

CASCADE : 从父表删除或更新且自动删除或更新子表中匹配的行

父表中被引用的列删除了某个数据,子表中删除对应数据的行

CREATE TABLE student3(

id int AUTO_INCREMENT PRIMARY KEY,

sid int,

FOREIGN KEY (sid) REFERENCES school(id) ON DELETE CASCADE

);

SET NULL:从父表删除或更新行,并设置子表的外键列为NULL。如果使用该项,必须保证子表列没有指定NOT NULL

父表中删除数据,将子表中的引用设置为NULL

RESTRICT:拒绝对父表的删除或更新操作

NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

本文标题: MySQL约束类型及举例介绍

本文地址: http://www.cppcns.com/shujuku/mysql/242104.html

Mysql数据库---约束类型_MySQL约束类型及举例介绍相关推荐

  1. mysql 数据库 数组类型转换_mysql数字类型的数据如何进行转换?

    如何将MySQL数据库中的数字类型转换为数字函数,今天给大家介绍mysql中的转换函数,这个在实际的生活应用中是运用广泛的,大大减少了我们自己手动进行数字类型的转换. 我们今天主要向大家介绍的是用My ...

  2. java 修改mysql数据库表结构_MYSQL数据库表结构优化方法详解

    摘要:这篇MySQL栏目下的"MYSQL数据库表结构优化方法详解",介绍的技术点是"mysql数据库表结构.MySQL数据库.数据库表结构.MySQL.据库表结构.数据库 ...

  3. mysql数据库访问记录_MySQL数据库运行、访问记录与日志

    以下的文章主要向大家介绍的是查看MySQL数据库运行.访问记录与日志的实际操作,我们大家都知道MySQL数据库运行.访问记录与日志的实际应用可以说很是广泛,以下的文章就是对这些内容的详细介绍. 1.首 ...

  4. mysql数据库blob区别_MySQL中TEXT与BLOB字段类型的区别

    在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT ...

  5. mysql数据库blob换行_mysql数据库blob类型

    Java -- JDBC 学习--处理Blob Oracle LOB LOB,即Large Objects(大对象),是用来存储大量的二进制和文本数据的一种数据类型(一个LOB字段可存储可多达4GB的 ...

  6. Mysql数据库(1.表的约束,以及数据表相关操作和字段名的相关操作)

    1.windows10中命令行进入mysql   mysql -u root -p     然后输入数据库的密码即可    MySQL创建表并设置约束 1.1创建表,设置id为主键  (primary ...

  7. MySQL数据库,数据的约束

    目录 1.数据的约束 1.1约束的类型 1.2NULL约束 1.3UNIQUE约束 1.4DEFAULT约束 1.5PRIMARY KEY约束 1.6FOREIGN KEY约束 1.数据的约束 首先, ...

  8. mysql完整字段包括_MySQL字段类型最全解析

    前言: 要了解一个数据库,我们必须了解其支持的数据类型.MySQL 支持大量的字段类型,其中常用的也有很多.前面文章我们也讲过 int 及 varchar 类型的用法,但一直没有全面讲过字段类型,本篇 ...

  9. mysql 表 类型_mysql表类型

    MySQL支持6种不同的表类型:BDB.InnoDB.HEAP.ISAM.MERGE以及MyISAM.其中 BDB,InnoDB单独属于一类,称为"事务安全型"(transacti ...

最新文章

  1. 2022-2028年中国服务器行业投资分析及前景预测报告
  2. 利用JS判断是手机端还是PC端 浏览网站
  3. android 无线调试
  4. 智宇科技 ZYARJX-1机械臂智能小车 —— 手机端蓝牙控制程序
  5. 本地启动 Hybris 服务器调试模式后,监听在 8000 端口
  6. 牛客网暑期ACM多校训练营(第一场)
  7. 如何进行云主机带宽测试
  8. 【2021新版】一线大厂 Go 高频面试题,整理分析合集
  9. screen,client,page三种确定鼠标坐标的区别和原生JS事件写法,区别于Jquery的$.on(x,y);和$.click()...
  10. 阿里云中获取文件及目录列表的方法
  11. win10卸载电脑管家就蓝屏_Win10系统运行腾讯软件出现蓝屏TesSafe.sys 解决方案
  12. 什么是自然语言处理,自然语言处理的技术优势和应用领域
  13. python制作病毒_python做病毒
  14. html input粘贴功能,原生js实现复制粘贴功能
  15. bzoj:1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名
  16. jacod 使用 WPS或 office相关注册表信息
  17. vue核心之虚拟DOM(vdom)与真实DOM页面渲染过程
  18. WkwebView调节字体大小获取高度
  19. ERROR: Failed to open zip file. Gradle‘s dependency cache may be corrupt (this sometimes occurs afte
  20. FFmpeg内存管理

热门文章

  1. 里奥机器人控制app_Mio控制APP-mio机器人控制app1.1.3 安卓版【咪奥机器人控制】-东坡下载...
  2. 实例【GPA计算器】的制作过程之MFC初体验收获
  3. OpenCV-Python投影透视变换函数getPerspectiveTransform及warpPerspective详解
  4. IO有Buffered IO 和 Direct IO
  5. JVisualVM工具查看Java堆的情况
  6. 查看linux服务器的内存和CPU信息
  7. Skia深入分析6——skia中图像编解码代码概述
  8. CSS布局—网格布局Grid(一)
  9. [附源码]计算机毕业设计springboot家庭医生签约服务管理系统
  10. java.io.IOException: Resetting to invalid mark