接待拜访:雾里看山-CSDN博客
本篇主题:【MySQL】 表的束缚(上)
发布时间:2025.2.10
附属专栏:MySQL
表的束缚:表中肯定要有各种束缚,通过束缚,让我们未来插入数据库表中的数据是符合预期的。束缚的本质是通过技能的本领,倒逼步伐员插入正确的数据。反过来,站在MySQL的视角,凡是插入进来的数据,都是符合数据束缚的!
束缚的终极目的:包管数据的完备性和可预期性。
空属性
根本先容
两个值:null(默认的)和not null(不为空)
数据库默认字段根本都是字段为空,但是实际开辟时,尽大概包管字段不为空,由于数据为空没办法到场运算。
- mysql> select null;
- +------+
- | NULL |
- +------+
- | NULL |
- +------+
- 1 row in set (0.00 sec)
- mysql> select 1+null;
- +--------+
- | 1+null |
- +--------+
- | NULL |
- +--------+
- 1 row in set (0.00 sec)
复制代码 功能使用
案例:
创建一个班级表,包罗班级名和班级所在的讲堂以及其他属性。站在正常的业务逻辑中:
- 假如班级没闻名字,你不知道你在哪个班级
- 假如讲堂名字可以为空,就不知道在哪上课
以是我们在筹划数据库表的时间,肯定要在表中举行限定,满意插入条件的数据才华插入到表中。这就是“束缚”。
- mysql> create table if not exists myclass(
- -> class_name varchar(20) not null,
- -> class_room varchar(20) not null,
- -> other varchar(20)
- -> );
- Query OK, 0 rows affected (0.02 sec)
- mysql> desc myclass;
- +------------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +------------+-------------+------+-----+---------+-------+
- | class_name | varchar(20) | NO | | NULL | |
- | class_room | varchar(20) | NO | | NULL | |
- | other | varchar(20) | YES | | NULL | |
- +------------+-------------+------+-----+---------+-------+
- 3 rows in set (0.00 sec)
- mysql> insert into myclass values ('高三2班','101教室','重点班');
- Query OK, 1 row affected (0.00 sec)
- mysql> insert into myclass (class_name, class_room) values ('高三1班','103教室');
- Query OK, 1 row affected (0.01 sec)
- mysql> insert into myclass (class_name, other) values ('高三1班','普通班');
- ERROR 1364 (HY000): Field 'class_room' doesn't have a default value
- mysql> insert into myclass (class_name, class_room) values ('高三1班', NULL);
- ERROR 1048 (23000): Column 'class_room' cannot be null
- mysql> select * from myclass;
- +------------+------------+-----------+
- | class_name | class_room | other |
- +------------+------------+-----------+
- | 高三2班 | 101教室 | 重点班 |
- | 高三1班 | 103教室 | NULL |
- +------------+------------+-----------+
- 2 rows in set (0.00 sec)
复制代码 默认值(default)
默认值:某一种数据会经常出性的出现某一个具体的值,可以在一开始就设定好,在必要真实数据的时间,用户可以选择性的使用默认值。
- mysql> create table if not exists t13(
- -> name varchar(20) not null,
- -> age tinyint unsigned default 18,
- -> gender char(1) default '男'
- -> );
- Query OK, 0 rows affected (0.02 sec)
- mysql> desc t13;
- +--------+---------------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +--------+---------------------+------+-----+---------+-------+
- | name | varchar(20) | NO | | NULL | |
- | age | tinyint(3) unsigned | YES
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |