MySql基本使用

  • 联结表
  • 关系表
  • 联结
  • 创建联结
  • Where的重要性
  • 内部联结
  • 联结多个表
  • 高级联结
  • 表别名
  • 3种其他联结
  • 自联结
  • 自然联结(使用概率低)
  • 外部联结
  • 例子
  • 使用带有聚集函数的联结
  • 总结


联结表

关系表

关系表的设计就是要保证把信息分解成多个表,一类数据一个表;
外键:是某个表的一列,它包含另一个表的主键值,定义了两个表之间的关系;

联结

联结:一种机制,用来在一条select语句中关联表;
注意 1.联结由MySql根据需要建立,存在于查询的执行中;2.仅仅在关系列之中插入合法的数据非常重要。

创建联结

mysql中link mysql中link的作用_自联结

Where的重要性

联结两个表时,实际上做的工作是将第一个表中的每一行和第二个表中的每一行进行配对;

where是过滤条件;

注意:没有where子句,第一个表之中每行将与第二个表中的每一行进行配对,无论他们在逻辑上是否可以匹配。

应该保证所有联结都有where子句

笛卡尔积:没有联结条件的表关系返回的结果

mysql中link mysql中link的作用_数据库_02

内部联结

基于两个表之间的相等测试称为等值联结(equijion),也叫内部联结。

内部联结时可以使用ON而不是Where(尽量使用ON)

mysql中link mysql中link的作用_数据库_03

联结多个表

联结的表越多,性能下降越厉害

mysql中link mysql中link的作用_mysql中link_04

高级联结

表别名

表别名时在查询中使用

表别名不会返回到客户机(列别名可以)

mysql中link mysql中link的作用_mysql中link_05

3种其他联结

自联结

自联结经常作为外部语句来替代从相同表中检索数据时使用的子查询语句

mysql中link mysql中link的作用_linux_06

自然联结(使用概率低)

作用:排除返回行之中出现重复,排除多次出现

外部联结

联结之中包含了那些在相关表之中没有关联行的行,称为外部联结
没有 *= 操作符:mysql不支持简化字符*=和 =*的使用,在其他DBMS(数据库管理系统)中很流行
left right:左右外部联结唯一差别就是所关联的表的顺序不同,可以通过颠倒where或from子句之中的表顺序进行互相转换

例子

检测所有客户及订单

mysql中link mysql中link的作用_数据库_07

mysql中link mysql中link的作用_mysql_08

使用带有聚集函数的联结

聚集函数用来汇总数据

mysql中link mysql中link的作用_mysql中link_09

总结

  1. 一般情况使用内部联结,使用外部联结也是有效的;
  2. 保证使用正确联结;
  3. 必须提供联结条件,否则会返回笛卡尔积;
  4. 一个联结可以包含多个表,但是应该进行从简到繁的撰写联结。