MySQL六种约束的示例详解(全网最全)

第一步,先介绍约束的概念以及常见的六种约束:

在MySQL中,约束是对表中数据的限制,可以在创建表的过程中定义或者在表创建完成之后添加。六种常见数据库约束包括:

  1. PRIMARY KEY (主键)
  2. FOREIGN KEY(外键)
  3. UNIQUE(唯一)
  4. NOT NULL(非空)
  5. CHECK(检查)
  6. DEFAULT(默认)

主键的作用是唯一标识每张表内每一行数据,一个表只能有一个主键。外键是用来建立表之间关联的,从一张表中创建一个对应另一张表中主键的列即可。唯一约束是保证表中的某个列的值是唯一的,不与其他行重复。非空约束是保证表中某个列不为空。检查约束是保证表中某个列的值符合一定的条件。默认约束是当表中某个列的值未指定时,默认给这一列赋值。

第二步,分别对六种约束进行一一讲解:

主键约束的示例:可以创建一个students表,然后给这个表创建一个id列,然后使用PRIMARY KEY关键词将这个列设置为主键。示例代码:

CREATE TABLE students (
  id INT NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  age INT DEFAULT NULL,
  PRIMARY KEY (id)
);

外键约束的示例:可以创建一个students和一个grades表来演示外键的示例。students表中的id列作为主键,grades表中有一个student_id列来与students表中的id列建立关联关系。示例代码:

CREATE TABLE students (
  id INT NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  age INT DEFAULT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE grades (
  id INT NOT NULL AUTO_INCREMENT,
  class varchar(255) NOT NULL,
  grade INT DEFAULT NULL,
  student_id INT NOT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (student_id) REFERENCES students(id)
);

唯一约束的示例:可以为students表添加一个unique索引,保证name列的值唯一。示例代码:

CREATE UNIQUE INDEX idx_unique_name ON students (name);

非空约束的示例:在students表中,可以让name列不允许为空。示例代码:

CREATE TABLE students (
  id INT NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  age INT DEFAULT NULL,
  PRIMARY KEY (id)
);

检查约束的示例:在students表中,可以设置age列的值只允许为正整数。示例代码:

CREATE TABLE students (
  id INT NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  age INT DEFAULT NULL,
  CHECK (age > 0),
  PRIMARY KEY (id)
);

默认约束的示例:在students表中,如果不指定age列的值,则将age列的值设置为20。示例代码:

CREATE TABLE students (
  id INT NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  age INT DEFAULT 20,
  PRIMARY KEY (id)
);

第三步,总结:

MySQL的六种约束各有不同的作用和应用场景,这些约束可以保证表中的数据存储的合法性和有效性,也可以使得表与表之间的关系更加紧密。实际开发中,我们根据需求选择合适的约束,并将其应用在相应的列上,以达到更好的数据约束和存储效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL六种约束的示例详解(全网最全) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • mybatis统计每条SQL的执行时间的方法示例

    下面详细讲解一下“mybatis统计每条SQL的执行时间的方法示例”的完整攻略。 1、背景介绍 在系统开发过程中,我们需要了解每条SQL的执行耗时,以便于找到慢SQL并进行优化调整。MyBatis提供了一个简单的拦截器接口,我们可以通过扩展该接口的实现类来完成统计每条SQL的执行时间。下面,我们来介绍具体的实现方法。 2、拦截器编写 我们使用MyBatis的…

    database 2023年5月22日
    00
  • MySQL系列之三 基础篇

    MySQL系列之三 基础篇 一、概述 MySQL是一种关系型数据库管理系统,是最流行的开源数据库之一。在本篇基础篇教程中,我们将介绍MySQL的基础知识,包括创建表、插入数据、查询数据、更新数据、删除数据等操作。 二、创建表 在使用MySQL之前,需要先创建数据库和表。以下是创建表的基本语法: CREATE TABLE table_name ( column…

    database 2023年5月22日
    00
  • Redis Geo: Redis新增位置查询功能

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/144.html   移动互联网增进了人与人之间的联系,其中基于位置信息的服务(Location Based Service,LBS)起到很重要的促进作用。在移动互联网的大环境下,每个手机都变成了一个位置追踪设备,为人们提供了非常丰富的…

    Redis 2023年4月13日
    00
  • CentOS环境下安装Redis3.0及phpredis扩展测试示例

    下面是CentOS环境下安装Redis3.0及phpredis扩展测试示例的完整攻略: 1. 安装Redis3.0 1.1 安装依赖 安装Redis之前,需要安装一些工具和依赖库。执行以下命令进行安装: yum install gcc-c++ -y yum install centos-release-scl -y yum install devtoolse…

    database 2023年5月22日
    00
  • SQL Server高级内容之case语法函数概述及使用

    SQL Server高级内容之case语法函数概述及使用攻略 1. 简介 CASE语法函数是SQL Server中用于对条件进行判断输出的函数。CASE语法函数是一种灵活的、可嵌套的条件判断语句,可以极大的增强SQL Server的查询能力。 2. 语法格式 在SQL Server中,CASE函数语法格式如下: CASE WHEN condition_1 T…

    database 2023年5月21日
    00
  • Zabbix监控方案-官方最新4.4版本【推荐】

    Zabbix监控方案-官方最新4.4版本【推荐】 概述 Zabbix是一款高度可配置的企业级开源网络监控系统,能够提供实时监控、报警、可视化等功能。本文将详细介绍如何搭建Zabbix监控方案,让您更好的使用和了解该系统。 准备工作 在开始搭建Zabbix监控方案之前,需要满足以下条件: 已安装CentOS 7操作系统; 已安装MySQL数据库; 已安装Apa…

    database 2023年5月21日
    00
  • 如何使用Python在MySQL中使用视图?

    当使用Python与MySQL交互时,可以使用视图来简化复杂的查询。视图是一种虚拟表,它是基于一个或多个表的查询结果。以下是使用在MySQL中使用视图的整略,包括创建视图、使用视图和删除视图等步骤同时,还提供了两个示例来演示如何在Python中使用MySQL视图。 创建视图 在Python中使用MySQL视图之前,需要先在MySQL中创建视图。可以使用以下代…

    python 2023年5月12日
    00
  • mysql多个TimeStamp设置的方法解读

    下面是关于“mysql多个TimeStamp设置的方法解读”的完整攻略: 什么是 MySQL 中的 TimeStamp TimeStamp是 MySQL 中的一种数据类型,用于表示时间戳。它的值会随着时间自动更新,非常适合用于记录数据的创建时间和更新时间。 如何在 MySQL 中设置多个 TimeStamp 在MySQL中,我们可以通过为特定列添加 ON U…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部