MySQL数据库(五)

目录

一、数据库的约束

1.1 约束类型

1.1.1 null约束

1.1.2unique约束

1.1.3default默认值约束

1.1.4primary key主键约束

1.1.5foreign key外键约束

二、内容重点总结


一、数据库的约束

1.1 约束类型

not null - 指示某列不能存储 null值。
unique - 保证某列的每行必须有唯一的值。
default - 规定没有给列赋值时的默认值。
primary key - not null unique 的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。

1.1.1 null约束

创建表时,可以指定某列不为空:

create table student (
        id int not null,
        sn int,
        name varchar(20),
        email varchar(20)
);

当我们插入空值的时候会发生错误,这就是null约束

1.1.2unique约束

指定列为唯一的、不重复的

--将student删除重新构造表结构

drop table student;

create table student(
        id int not null,
        sn int unique,
        name varchar(20),
        email varchar(20)
);

 插入一条数据,在sn中插入一条重复的数据,看看能否插入成功

这里发现不能插入重复值

 这里发现,虽然不能重复,但是是可以为空值的

1.1.3default默认值约束

当插入数据的时候,列为空的时候,插入指定的默认值

-- 重新设置学生表结构
drop table student;
create table student (
         id int not null,
         sn int unique,
         name varchar(20) default 'kown',
         email varchar(20)
 );

下面进行插入看看姓名为空的一个效果,发现当我的列为空的时候会插入自定义的值

1.1.4primary key主键约束

相当于uniquenot null的结合,不重复也不能为空

-- 重新设置学生表结构
drop table student;

create table student (
         id int primary key,
         sn int unique,
         name varchar(20) default 'kown',
         email varchar(20)
);

插入数据查看效果,当前表中有一条数据

当插入重复的数据之后发现直接就报错了,说明不能插入重复的数据

同时,当插入数据的时候id为空时就会报错,所以说明不能为空

对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1

当插入值的时候并没有插入id的值 由于设置了自增长所以会有一个自增的值。

1.1.5foreign key外键约束

外键用于关联其他表的主键或唯一键,语法:

foreign key (字段名) references 主表(列)

案例:

  • 创建班级表classes,id为主键

-- 创建班级表,有使用MySQL关键字作为字段时,需要使用``来标识
 create table classes (
         id int primary key auto_increment,
         name varchar(20),
         `desc` varchar(100)  
--``这个符号是数字esc下面的那个符号
 );

对班级表插入数据

  • 创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id

-- 重新设置学生表结构
create table student (
        id int primary key auto_increment,
        sn int unique,

        classes_id int,
        name varchar(20) default 'unkown',

        foreign key(classes_id) references classes(id)

        --注意外键约束可以有多个
 );

由于学生表的classes_id是被班级表的id约束的,所以插入的过程中如果插入班级表中没有的班级是会报错的,但是班级表中含有的班级就不会。

 当插入一个班级表中没有的数据的时候就会报错。

classes表对student有一个约束作用,同时student对classes表也存在约束作用,当要删除classes表时会发现删除不掉!这里的显示意思就是说该表存在约束别人的条件不能进行删除

 要删除classes表应该怎么办呢,只能先删除student表

二、内容重点总结

约束类型说明示例
NULL约束使用NOT NULL指定列不为
name varchar(20) not null,
UNIQUE唯一约束指定列为唯一的、不重复的name varchar(20) unique,
DEFAULT默认值约
指定列为空时的默认值age int default 20,
主键约束NOT NULL 和 UNIQUE 的
结合
id int primary key,
外键约束关联其他表的主键或唯一键foreign key (字段名) references 主
表(列)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上市公司Git分支管理规范

Git分支管理策略 主分支Master 首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。 Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主…

采集传感器的物联网网关怎么采集数据?

随着工业4.0和智能制造的快速发展,物联网(IoT)技术的应用越来越广泛,传感器在整个物联网系统中使用非常普遍,如温度传感器、湿度传感器、光照传感器等,对于大部分物联网应用来说,采集传感器都非…

Ubuntu学习笔记(二)——文件属性与权限

文章目录 前言一、用户与用户组1.用户(文件拥有者)2.用户组3.其他人 二、Linux用户身份与用户组记录文件1. /etc/passwd2. /etc/shadow3. /etc/group 三、文件属性与权限1. 查看文件属性的方法(ls)2.文件属性详细介绍2.1 权限2.2 …

MacOS触控板缩放暂时失灵问题解决

我的系统版本为Monterey 12.5.1,亲测有效 直接创建脚本xxx.sh,并在终端执行脚本bash xxx.sh即可解决此问题,脚本内容如下: #!/bin/bashkillall Finder #kill Finder如不需要可以删除 killall Dock #kill Dock 如不需要可以删…

