SQL语句分类

  • DDL 数据库定义语言 定义数据库对象 create alter truncate drop
  • TPL 事务处理语言 rollback commit
  • DCL 数据控制语言 由 GRANT 和 REVOKE 两个指令组成 授权和废除权限
  • DML 数据操作语言 CRUD操作

DML

select语句

inner join 公共的部分

SELECT * FROM `user` u INNER JOIN user_role r ON u.userid=r.userid;

left join 左表中全取,右边表如果没数据,字段为null,如果有多条呢,就会多条显示

SELECT * FROM `user` u LEFT JOIN user_role r on r.userid=u.userid;

right join 基本和left join相似,以右表为基础,右边表全取、、、


full join 全连接

mysql中不支持 full join

mysql中使用 左右连接 加一个 union all来实现全连接

SELECT
a.`user_name`,
a.`over`,
b.`over`
FROM
user1 a
LEFT JOIN user2 b ON a.`user_name` = b.`user_name`
UNION ALL
SELECT
b.`user_name`,
b.`over`,
a.`over`
FROM
user1 a
RIGHT JOIN user2 b ON a.`user_name` = b.`user_name`

cross join 交叉连接 笛卡尔连接

SELECT * FROM `user` CROSS JOIN user_role   #没有连接条件

update 语句

mysql不支持 update 过滤条件中包含自身表,如下不支持

UPDATE `user`
SET `name` = 'xxx'
WHERE
userid = (
SELECT
userid
FROM
`user`
WHERE
userid=3
)

update语句和join语句一起用可以解决上面这个问题

update user1 a inner join user2 b on a.user_name = b.user_name set a.over='齐天大圣';

子查询

工作中尽量少用子查询,因为查询会每次都会与子查询中的数据做匹配导致效率下降。

SELECT
a.user_name,a.`over`,
(
SELECT
over
FROM
user2 b
WHERE
a.user_name = b.user_name) AS over2
FROM
user2 a

优化后如下

SELECT
a.user_name,a.`over`,
b.over AS over2
FROM
user1 a
LEFT JOIN user2 b ON a.user_name = b.user_name;

row_number()在mysql中不支持

http://cn.voidcc.com/question/p-rhxwnrfk-pb.html 分组top n

mysql及联合查询的更多相关文章

  1. Mysql的联合查询

    联合查询 union联合查询 语法:     select 语句 union [all|distinct] select 语句; 示例: 特点:     条件:两表的查询出来的字段数目必须相同     ...

  2. mysql中联合查询

    联合查询union 一个翻译问题的解释: 在mysql的手册中,将连接查询(Join)翻译为联合查询: 而联合查询(union),没有明确翻译. 但: 在通常的书籍或文章中,join被翻译为“连接”查 ...

  3. php+mysql数据库联合查询 left join 右侧数据重复问题

    情况:多表联合查询(三表及以上联合查询) 分析: A left join B left join C left join D 假如: 表B.C.D都与表A关联查询 A left join B 4条数据 ...

  4. MySQL 中联合查询效率分析

    目前我有两个表,一个keywords和一个news表.keyword存放关键词是从news中提取,通newsid进行关联,两表关系如图: keywords中存有20万条数据,news中有2万条数据,现 ...

  5. mysql三表联合查询,结果集合并

    参考: mysql 结果集去重复值并合并成一行 SQL 三表联查 数据库三表连接查询怎么做 合并: MySQL中group_concat函数 完整的语法如下: group_concat([DISTIN ...

  6. mysql:联合查询

    SELECT t1.name, t2.salary  FROM employee AS t1 INNER JOIN info AS t2 ON t1.name = t2.name; 可以对数据表使用别 ...

  7. MYSQL的联合查询最好是少用,效能差异巨大

    同样的功能,不同的写法,时间和内存占用差了几千倍,不废话,直接上代码 第一种写法: 代码如下: $Rs=DB::get($_ENV['DB'],3,"SELECT * FROM _xiazh ...

  8. thinkphp 使用原生mysql语句 联合查询

    <?php class DelAction extends Action { public function ml(){ // 实例化一个空模型,没有对应任何数据表 $Dao = M(); // ...

  9. mysql三表联合查询

    -- SELECT d.userId, d.userPhoNum, a.orderId, a.productType, b.courseId, b.courseName, c.payJe -- FRO ...

随机推荐

  1. python字典的概念与基本操作

    字典是非常常用的一种数据结构,它与json格式的数据非常相似,核心就是以键值对的形式存储数据,关于Python中的字典做如下四点说明: 1.构造字典对象需要用大括号表示 {},每个字典元素都是以键值对 ...

  2. 怎么下载chrome的扩展程序

    很多时候我们是没办法访问谷歌扩展应用程序 chrome应用商店的,这时候我们最好能把对应扩展应用程序下载保存,以便提供给其他人员使用. 搜索得到知乎有很全的方法: 如何导出并打包第三方chrome扩展 ...

  3. 访问github太慢?我写了一个开源小工具一键变快

    前言 GitHub应该是广大开发者最常去的站点,这里面有大量的优秀项目,是广大开发者寻找资源,交友学习的好地方.尤其是前段时间GitHub公布了一项代码存档计划--Arctic Code Vault, ...

  4. 从《三体》到“中美科技战”,3分钟理解“网络”D丝为什么要迎娶“算力”白富美

    摘要:在多维的世界里,高维的文明对于低维文明具有碾压的优势,而网络也正在从二维走向三维!网络硬件的竞争主要是“芯片+算法”. 从三体到中美科技战,理解网络与算力深度融合助力高维度竞争 1:对抗封锁,需 ...

  5. java开发,入职半年,对未来迷茫,如何发展?

    分享-更多精彩图片尽在大师助手 个人建议,在JAVA方面,先学好JAVA SE.不管如何,基础才是上层建筑的一切.推荐去看jdk源码,推荐1.6或者1.7版本.因为1.8版本的源码中会有很多lambd ...

  6. 硬盘网盘U盘全部可以丢掉了,这个设备可以让你享受随身带着几个T的感受

    前言 有小伙伴问我,你怎么老写技术类文章,能不能写点别的. 其实我兴趣挺广泛的,早年还有机会做个游戏博主,可惜最近2年金盆洗手了.戒了手游,ns和ps4都在吃灰.能完整玩完的游戏屈指可数.但是对于折腾 ...

  7. css面试题汇总 (持续更新)

    前言:这篇随笔是为了准备后面的面试而整理的,网上各种面试题太多了,但是我感觉很多太偏了,而且实际开发过程中并不会遇到,因此这里我整理一些比较常用的,或者是相对比较重要的知识点,每个知识点都会由浅入深, ...

  8. Android开发禁止首次进入activity弹出软键盘,限制屏幕只能竖屏或者横屏展示

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 只需在在Manifest.xml中设定activity的属性为: android:windowSoft ...

  9. 盒子上下滚动到js 底部触发的事件

    //html是用法举列子,js亲测有效(把这段js#scro加到你要滚动的盒子) <div id="scro">  <div>1</div> & ...

  10. 【学习中】Fitness Schedule

    章节 内容 签到 第1周:步伐 √第1课(34分钟) 跑步1分钟 行走2分钟 共做8次 4月24日 √第2课(28分钟) 跑步1分钟 行走2分钟 共做6次 4月27日 √第3课(31分钟) 跑步1分钟 ...