mysql笔记总结

来源:互联网 发布:软件开发常用英语 编辑:程序博客网 时间:2024/06/05 07:12

sql语句中连接的问题

1.INNER JOIN两边表同时有对应的数据,即任何一边缺失数据就不显示
2.LEFT JOIN会读取左边数据表的全部数据,即使右边表无对应的数据
3.RIGHT JOIN读取右边数据表的全部数据,即便左边表无对应的数据

注意on与where有什么区别,两个表连接时用on,在使用left jion时,on和where条件的区别如下:
1.on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2.where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

HAVING 和WHERE区别
WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。
HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。

GROUP BY和DISTINCT
但是大表一般用distinct效率不高,大数据量的时候都禁止用distinct,建议用group by解决重复问题

MySQL中如果要用not in在子查询中限制结果,那必须要将子查询的结果集限制为不含null,不然查询结果count = 0.

exmaple:查询use表中所有name不是yt1,yt2,yt3的字段
SELECT* FROM user WHERE name NOT IN (‘yt’, ‘yt2’, ‘yt3’);

mysql中不支持top操作,应该用用order by 和limit一起使用来等价sql server 的top操作