码迷,mamicode.com
首页 > 数据库 > 详细

数据库约束

时间:2020-03-16 09:16:30      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:约束   支持   for   整数   database   代码   代码块   update   header   

1 约束种类

约束名 约束关键字
主键 primary key
唯一 unique
非空 not null
外键 foreign key
检查约束 mysql不支持

2 主键约束

通常不使用业务字段(身份证,学号)作为主键,单独使用一个id作为主键,可以没意义,只要唯一,非空就行

2-1 主键的创建与删除

在创建表的时候添加主键
id int primary key auto_increment

在已有的表中添加主键,id设置主键

alter table student add primary key(id);

删除主键

alter table student drop primary key;

2-2 主键自增

  • 字段类型必须是整数类型
  • auto_increment

    3 唯一约束(这个字段不能重复)

    4 非空约束(这个字段不能为空)

    主键约束=唯一约束+非空约束,那么有什么区别吗?
    主键约束只能出现一次,唯一+非空约束可以多次出现

    5 外键约束

    如何区分主表和从表

    员工表:从表(使用别人的数据)
    部门表:主表

    5-1 外键的创建与删除

    新增表的时候创建外键
constraint emp_depid_fk foreign key(dep_id) references department(id)

向已有表添加外键

alter table employee add constraint emp_depid_fk foreign key(dep_id) references department(id)

删除外键

alter table employee drop foreign key emp_depid_fk;

5-2 外键的级联

主表中的数据变化,从表中的数据也跟着变化
on delete cascade on update cascade

5-3 外键的创建(多对多)学生表,课程表,和成绩表之间的关系

代码块
CREATE DATABASE ec14;
USE ec14;

CREATE TABLE student(
id int PRIMARY key auto_increment,
stu_name varchar(10) not null
);

CREATE TABLE subj(
id int PRIMARY key auto_increment,
sub_name varchar(10)
);

CREATE TABLE score(
id int PRIMARY key ,
stu_id int,
sub_id int,
score int not null,
CONSTRAINT stu_fk FOREIGN key (stu_id) REFERENCES student(id) on DELETE CASCADE on UPDATE CASCADE,
CONSTRAINT sub_fk FOREIGN key (sub_id ) REFERENCES subj (id) on DELETE CASCADE on UPDATE CASCADE
);

select  from  score;

数据库约束

标签:约束   支持   for   整数   database   代码   代码块   update   header   

原文地址:https://www.cnblogs.com/hellosiyu/p/12501652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!