第一部分 查漏补缺
1.外键
外键是关系型数据库中的一个概念,它用于建立两个表之间的关联关系。通俗地说,外键就是一个表中的一个或多个字段,它们的值与另一个表中的字段值相对应,用来表示两个表之间的联系,举个例子,假设我们有两个表:学生表和课程表。学生表中有一个学生ID字段,课程表中有一个课程ID字段。如果我们想要记录每个学生所选的课程,就需要在学生表中添加一个外键,指向课程表中的课程ID字段。这样,我们就可以通过外键来查询每个学生所选的课程信息。
2.3nf
第一范式1NF
符合1NF的关系中的每个属性都不可再分。
第二范式2NF
消除了1NF非主属性对主属性的部分函数依赖。
函数依赖:在属性(属性组)X的值确定的情况下,必定能够确定属性Y的值。
例如:学号–>班主任。(学号,课程名称)–>分数。
完全函数依赖:在一张表中,如果X–>Y,对于X的任意子集都不能确定Y。
例如(学号,课程)–>分数。单独的学号、和课程都不能确定分数。一个学号多个课程分成绩,一个课程对应多个同学的成绩。只能由学号和课程共同确定具体的分数。
部分函数依赖:Y函数依赖X函数,但是Y函数不完全依赖X函数。就称函数Y部分依赖函数X。
例如:(学号,课程名)–>姓名。一个学号对应一个学生姓名,但是课程名并不能对应具体的学生。
传递函数依赖:Z函数依赖Y函数,Y函数依赖X函数(Y不包含X,X不依赖Y前提)。Z函数依赖X函数。
判断是否是2NF:查看表中是否存在非主属性对于码的部分函数依赖。不存在部分函数依赖就是2NF
判断方法:
1、找出数据表所有的码
2、根据码找出主属性
3、找出非主属性
4、查看非主属性对码的部分函数依赖
第三范式:3NF
消除了非主属性对码的传递函数依赖。
选课表(课程名,学号,分数)不存在传递函数依赖。(课程名,学号)为主码,传递也需要另外两个属性。
学生表中,学号–>系名。系名–>系主任。存在传递函数依赖。不符合3NF。
消除这个传递函数依赖
系(系名、系主任)
学生(学号,姓名,系名)
3.timestampdiff
在MySQL数据库中,timestampdiff()函数是一种常用的日期函数,用于计算两个日期或时间之间的差值。它可以用于计算年、月、日、时、分、秒等多种时间单位的差值。
unit:表示要计算的时间单位,可以是YEAR、MONTH、DAY、HOUR、MINUTE、SECOND等。
datetime1:表示要计算的第一个日期或时间值,可以是日期、时间、日期时间等。
datetime2:表示要计算的第二个日期或时间值,可以是日期、时间、日期时间等。
4.table相关操作
表的创建、修改与删除:
- 直接创建表:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
-
从另一张表复制表结构创建表:
CREATE TABLE tb_name LIKE tb_name_old
-
从另一张表的查询结果创建表:
CREATE TABLE tb_name AS SELECT * FROM tb_name_old WHERE options
-
修改表:
ALTER TABLE 表名 修改选项
。选项集合:
1 2 3 4 5 6 7 8 |
|
- 删除表:
DROP TABLE [IF EXISTS] 表名1 [, 表名2]
。
第二部分 实战演练
18.平均播放进度大于60%的视频类别
19.SPU数量
20.修改表