美文网首页
黑猴子的家:mysql 列级约束

黑猴子的家:mysql 列级约束

作者: 黑猴子的家 | 来源:发表于2019-02-28 08:44 被阅读3次
1、常见约束
NOT NULL:非空
    该字段的值是必填的,如果不设置该约束,该字段默认是可以为空
DEFAULT:默认
    该字段有默认值
CHECK:检查,mysql语法支持,但效果不支持
    该字段值可以加以限制,比如年龄可以控制在0-120之间
    
PRIMARY KEY:主键
    该字段值不可以重复
    1、不可以为空
    2、一个表中只能有一个主键,但是可以多个字段做组合主键
UNIQUE:唯一约束
    该字段值不可以重复
    1、可以为空
    2、一个表中可以有多个唯一键,可以有组合唯一键
FOREIGN KEY:外键
    用于限制多表的关系
    1、从表的该字段值必须来自于主表的关联列的值
    2、从表和主表的关联列的类型必须一样
    3、主表的关联列必须是主键
    4、在从表中设置外键
    5、一个表中可以添加多个外键
    6、插入数据时,先插入主表
       删除数据时,先删除从表
    
分类:
                    位置            支持
        列级约束    列的后面        除了外键
        表级约束    表的后面        除了非空和默认

★★★★★★★★★★★创建表时添加约束 ★★★★★★★★★★★  √
CREATE TABLE 表名(
    字段名 字段类型 列级约束,
    字段名 字段类型 列级约束,
    表级约束
)
2、添加列级约束
USE test;

DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
    id INT NOT NULL UNIQUE,#非空约束+主键约束
    stuName VARCHAR(20) UNIQUE,#唯一约束
    gender CHAR DEFAULT '男',#默认约束
    age INT UNSIGNED CHECK (age BETWEEN 0 AND 120)#检查约束
);

DESC stuinfo;
SELECT * FROM stuinfo;
3、插入默认值
INSERT INTO stuinfo(id,stuname,age) VALUES(3,'lily',12);
INSERT INTO stuinfo VALUES(5,'jack',DEFAULT,900);

唯一 + 主键

4、关于插入null
INSERT INTO stuinfo VALUES(7,NULL,DEFAULT,900);
5、关于插入多个唯一或主键
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
    id INT NOT NULL UNIQUE,#非空约束+主键约束
    stuName VARCHAR(20) UNIQUE,#唯一约束
    gender CHAR DEFAULT '男',#默认约束
    age INT UNSIGNED CHECK (age BETWEEN 0 AND 120)#检查约束
);

相关文章

网友评论

      本文标题:黑猴子的家:mysql 列级约束

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