天天看点

SQL语句 | where和on的区别、刷题总结

01 where和on的区别

  • 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

在使用left join时,

on

where

条件的区别如下:

1、

on条件

是在生成临时表时使用的条件,它不管

on

中的条件是否为真,都会返回左边表中的记录。

2、

where条件

是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有

left join

的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

02 刷题 | 笔记总结

  • where连接多个过滤条件时使用and、or。
  • on目前连接表时只有一个条件。
  • order by 多个属性时,中间使用

    ,

  • select - from where 字段 in (),()中可以嵌套select语句。
  • inner join - on 可以替换为 from where。

03 Explain

  • explain可以描述表的细节。
  • 使用explain查看执行计划,从而知道mysql是如何处理sql语句,分析查询语句或者表结构的性能瓶颈。
作用

1、表的读取顺序

2、数据读取操作的操作类型

3、哪些索引可以使用

4、哪些索引被实际使用

5、表之间的引用

6、每张表有多少行被优化器查询

04 批量插入数据,不使用replace操作

SQL语句 | where和on的区别、刷题总结

05 replace

将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005

SQL语句 | where和on的区别、刷题总结
replace into titles_test values
(5, 10005, 'Senior Engineer', '1986-06-26', '9999-01-01');
           
update titles_test SET
emp_no = replace(emp_no, 10001, 10005)
where id = 5;
           
  • replace 是删掉原有记录,再在最后方插入一条新记录,是通过主键识别原有记录。
SQL语句 | where和on的区别、刷题总结
select "select count(*) from "||name||";" as cnts
from sqlite_master 
where type='table';