当前位置: 首页 > news >正文

4.mysql约束

约束

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

create table user(
id int primary key auto_increment comment 'ID',
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 '用户表';insert into user (name,age,status,gender) values('tom1',19,'1','男'),
('tom2',25,'0','男'),('tom3',19,'1','男')insert into user (name,age,status,gender) values('tom4',35,'1','男')insert into user (name,age,status,gender) values(null,35,'1','男')

外键约束

添加外键

create table 表名(
字段名 数据类型,

[constraint] [外键名称] foreign key (外键字段名称) references 主表(主表列名) );

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 foreign key (外键字段名称) references
主表(主表列名);

删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

在这里插入图片描述
sql代码

create table dept(
id int primary key auto_increment comment 'ID',
name VARCHAR(50) not null unique COMMENT '部门名称'
)comment '部门表';insert into dept (id,name) values(1,'研发部'),(2,'市场部'),(3,'财务部'),(4,'销售部'),(5,'总经办');create table emp(
id int primary key auto_increment comment 'ID',
name VARCHAR(50) not null  COMMENT '姓名',
age int comment '年龄',
job varchar(20) comment '职位',
salary   int COMMENT '薪资',
entrydate date comment '入职时间',
managerid int comment '直属领导id',
dept_id int comment '部门id'
)comment '员工表';insert into emp(id,name,age,job,salary,entrydate,managerid,dept_id)values
(1,'金庸',66,'总裁',20000,'2000-01-01',null,5),
(2,'张无忌',20,'经理',12500,'2005-12-01',1,1),
(3,'杨晓',33,'开发',8400,'2000-11-02',2,1),
(4,'韦一笑',48,'开发',11800,'2002-02-05',3,1),
(5,'常虹',43,'开发',10500,'2004-09-07',4,1)alter table emp  add constraint fk_emp_dept_id foreign key (dept_id) REFERENCES dept(id);alter table emp drop FOREIGN key  fk_emp_dept_id;alter table emp  add constraint fk_emp_dept_id foreign key (dept_id) REFERENCES dept(id) on update set null on delete set null;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【数据结构与算法】哈希表
  • JAVA—异常
  • 深度学习入门指南(1) - 从chatgpt入手
  • Docker③_VMware虚拟机和Docker的备份与恢复
  • CST软件如何设置硬件加速选项GPU DCMPI token?
  • (自用)交互协议设计——protobuf序列化
  • python笔记和练习----少儿编程课程【阶段一(二)】
  • 【案例38】Can’t get connection from database 排查详细记录
  • GPS跟踪环路MATLAB之——数字锁频环
  • 可视耳勺靠谱吗?五款杰出可视挖耳勺种草!
  • Windows 平台 Docker Protainer可视化平台,忘记登录密码,重置密码
  • 【C++算法】双指针
  • 45.跳跃游戏
  • 爬虫练习_01
  • 代码随想录算法day16 | 二叉树part06 | 654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [iOS]Core Data浅析一 -- 启用Core Data
  • ECS应用管理最佳实践
  • emacs初体验
  • ES6语法详解(一)
  • GraphQL学习过程应该是这样的
  • hadoop集群管理系统搭建规划说明
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JSDuck 与 AngularJS 融合技巧
  • MQ框架的比较
  • nginx 配置多 域名 + 多 https
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • VUE es6技巧写法(持续更新中~~~)
  • 前端性能优化--懒加载和预加载
  • 如何合理的规划jvm性能调优
  • 软件开发学习的5大技巧,你知道吗?
  • 实现菜单下拉伸展折叠效果demo
  • 用Visual Studio开发以太坊智能合约
  • 原生 js 实现移动端 Touch 滑动反弹
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​如何使用QGIS制作三维建筑
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #Spring-boot高级
  • (06)Hive——正则表达式
  • (06)金属布线——为半导体注入生命的连接
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (面试必看!)锁策略
  • (生成器)yield与(迭代器)generator
  • (循环依赖问题)学习spring的第九天
  • (一)Dubbo快速入门、介绍、使用
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)iOS字体
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .gitignore文件---让git自动忽略指定文件