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操作
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL3FkeOd3YU1EMNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyADO2IjM0gTM5AjNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
05 replace
将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
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 是删掉原有记录,再在最后方插入一条新记录,是通过主键识别原有记录。
select "select count(*) from "||name||";" as cnts
from sqlite_master
where type='table';