美文网首页
MySQL入门:约束

MySQL入门:约束

作者: 我的袜子都是洞 | 来源:发表于2018-12-06 20:39 被阅读10次

    约束

    约束是给表中的数据添加的强制执行的校验规则,被增、删、改的数据必须符合约束条件,查询到的数据才是合理的。

    关系型数据库中有5个完整性约束:

    • 非空约束
    • 唯一性约束
    • 主键约束
    • 外键约束
    • 检查约束

    非空约束:NOT NULL

    值不能为空,列级约束,约束条件写在列的后面,仅对某列有效


    非空约束

    唯一性约束:UNIQUE

    值不能重复,(可以有多个NULLNULL不是值),列级约束、表级约束。
    写在列的后面,可以给某一列添加唯一性约束。

    唯一性列级约束

    也可以写在表的后面,给多列一起做唯一性约束。

    唯一性表级约束

    说明:idname组合唯一性约束

    给组合的约束键起名:

    组合的**约束键**起名

    主键约束:PRIMARY KEY

    值非空且唯一,能够唯一标识该条记录,是列级约束或表级约束。一张表中只能有一个主键。


    主键约束

    表级约束写法:


    表级约束写法

    外键约束:FOREIGN KEY

    值是另一张表的主键,若有值一定是主键的值。主键表称为主表,使用主键做外键的表成为从表。首先定义主表,然后定义从表。使用外键表必须是innodb引擎。
    定义主表:

    主表

    定义从表:


    从表

    检查约束:CHECK

    MySQL不支持检查约束

    自增长

    AUTO_INCREMENT,一般用于主键,需要列为数值类型。

    默认值

    DEAFULT '默认值',设置字段默认值。

    索引

    一张表对应3个文件:

    • frm结构文件
    • myd数据文件
    • myi索引文件

    删除对应文件关系:

    删除命令 对应文件
    DROP 删除frm,myd,myi
    TRUNCATE 删除myi,myd删除了日志信息
    DELETE 删除myd在myi文件中保留着索引记录

    修改约束

    ALTER语句修改约束
    添加新列并设置主键:ALTER TABLE 表名 ADD 列名 INT PRIMARY KEY;
    删除主键:ALTER TABLE 表名 DROP PRIMARY KEY;
    已有列添加主键:ALTER TABLE 表名 ADD PRIMARY KEY(列名);
    添加外键:ALTER TABLE 从表名 ADD CONSTRAINT 从表外键名 FOREIGN KEY(从表外键列名) REFERENCES 主表名(主表主键列名);
    删除外键:ALTER TABLE 从表名 DROP FOREIGN KEY 外键名 ;

    唯一性约束的添加和删除
    添加:ALTER TABLE ADD CONSTRAINT 定义的约束名 UNIQUE (列名);
    删除:DROP INDEX 定义的约束名 ON 表名
    修改:ALTER TABLE 表名 MODIFY 列名 列类型;

    默认值的添加和删除
    添加:ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值;
    删除:ALTER TABLE 表名 ALTER COLUMN 列名 DROP DEFAULT;

    相关文章

      网友评论

          本文标题:MySQL入门:约束

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