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

基础篇03——SQL约束

概述

约束示例 

完成以下案例:

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

外键约束

概念

图中的父表也叫主表,子表也叫从表。

如果某一个表A有一个字段的值来自于另一个表B的主键,那么表A就是子表(从表),表B就是父表(主表)。

 添加外键的语法

-- 创建部门表
create table if not exists dept
(id   int auto_increment primary key comment 'ID',name varchar(50) not null comment '部门名称'
) comment '部门表';-- 向部门表插入数据
insert into dept (id, name)
values (1, '研发部'),(2, '市场部'),(3, '财务部'),(4, '销售部'),(5, '总经办');-- 创建员工表
create table emp
(id        int auto_increment primary key comment 'ID',name      varchar(50) not null comment '姓名',age       tinyint unsigned 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-05', 1, 1),(3, '杨逍', 33, '开发', 8400, '2008-11-05', 2, 1),(4, '韦一笑', 40, '开发', 11000, '2003-06-15', 2, 1),(5, '常遇春', 43, '开发', 10500, '2004-07-05', 3, 1),(6, '小昭', 25, '测试', 7000, '2009-12-10', 2, 1);-- 给员工表添加外键
-- (dept_id) 表示将员工表的dept_id字段作为外键字段
-- references dept(id)表示员工表中的外键字段关联自部门表的id字段
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);-- 删除员工表中名为fk_emp_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 cascade on delete cascade;

http://www.lryc.cn/news/363946.html

相关文章:

  • 人工智能--深度神经网络
  • VOC格式标签各个字段的解释
  • 2024年端午节放假通知
  • Transformer系列:注意力机制的优化,MQA和GQA原理简述
  • Python知识点11---高阶函数
  • JavaSE——【逻辑控制】(习题)
  • 自动驾驶仿真:python和carsim联合仿真案例
  • Qt报错:libvlc开发的程序,出现Direct3D output全屏窗口
  • yolov5的口罩识别系统+GUI界面 (附代码)
  • WPF中Window的外观实现及常用属性
  • (有代码示例)Vue 或 JavaScript中使用全局通信的3种方式
  • MAB规范(1):概览介绍
  • 基于振弦采集仪的土木工程安全监测技术研究
  • 这个高考作文满分的极客,想和你聊聊新媒体写作
  • AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.05.25-2024.05.31
  • 如何通过Python SMTP配置示例发附件邮件?
  • amd64
  • 2024如何优化SEO?
  • 【NoSQL数据库】Redis命令、持久化、主从复制
  • 使用Django JWT实现身份验证
  • MT2084 检测敌人
  • 支持向量机、随机森林、K最近邻和逻辑回归-九五小庞
  • MySQL—多表查询—多表关系介绍
  • Vue基础篇--table的封装
  • mysql中optimizer trace的作用
  • 实习面试题(答案自敲)、
  • 二叉树讲解
  • Unity DOTS技术(五)Archetype,Chunk,NativeArray
  • 算法学习笔记(7.1)-贪心算法(分数背包问题)
  • 气膜建筑的施工对周边环境影响大吗?—轻空间