数据库专项训练(二)
- 子查询知识点(来源:机智的豆子):
where型子查询:指把内部查询的结果作为外层查询的比较条件。子查询:单列单值
from型子查询:把内层的查询结果当成临时表,供外层sql再次查询。子查询:多行多列
in子查询:内层查询语句仅返回一个数据列,这个数据列的值将供外层查询语句进行比较 子查询:单列多行
exists子查询:把外层的查询结果,拿到内层,看内层是否成立,简单来说后面的返回true,外层(也就是前面的语句)才会执行,否则不执行。
any子查询:只要满足内层子查询中的任意一个比较条件,就返回一个结果作为外层查询条件。
all子查询:内层子查询返回的结果需同时满足所有内层查询条件。
比较运算符子查询:子查询中可以使用的比较运算符如 “>” “<” “= ” “!=”
参考资料:https://blog.csdn.net/qq_39380737/article/details/81127497
- 函数依赖的特性:
- 设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。
- 当关系中属性集合Y是属性集合X的子集时(Y⊆X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
- 当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
- 设X,Y是关系R的两个属性集合,X'是X的真子集,存在X→Y,但对每一个X'都有X'!→Y,则称Y完全函数依赖于X。
- 设X,Y是关系R的两个属性集合,存在X→Y,若X'是X的真子集,存在X'→Y,则称Y部分函数依赖于X。
- 设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
- 连接
- 1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。 - 2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。
在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:
1)LEFT JOIN或LEFT OUTER JOIN
左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
2)RIGHT JOIN 或 RIGHT OUTER JOIN
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
3)FULL JOIN 或 FULL OUTER JOIN
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。 - 3、交叉联接
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。
FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。
- 左外联接以左边关系为参照系,将所有左边关系的元组以及右边关系中满足条件的元组放到结果关系中。
- 右外联接以右边关系为参照系,将所有右边关系的元组以及左边关系中满足条件的元组放到结果关系中。
- 左外联接能够把R中原该舍弃的元组放到结果关系中,但不能把S中原该舍弃的元组放到结果关系中。右外联接能够把S中原该舍弃的元组放到结果关系中,但不能把R中原该舍弃的元组放到结果关系中。
- 外部并操作的概念是:如果R和S的关系模式不同,实现R与S的并操作所构成的新关系的属性由R和S的所有属性组成(公共属性只取一次),新关系的元组由属于R或属于S的元组所构成,同时元组在新增加的属性上填入空值。
- 外联接既能够把R中原该舍弃的元组放到结果关系中,又能把S中原该舍弃的元组放到结果关系中。