【MySQL】 表的束缚(上)

[复制链接]
发表于 2025-11-3 15:11:58 | 显示全部楼层 |阅读模式
接待拜访:雾里看山-CSDN博客
本篇主题:【MySQL】 表的束缚(上)
发布时间:2025.2.10
附属专栏:MySQL
  

   表的束缚:表中肯定要有各种束缚,通过束缚,让我们未来插入数据库表中的数据是符合预期的。束缚的本质是通过技能的本领,倒逼步伐员插入正确的数据。反过来,站在MySQL的视角,凡是插入进来的数据,都是符合数据束缚的!
束缚的终极目的:包管数据的完备性和可预期性。
  
  
空属性

根本先容

两个值:null(默认的)和not null(不为空)
数据库默认字段根本都是字段为空,但是实际开辟时,尽大概包管字段不为空,由于数据为空没办法到场运算。
  1. mysql> select null;
  2. +------+
  3. | NULL |
  4. +------+
  5. | NULL |
  6. +------+
  7. 1 row in set (0.00 sec)
  8. mysql> select 1+null;
  9. +--------+
  10. | 1+null |
  11. +--------+
  12. | NULL |
  13. +--------+
  14. 1 row in set (0.00 sec)
复制代码
功能使用

案例:
创建一个班级表,包罗班级名和班级所在的讲堂以及其他属性。站在正常的业务逻辑中:

      
  • 假如班级没闻名字,你不知道你在哪个班级  
  • 假如讲堂名字可以为空,就不知道在哪上课
以是我们在筹划数据库表的时间,肯定要在表中举行限定,满意插入条件的数据才华插入到表中。这就是“束缚”。
  1. mysql> create table if not exists myclass(
  2.     -> class_name varchar(20) not null,
  3.     -> class_room varchar(20) not null,
  4.     -> other varchar(20)
  5.     -> );
  6. Query OK, 0 rows affected (0.02 sec)
  7. mysql> desc myclass;
  8. +------------+-------------+------+-----+---------+-------+
  9. | Field      | Type        | Null | Key | Default | Extra |
  10. +------------+-------------+------+-----+---------+-------+
  11. | class_name | varchar(20) | NO   |     | NULL    |       |
  12. | class_room | varchar(20) | NO   |     | NULL    |       |
  13. | other      | varchar(20) | YES  |     | NULL    |       |
  14. +------------+-------------+------+-----+---------+-------+
  15. 3 rows in set (0.00 sec)
  16. mysql> insert into myclass values ('高三2班','101教室','重点班');
  17. Query OK, 1 row affected (0.00 sec)
  18. mysql> insert into myclass (class_name, class_room) values ('高三1班','103教室');
  19. Query OK, 1 row affected (0.01 sec)
  20. mysql> insert into myclass (class_name, other) values ('高三1班','普通班');
  21. ERROR 1364 (HY000): Field 'class_room' doesn't have a default value
  22. mysql> insert into myclass (class_name, class_room) values ('高三1班', NULL);
  23. ERROR 1048 (23000): Column 'class_room' cannot be null
  24. mysql> select * from myclass;
  25. +------------+------------+-----------+
  26. | class_name | class_room | other     |
  27. +------------+------------+-----------+
  28. | 高三2班    | 101教室    | 重点班    |
  29. | 高三1班    | 103教室    | NULL      |
  30. +------------+------------+-----------+
  31. 2 rows in set (0.00 sec)
复制代码
默认值(default)

默认值:某一种数据会经常出性的出现某一个具体的值,可以在一开始就设定好,在必要真实数据的时间,用户可以选择性的使用默认值。
  1. mysql> create table if not exists t13(
  2.     -> name varchar(20) not null,
  3.     -> age tinyint unsigned default 18,
  4.     -> gender char(1) default '男'
  5.     -> );
  6. Query OK, 0 rows affected (0.02 sec)
  7. mysql> desc t13;
  8. +--------+---------------------+------+-----+---------+-------+
  9. | Field  | Type                | Null | Key | Default | Extra |
  10. +--------+---------------------+------+-----+---------+-------+
  11. | name   | varchar(20)         | NO   |     | NULL    |       |
  12. | age    | tinyint(3) unsigned | YES  
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表