数据库MYSQL学习总结8—NOT NULL DEFAULT

NOT NULL:非空约束,也就是插入值的时候不能为空,而且值不能是空值

CREATE TABLE test_not(
    a VARCHAR(20),
    B VARCHAR(20) NOT NULL
);

数据库MYSQL学习总结8—NOT NULL DEFAULT_第1张图片

 如果往里面插入两个空字符串,不会报错,因为空字符串也算有值。但是如果不给B插入NULL或者不写则会报错。

-- 不报错
INSERT test_null(a,b) VALUES('','');

-- 报错
INSERT test_null(a,b) VALUES(NULL,NULL);

 

DEFAULT:默认值,如果插入记录的时候没有给字段赋值,则使用默认值

-- 测试默认值
CREATE TABLE test_default(
    id INT UNSIGNED AUTO_INCREMENT KEY,
    username VARCHAR(20) NOT NULL,
    age TINYINT UNSIGNED DEFAULT 18,
    email VARCHAR(50) NOT NULL DEFAULT '[email protected]' 
);

数据库MYSQL学习总结8—NOT NULL DEFAULT_第2张图片

 

INSERT test_default(username) VALUES('xx');

数据库MYSQL学习总结8—NOT NULL DEFAULT_第3张图片

 

测试枚举

CREATE TABLE test_one(
    id INT UNSIGNED AUTO_INCREMENT KEY,
    sex ENUM('a','b','c') NOT NULL DEFAULT 'a'
);

数据库MYSQL学习总结8—NOT NULL DEFAULT_第4张图片

INSERT test_one(sex) VALUES(DEFAULT);

数据库MYSQL学习总结8—NOT NULL DEFAULT_第5张图片

 

UNIQUE KEY:和主键很类似,而UNIQUE KEY可以是多个字段为索引。唯一性,一个表中可以有多个字段是唯一索引,同样的值不能重复,但是NULL值除外。

CREATE TABLE test_unqine(
    id INT UNSIGNED AUTO_INCREMENT KEY,
    username VARCHAR(20) NOT NULL UNIQUE KEY,
    email VARCHAR(50) UNIQUE,
    card CHAR(18) UNIQUE
);

 

数据库MYSQL学习总结8—NOT NULL DEFAULT_第6张图片

-- 不报错
INSERT test_unique(username,email,card) VALUES('A','[email protected]','1');

-- 报错
INSERT test_unique(username,email,card) VALUES('A','[email protected]','11');

-- 不报错
INSERT test_unique(username,email,card) VALUES('B',NULL,NULL);

 

你可能感兴趣的:(数据库)