首页 > 数据库 >mysql系列基础篇03----约束

mysql系列基础篇03----约束

时间:2023-06-28 11:47:40浏览次数:50  
标签:03 age 外键 约束 ---- dept 字段 mysql id

一、概述

1、概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据

2、目的:保证数据库中数据的正确,有效性和完整性。

3、分类

 

 二、约束演示

创建一个用户表

create table myuser(
id int primary key auto_increment comment '主键',
name varchar(10) not null unique comment '姓名',
age int check (age >0 && age<=120) comment '年龄',
status char(1) default '1' comment '状态',
gender char(1) comment '性别'
) comment '用户表'

 在这个表中,我们在Id字段上用了主键,在name字段上有了非空,唯一约束,在age字段上用了检查约束,在status上用了状态约束,在gender上用了性别约束。

 

 插入两条数据不能id值,id会自增长,status会有默认值1

再来更新一条数据

 

 报错了,提示我们有检查约束。

三、外键约束

1、概念:外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性

2、创建外键约束

 

 图中父表dept和员工表虽然是父子表的关系,但是并没有建立外建,如查删了父表中的记录id为1,子表中还是保留了dept_id为1的记录。这样就会出现数据不完整。所以我们要建立外建

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id)

 3、删除外键行为

 

 

标签:03,age,外键,约束,----,dept,字段,mysql,id
From: https://www.cnblogs.com/zhengwei-cq/p/16642749.html

相关文章

  • git 如何清除git提交记录?
    1、清除线上仓库git提交记录1.切换到新的分支gitcheckout--orphanlatest_branch2.缓存所有文件(除了.gitignore中声明排除的)gitadd-A3.提交跟踪过的文件(Committhechanges)gitcommit-am"commitmessage"4.删除master分支(Deletethebranch)g......
  • (转载)Mysql里的锁(排它锁、共享锁、行锁、表锁、间隙锁、临键锁、意向锁)
    转载自:Mysql里的锁(排它锁、共享锁、行锁、表锁、间隙锁、临键锁、意向锁)一、加锁的目的是什么?在我们了解数据库锁之前,首先我们必须要明白加锁的目的是为了解决什么问题,如果你还不清楚的话,那么从现在起你应该知道,数据库的锁是为了解决事务的隔离性问题,为了让事务之间相互不影......
  • Gitee通过本地git上传大于10M的文件教程
    Gitee通过网页端默认上传的文件需要小于10M,如上传10M-100M的文件需要通过本地git上传,此时需要使用git指令操作,步骤如下。首先创建一个文件夹,打开后右键使用gitbash功能分别进行简要步骤说明如下1-8,详细可见下图操作说明。1、gitinit初始化;2、gitremote绑定gitee仓库3、git......
  • git分支如何重命名?
    在开发中,我们可能会涉及到对某个分支进行重命命的操作,需要用到的命令有:1、本地分支重命名本地分支是指:你当前这个分支还没有推送到远程的情况,这种情况修改分支名称就要方便很多gitbranch-m原始名称新名称//例如修改test为newTestgitbranch-mtestnewTest2、远程分......
  • 【操作系统-内存】地址翻译流程图
    简略版:stateDiagram-v2stateif_state<>CPU产生VA-->访问TLB访问TLB-->转VA并访问Cache:命中访问TLB-->访问页表:缺失访问页表-->转VA并访问Cache:命中访问页表-->缺页处理:缺失缺页处理-->访问TLB:重新执行转VA并访问Cache-->读取Cache数据:命中......
  • vue中watch侦听器,deep和immediate的用法
    1、deep深度监听的用法当监听一个对象时,可能想监听整个对象的变化,而不仅仅是某个属性。但在默认情况下,如果你正在监听formData对象并且修改了formData.username,对应的侦听器并不会触发,它只在formData对象被整个替换时触发。监听整个对象被称作深度监听,通过将deep选项设置为true......
  • 即时通讯技术文集(第18期):IM架构设计基础知识合集 [共16篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第18 期。[- 1 -] IM系统的MQ消息中间件选型:Kafka还是RabbitMQ?[链接] http://www.52im.net/thread-1647-1-1.html[摘要] MQ消息中间件可以理解一个水池,水池的这头是消息生产者......
  • Kafka参数
     参数解释 brokerbroker.id=1每一个broker在集群中的唯一标示,要求是正数。在改变IP地址,不改变broker.id的话不会影响consumerslog.dirs=/tmp/kafka-logskafka数据的存放地址,多个地址的话用逗号分割/tmp/kafka-logs-1,/tmp/kafka-logs-2port=6667提供给客户端响应......
  • Java中的异常处理
    Java异常类层次结构图 在Java中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。Throwable:有两个重要的子类:Exception(异常)和Error(错误),二者都是Java异常处理的重要子类,各自都包含大量子类。 Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数......
  • 命令操作
    2.setsadd是将一个或者多个成员元素放到集合中不能重复smembers返回查询所有的集合成员sismember是可以判断是否为集合成员返回0/1scard是可以获取集合中的元素#sremkeyvalue可以移除一个或者多个集合元素srandmemberkey返回一个随机的元素#spopkey可以移除一......