MYSQL——约束

作者: So_ProbuING | 来源:发表于2019-06-25 15:26 被阅读0次

约束

概念

约束是对表中的数据进行限定,从而保证数据的正确性、有效性和完整性

分类

  • 主键约束:primary key
  • 非空约束:not null
  • 唯一约束:unique
  • 外键约束:foreign key

非空约束

添加方式

  1. 在创建表的时候添加约束
CREATE TABLE stu1(
                            id INT,
                            name varchar(20) NOT NULL -- 非空约束
);

2.创建表后通过修改表添加非空约束

ALTER TABLE stu1 MODIFY name varchar(20) NOT NULL;

唯一约束

被unique修饰的列的值是不能重复的

创建表

CREATE TABLE stu1(
                            id INTEGER,
                            phone_number varchar(20) UNIQUE -- 手机号唯一约束
);

在mysql中 null值不属于重复的值,可以有多个Null

修改表

ALTER TABLE stu1 DROP INDEX phone_number;

主键约束

概念

  • 使用主键 primary key 非空且唯一
  • 一张表只能有一个字段为主键
  • 主键就是表中记录的唯一标识

创建表时,添加主键约束

CREATE TABLE stu1(
                    id integer PRIMARY KEY, -- 主键约束
                    name varchar(20)
);

创建完表后,添加主键

ALTER TABLE stu1 MODIFY id INTEGER PRIMARY KEY;

删除主键

ALTER TABLE stu1 DROP PRIMARY KEY;

主键约束——自动增长

基本概念

如果某一列是数值类型的,使用auto_increment 可以来完成值得自动增长

创建

  • 创建表时,添加主键约束,并且指定自增长
CREATE TABLE stu1(id INTEGER PRIMARY KEY AUTO_INCREMENT,
                                        NAME VARCHAR(20)
);

自动增长只和上一条记录有关

  • 创建表后添加自增长
ALTER TABLE stu1 MODIFY id INTEGER AUTO_INCREMENT;

删除自增长

ALTER TABLE stu1 MODIFY id INTEGER;
主键无法被删除,但是可以删除自增长属性

外键约束

语法

CREATE TABLE 表名(
... 常规列创建
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);

### 创建表时指定外键
-- 创建部门表
create table department(
id int primary key auto_increment,
dep_name varchar(20),
dep_location varchar(20)
);
-- 创建员工表(id,name,age,dep_id)
-- 多方,从表
create table employee(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int, -- 外键对应主表的主键
CONSTRAINT emp_dept_id_fk FOREIGN KEY (dep_id) REFERENCES department(id) -- 添加外键约束 外键为部门表的id字段
);

删除外键

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

ALTER TABLE employee DROP FOREIGN KEY emp_dept_id_fk;

创建表之后添加外键

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

ALTER TABLE employee ADD CONSTRAINT emp_dept_id_fk FOREIGN KEY (dep_id) REFERENCES department(id);

外键可以为NULL 但是不可以为不存在的外键值

级联操作

级联操作需要添加外键的时候设置级联操作

设置级联更新

ALTER TABLE employee ADD CONSTRAINT emp_dept_id_fk FOREIGN KEY (dep_id) REFERENCES department(id) 
ON UPDATE CASCADE;

设置级联删除

ALTER TABLE employee ADD CONSTRAINT emp_dept_id_fk FOREIGN KEY (dep_id) REFERENCES department(id) 
ON UPDATE CASCADE ON DELETE CASCADE;

设置级联删除后,外键关联的数据被删除后,关联被删除的对应值也会跟着删除

相关文章

  • mysql 学习语句

    MySQL学习笔记 登录和退出MySQL服务器 基本语法 建表约束 主键约束 唯一主键 非空约束 默认约束 外键约...

  • mysql约束

    1, mysql 不支持外键约束 ,条件约束约束分为列级约束,primary 主键约束check 条件约束for...

  • MySQL基础——约束

    上篇文章我们学习了MySQL基础——函数,这篇文章我们学习MySQL基础——约束。 约束 约束是作用于表中字段上的...

  • mysql 约束

    接下来的一些内容,我们需要提前学一些简单的sql语句,方便大家理解接下来的知识。 DDL—数据定义语言(Creat...

  • MySQL约束

    mysql约束 1. 约束简介 关系型数据库系统和文件系统的一个不同点是,关系型数据库本身能保证存储数据的完整性,...

  • MySQL约束

    概念: 为了保证数据的完整性和一致性,MySQL提供了约束这个属性。约束分为表级约束和列级约束,如果约束只是针对某...

  • mySQl约束

    MYSQL的五种约束

  • MySQL约束

    PRIMARY KEY 主键 修改 删除 UNIQUE 唯一 添加 删除 FOREIGN KEY 修改 删除 删除...

  • mysql 约束

    主键约束表的主键设计策略任意两行都不具备相同的主键值每行都必须有一个主键值(主键不允许null列)主键和业务无关,...

  • MySQL约束

    1、NOT NULL 非空约束----字面意思 2、PRIMARY KEY 主键约束 3、UNIQUE KEY 唯...

网友评论

    本文标题:MYSQL——约束

    本文链接:https://www.haomeiwen.com/subject/ahhnqctx.html