sql开发技巧总结-1
1.数据库分类
关系型 非关系型
2.sql语句分类
sql: ddl数据库定义语言 tpl事物处理语言 dcl数据控制语言 dml数据操作语言(insert delete update select)
增加数据库处理效率 减少相应时间
减少数据库服务器负载 增加服务器稳定性
减少服务器间通讯网络流量
3.join语句
inner(内连接)
--inner join
内连接inner join基于连接谓词将两张表(如A和B)的列组合在一起,产生新的结果表
select <select_list> from tableA A inner join tableB B on A.key=B.key;
(select a.`user_name`,a.`over`,b.`over` from user1 a inner join user2 b on a.`user_name`=b.`user_name`;)
full outer(全外连接)
--full join
(如何在mysql中使用full join??)
join操作类型-full join
select a.`user_name`,a.`over`,b.`over`
from user1 a
left join user2 b on a.`user_name`=b.`user_name`
union
select b.`user_name`,b.`over`,a.`over`
from user1 a
right join user2 b on a.`user_name`=b.`user_name`
left outer(左外连接)
--left join
select a.`user_name`,a.`over`,b.`over` from user1 a left join user2 b on a.`user_name`=b.`user_name` where b.user_name is null;
right outer(右外连接)
--right join(同left join)
cross(交叉连接)
--cross join
笛卡尔查询
4.join语句
更新使用过滤条件中包括自身的表
联合更新
update user1 a join(
select b.`user_name` from user1 a inner join user2 b on
a.`user_name`=b.`user_name`
) b on a.`user_name`=b.`username`
set a.over = 'qitiandasheng';
5.使用join优化子查询
6.使用join优化聚合子查询
查询四人组中打怪最多的日期(避免子查询)
select a.`username`,b.`timstr`,b.kills from user1 a join user_kills b on a.id = b.user_id where
b.kills = (select max(c.kills) from user_kills c where c.user_id=b.user_id);
select a.user_name,b.timestr,b.kills from user1 a
join user_kills b on a.id = b.user_id
join user_kills c on c.user_id = b.user_id
group by a.user_name,b.timestr,b.kills
having b.kills = MAX(c.kills);
group by 分组查询
当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:
--执行where子句查找符合条件的数据;
--使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。
--having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
--having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
--having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
相关文章
- wcf系列学习5天速成——第三天 事务的使用
- wcf系列5天速成——第二天 binding的使用(2)
- wcf系列5天速成——第一天 binding的使用(1)
- 介绍一个小工具 Linqer
- 好奇!仅 13kB 大小的游戏,源码长啥样?
- 桀骜不驯的代码又搞事情?我找来 10 个开源项目帮你驯服它们!
- 这款开源测试神器,圆了我玩游戏不用动手的梦想
- 任由文字肆意流淌,更自由的开源 Markdown 编辑器
- 解锁 VS Code 更多可能性,轻松入门 WebView
- 最简单的人工神经网络
- 解决:sentry + loguru 不告警的问题
- 相见恨晚!开源的傻瓜搜索引擎,帮你快速实现搜索功能
- 你的站点抗压么?推荐一款超方便的开源压测工具
- SQL 查询并不是从 SELECT 开始的
- 手痒想写项目?我挑了 10 个开源项目送你
- 不会 Web 开发,也能让数据“动”起来的开源项目!
- 72 个网络应用安全实操要点,全方位保护 Web 应用的安全
- 编程有路,开源为径
- 如闪电划破雨夜,这些开源项目瞬间点亮了命令行
- 那些好用的 VS Code 插件,究竟是如何提高编码效率的?