SQL查漏补缺(06)

第一部分 查漏补缺

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

[IF NOT EXISTS] tb_name -- 不存在才创建,存在就跳过

(column_name1 data_type1 -- 列名和类型必选

  [ PRIMARY KEY -- 可选的约束,主键

   | FOREIGN KEY -- 外键,引用其他表的键值

   | AUTO_INCREMENT -- 自增ID

   | COMMENT comment -- 列注释(评论)

   | DEFAULT default_value -- 默认值

   | UNIQUE -- 唯一性约束,不允许两条记录该列值相同

   | NOT NULL -- 该列非空

  ], ...

) [CHARACTER SET charset] -- 字符集编码

[COLLATE collate_value] -- 列排序和比较时的规则(是否区分大小写等)

  •  从另一张表复制表结构创建表: 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

{ ADD COLUMN <列名> <类型>  -- 增加列

 | CHANGE COLUMN <旧列名> <新列名> <新列类型> -- 修改列名或类型

 | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -- 修改/删除 列的默认值

 | MODIFY COLUMN <列名> <类型> -- 修改列类型

 | DROP COLUMN <列名> -- 删除列

 | RENAME TO <新表名> -- 修改表名

 | CHARACTER SET <字符集名> -- 修改字符集

 | COLLATE <校对规则名> } -- 修改校对规则(比较和排序时用到)

  • 删除表:DROP TABLE [IF EXISTS] 表名1 [, 表名2]

第二部分 实战演练

18.平均播放进度大于60%的视频类别 

19.SPU数量

 

20.修改表

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值