SQL必知必会-读书笔记(九)

何为查询(query)

本质上任何SQL都是查询。但此术语一般用于SELECT语句

子查询

  1. 子查询总是从内向外处理
  2. MySQL 中,子查询并不局限于仅仅只能查询单列,但对于部分SQL语言来说,可能限制只能查询单列
  3. 子查询并不总是执行数据检索最有效的方法,视具体情况,联表的优先级会大于子查询
  4. 有多个查询时,尽量用完全限定列名(表名.列名)
  5. 子查询常用于 IN()

联表 JOIN

联表是关系型数据库最关键,最核心,最灵魂的操作

关系型数据库为了保证良好的可伸缩性,通常会将关系和具体内容分开存储,在查询完整信息时,就需要使用到 JOIN

JOIN 时不加条件,最终返回的结果将会是两张表的笛卡尔积,检索出的行数将是表1的行数×表2的行数,这种联结也叫叉联结

ON 条件为等值时也叫等值联结

联结是很消耗资源的,联结的表越多,性能下降越厉害,虽然SQL本身不限制每个联结约束中表的数量,但原则上联结的表越少越好

使用联结时可以多看执行计划,找出最合适的联结方案