mysql 数据库约束(constraint)-初学教程 5

说实话,一开始处理 MySQL 约束确实让我很头疼。
尤其是外键约束让我思考案例半夜睡不着觉——比如学校系统中,学生表和班级表中,学生表中的班级ID必须是班级表中存在的ID,否则数据会混乱。
我在计算机上输入代码,FOREIGN KEY (class_id) REFERENCES class_table (class_id)。
这行代码直接让我想起了大学里的数据库课程。
老师举了一个从图书馆借书的例子。
书号是主键,借阅者记录中的书号是外键,不能随意更改。

有趣的是,我也被主键约束愚弄了。
我曾经创建了一个表,想设置一个复合主键。
结果,我将两个字段都设置为非 null 的值,但我忘记了这两个字段的组合必须是唯一的。
后来查数据的时候发现居然有两条字段值一模一样的记录,整个事情立刻就崩溃了。
所以现在我建表之前先在草稿纸上画一个关系图,明确标明哪些是主键,哪些是外键,我才敢承诺。

别说级联操作了,简直就是数据库世界的“蝴蝶效应”。
之前帮朋友修改了数据结构,给外键添加了级联更新。
结果呢?它随意更改班级名称,所有选择该班级的学生记录中的班级名称都自动更改,几乎破坏了所有数据。
现在我对“瀑布”这个词心有余悸。
如果我可以使用简单的更新,我将永远不会使用级联。

组合约束并不困难,但使用时必须小心。
例如,我之前写会员表格时,要求会员姓名和手机号码不能重复。
我只是使用 UNIQUE(姓名,电话)来做到这一点。
但后来我发现,有一个老用户在注册时使用了一个很常见的名字。
结果,他输入了错误的手机号码,并被有效屏蔽。
因此,我在设计表的时候,会考虑多加一层:如果某种约束组合会导致大量无效数据,是否应该添加检查机制?
非零约束是基础,但最方便的是唯一约束。
我有一个项目,用户的手机号码需要全球唯一。
我在创建表时直接添加了UNIQUE(电话)。
后来发现有用户注册时输入的手机号码是同音字,差点失败。
现在我对唯一约束添加了一层验证:在输入手机号码之前,先去数据库检查是否有重复项。
如果重复,会显示“该手机号码已被注册”的信息。

最后,个人提示:这些约束不要只看理论,你必须将它们付诸实践。
当我开始学习时,我在教程中敲代码,发现很多约束的副作用只出现在特定的场景中。
例如,外键约束单独来看是没问题的,但是当与事务隔离级别结合使用时,它们就可以出现各种奇怪的现象。
因此,只有理论与实践相结合,才能真正理解数据库约束。

简述数据库的三大范式和五大约束

该范式非常复杂。
让我简单解释一下:
第一个范式就好像数据表中的每一列都像一个原子。
不能分享,不能有隐藏的“小秘密”。

第二范式比第一范式更进一步。
它要求表有一个“主干”,即主键。
所有数据都必须围绕这个主键,并且不能有空闲列。

第三范式又严格了一层,要求表中的每一列都与主键直接相关,不是拐弯抹角,而是直接相关。

归一化范式(BCDF)是将所有决定因素变成候选键。
简单来说,就是让每个字段都与主键直接相关。

然后还有一些限制,就像表中的规则一样:
1 主键:查找表的唯一“身份证号”。
2 .唯一性:使某些字段唯一且不能重复。
3 . 默认值:输入默认值。
如果用户不填写,将自动使用该值。
4 . 非零:有些字段必须填写,不能留空。
5 .外键:与其他表建立关系,作为表之间的桥梁。

这些限制都是为了保持数据的准确性和一致性,让数据库更加健壮。
一般来说,我们使用前三种范式和这些约束就足够了。
第四范式和第五范式用得比较少,除非你确实有特别复杂的计算需求。
反正就看你自己了,均匀使用就可以了。
我还在想这个问题。

SQLServer:GUI方式、SQL语句两种方式建立视图和GUI方式设置主键、约束等

创建 SQLServer 视图有两种方法:GUI 和 SQL 语句。
GUI更加直观,适合初学者。

如何构建显示 GUI: 1 . 打开 SSMS 并连接到数据库。
2 .找到“View”文件夹,右键单击并选择“新建视图”。
3 . 添加表DEPT01 和EMP01 ,并选择字段:部门名称、地点、员工姓名和工资。
4 . 排序和过滤(如果需要)。
单击保存并将其命名为 DEPT_EMP_VU。

创建视图的SQL方法: sql 创建视图 DEPT_EMP_VU AS SELECT d.部门名称、d.部门地点、e.员工姓名、e.薪资 FROM DEPT01 d JOIN EMP01 e ON d.DepartmentID=e.DepartmentID;
(假设departmentID为相关字段)
设置主键GUI方法: 1 .找到“Tables”文件夹,右键单击目标表,选择“设计”。
2 . 右键单击​​要设置主键的字段,然后选择“设置主键”。

设置GUI方法约束: 1 .外键:在表设计器中选择“外键”选项卡并添加新的外键。
2 . 检查约束:选择“检查约束”选项卡并添加条件。

导出脚本: 1 . 右键单击数据库/表并选择“脚本为...”。
2 . 选择脚本类型(CREATE/ALTER 等)并保存.sql 文件。

称一下体重。