基础篇03——SQL约束

作者 : admin 本文共1558个字,预计阅读时间需要4分钟 发布时间: 2024-06-4 共3人阅读

概述

基础篇03——SQL约束插图

约束示例 

完成以下案例:

基础篇03——SQL约束插图(1)

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就是父表(主表)。

基础篇03——SQL约束插图(2)

 添加外键的语法

基础篇03——SQL约束插图(3)

-- 创建部门表
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;

 外键的删除和更新操作

基础篇03——SQL约束插图(4)

-- 添加外键,当父表有删除或更新操作时,子表级联删除和级联更新
alter table emp add constraint fk_emp_dept_id foreign key (dept_id)
    references dept(id) on update cascade on delete cascade;

本站无任何商业行为
个人在线分享 » 基础篇03——SQL约束
E-->