MySQL
表的约束
MySQL中的表的约束是一种规则,用于限制或保护表中数据的完整性和合法性。约束可以确保数据在插入、更新或删除时满足特定的条件,从而维护数据的正确性和一致性。
1. 空属性
两个值:null
(默认的)和not null
(不为空)
数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算。
创建一个数据表其中的id1为NULL,id2为NOT NULL:
create table test1(id1 int null,id2 int not null);
查看表中的结构:
desc test1;
我们看到对于数据id1,是可以填写NULL值的,而id2则无法填写空值。
向test1插入不同的数据并且打印:
insert into test1(id1,id2) values(10,20); // 插入成功
insert into test1(id2) values(20); // 插入成功,id1可以为空值
insert into test1(id1) values(20); // 插入失败,id2不可以是空值
//ERROR 1364 (HY000): Field 'id2' doesn't have a default value
所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这就是“约束”。
2. 默认值
默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。
注意:not null和defalut一般不需要同时出现,因为default本身有默认值,不会为空。
创建一个表,包含不能为空的姓名,默认值为0的年龄,默认值为男的性别:
mysql> create table test2(
-> name varchar(20) not null,
-> age tinyint unsigned default 0,
-> sex char(2) default '男'
-> );
查看表中的结构:
desc test2;
可以看到我们的年龄和性别都成功的设置好了默认值0和男。当我们在插入数据的时候不给该字段赋值,就使用默认值。
向表中插入数据并打印:
mysql> insert into test2(name,age,sex) values('张三',18,'男');
mysql> insert into test2(name,age,sex) values('小红',20,'女');
mysql> insert into test2(name,age) values('李四',22); // 只使用sex的默认值
mysql> in