数据库复习小结I 6.10

1、主码与外码

    **主键(Primary Key):用于唯一标识表中每一行数据的列或一组列。主键必须具有唯一性和非空性。主键的作用是确保数据的唯一性和快速访问,它在表中起到索引的作用。一个表只能有一个主键,且主键值在整个表中必须是唯一的。 

    **外键(Foreign Key):是一个表中的列,它建立了与另一个表的关系。外键用于在不同表之间建立引用关系,通过外键可以实现表与表之间的关联。外键值必须是在另一个表的主键中存在的值,或者为空(NULL)。外键用于保持表之间的数据完整性和一致性。

2、笛卡尔积

笛卡尔积(Cartesian Product)是关系型数据库中的一个概念,指的是将两个或多个表中的所有行组合在一起,生成一个新的结果集。

在笛卡尔积中,每个表中的每一行与其他表中的每一行进行组合,生成的结果包含了所有可能的组合。结果集的行数等于参与组合的表的行数的乘积。

假设有两个表A和B,表A有m行,表B有n行,那么它们的笛卡尔积将生成一个包含 m x n 行的结果集。

3、聚集函数

聚集函数(Aggregate Functions)是在关系型数据库中使用的函数,用于对一组数据进行聚合计算,返回单个值作为结果。

聚集函数可以对一列或多列的数据进行操作,并生成汇总结果。它们通常与 SELECT 语句中的 GROUP BY 子句一起使用,以便按照特定的分组方式计算汇总值。

常见的count、sum、avg、max、min。

4、聚集函数相关注意事项

聚集函数可以作为子查询但是不能作为筛选条件

在嵌套查询中,内部查询的结果可以作为子查询的一部分,并在外部查询中进行进一步的处理。这包括将聚合函数的结果作为子查询的一列进行展示、排序或用于其他计算。聚合函数的结果不能直接用于外部查询的筛选条件。

因为在执行查询时,筛选条件是逐行计算的,而聚合函数是对一组行进行计算的。在执行筛选条件时,尚未形成分组,因此不能直接使用聚合函数

5、in和exists:

    in:用于判断一个值是否在一个子查询返回的结果集中。它将主查询中的列与子查询的结果进行比较,并返回符合条件的结果。如果子查询返回的结果中包含主查询中的列的值,那么条件被认为是满足的。

select c1,c2
from table1
where c1 in (select c1 from table2)

IN 运算符适用于需要对一个确定的列值集合进行判断的情况,它可以直接将主查询中的列与子查询的结果集进行比较。


    ​exists:用于判断子查询是否返回了至少一行数据。它只关心子查询的结果是否为空,而不关心具体返回的数据是什么。EXISTS 子查询在主查询的 WHERE 子句中使用,用于筛选满足特定条件的行。

select c1,c2
from table1
where c1 existis (select c1 from table2 where table1.c1 = table2.c1)

EXISTS 子查询适用于需要根据子查询结果的存在性来进行条件过滤的情况,它的效率通常比 IN 运算符高,因为它只关注子查询是否返回结果,而不需要返回具体的结果集。

6、exists注意事项:

当 EXISTS 子查询不为空时,即子查询返回至少一行结果时,EXISTS 条件被认为是满足的。在这种情况下,外部查询将返回满足 EXISTS 条件的行

7、相关子查询和非相关子查询

    ​非相关子查询首先执行最底层的查询,此时,子查询模块独立,可以单独运行

    ​相关子查询不同于非相关子查询,其依赖主查询的结果来进行进一步的查询

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值