【wxWidgets】使用布局控件进行窗口布局

使用布局控件进行窗口布局 窗口布局基础 为了在各种环境中都能使窗口拥有合适的位置和大小,可能需要在OnSize事件中计算每一个窗口的大小并设置新位置,当然使用窗口布局控件可以更方便地实现 如果选择使用布局控件,可以通过自己编写或者使用…

【汉诺塔问题分析】

一、背景 汉诺塔问题是一种经典的递归问题,它由法国数学家Huygens在1665年发现,也是一道有趣的数学难题。这道问题的主要目的是将三根柱子上的一堆盘子移动到另一根柱子上,移动过程中每次只能移动一个盘子,并且大盘子不能放在小盘…

[QT编程系列-10]:C++图形用户界面编程,QT框架快速入门培训 - 4- QT画图与动画

目录 4. QT画图与动画 4.1 QT的绘图系统 4.2 案例目标 4.3 绘制过程 4.4 更换控件的icon 4.5 案例2 4.6 坐标轴 4. QT画图与动画 4.1 QT的绘图系统 QT(也称为Qt Framework)是一种流行的跨平台应用程序开发框架,它提供了丰富的图形用户…

集群基础1——集群概念、LVS负载均衡

文章目录 一、基本了解二、LVS负载均衡2.1 基本了解2.2 工作模式2.2.1 NAT模式2.2.2 DR模式2.2.3 LVS-TUN模式2.2.4 LVS-FULLNAT模式 三、调度器算法四、ipvsadm命令 一、基本了解 什么是集群? 多台服务器做同一件事情。 集群扩展方式: scale up&#xf…

2023年7月北京/广州/深圳制造业产品经理NPDP认证招生

产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…

C# 移除链表元素

203 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2&#x…

2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同?

2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同? 答案2023-07-14: 在Kafka中,文件的布局采用了Topic/Partition的方式,每个分区对应一个物理文件夹,且在分区文件级别上实现了顺序写入。然而&#xff0…

WIN无法访问linux开启的SAMBA服务器

WIN无法访问linux开启的SAMBA服务器 打开搜索框“管理Windows凭据” 点击编辑

Camtasia Studio 2023保存为mp4格式的视频的详细教程,Camtasia的视频导出功能

很多用户刚接触Camtasia Studio,不熟悉如何保存mp4格式的视频。在今天的文章中小编为大家带来了Camtasia Studio 2023保存为mp4格式的视频的详细教程介绍。 1、 打开Camtasia Studio。 Camtasia Studio- 2023 win: https://souurl.cn/1JFEsn Camtasia …

06_本地方法接口+07_本地方法栈

一、本地方法? 本地方法就是Java调用非Java代码的接口。 本地方法的作用是融合不同的编程语言为Java所用,它的初衷是融合 C、C程序 二、为什么要使用Native Method? 三、本地方法栈 Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于…

【Linux】Docker 基本管理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Docker 基本管理 Docker 概述Docker 核心概念Docker 安装部署Docker 镜像操作Docker 容器操作 Docker 概述 Docker是一个开源的应用容器引擎,基于go语言开发并遵…

spring复习:(40)全注解的spring AOP

零、需要的依赖&#xff1a; <dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.9</version></dependency><dependency><groupId>org.aspectj</groupId><arti…

AHB协议理解

从小父亲就教育我&#xff0c;做一个对社会有用的人&#xff01; 目录 Chapter1 AHB Block Diagram Ginput signal lnput signals Output Signal Chapter3 Transfers AHB接口Overview Chapter6 Data Buses HWDATA HRDATA Chapter1 Introduction AHB: Advanced High-performanc…

奇迹MU架设教程:SQL Server 2008数据库的安装教程

不管是搭建什么游戏&#xff0c;都是有数据库的&#xff0c;奇迹MU用的是SQL 数据库&#xff0c;根据服务器系统选择SQL server版本&#xff0c;我比较喜欢用Windows server 2008R2系统&#xff0c;所以我安装的是SQL server 2008。作为架设奇迹很重要的数据库程序&#xff0c;…

【Ubuntu】安装docker-compose

要在Ubuntu上安装Docker Compose&#xff0c;可以按照以下步骤进行操作&#xff1a; 下载 Docker Compose 二进制文件&#xff1a; sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/loc…

ThreeJS打造自己的人物

hello&#xff0c;大家好&#xff0c;我是better&#xff0c;今天为大家分享如何使用Three打造属于自己的3D人物模型。 人物建模 当下有很多人物建模的网站&#xff0c;这里给大家分享的 Ready Player Me - Create a Full-Body 3D Avatar From a Photo 前往这个网址&#xff…