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. Qt启动子进程,子进程关闭时通知主进程,实现主进程对子进程的管理

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.需求描述  Qt主进程启动 ...

  2. soso官方:搜索引擎的对检索结果常用的评测方法

    http://www.wocaoseo.com/thread-188-1-1.html       很久很久以前,搜索引擎还不象今天的百花齐放,人们对它的要求较低,只要它能把互连网上相关的网站搜出来, ...

  3. 做SEO必须制定超越竞争对手网站的方案

    http://www.wocaoseo.com/thread-131-1-1.html       从开始终学习SEO技术,到现在半年过去了,其间也做了几个站,可是赚钱的并不多,有流量的也不多,虽然说 ...

  4. 面试中的这些点,你get了吗?

    一.前言 因为疫情的原因,小农从七月份开始找工作,到现在已经工作了一个多月了,刚开始找工作的时候,小农也担心出去面试技能不够,要懂的东西很多,自己也准备可能会面试一段时间,从找工作到入职花了十几天,总 ...

  5. python sqlite3简单操作

    python sqlite3简单操作(原创)import sqlite3class CsqliteTable: def __init__(self): pass def linkSqlite3(sel ...

  6. CKA认证经验贴(认证日期:20200817)

    一.背景 由于年初疫情影响,身处传统IT行业且兼职出差全国各地“救火”的我有幸被领导选中调研私有云平台,这就给我后来的认证之路做下了铺垫.之前调研kubernetes的v1.17版本自带kubeadm ...

  7. 【Go语言入门系列】(七)如何使用Go的方法?

    [Go语言入门系列]前面的文章: [Go语言入门系列](四)之map的使用 [Go语言入门系列](五)之指针和结构体的使用 [Go语言入门系列](六)之再探函数 本文介绍Go语言的方法的使用. 1. ...

  8. Pandoanload涅槃重生,小白羊重出江湖?

    Pandoanload涅槃重生,小白羊重出江湖? 科技是把双刃剑,一方面能够砸烂愚昧和落后,另一方面也可能带给人类无尽的灾难. 原子物理理论的发展是的人类掌握了核能技术但是也带来了广岛和长崎的核灾难, ...

  9. Agumaster 将爬虫取股票名称代号子系统分出来成agumaster_crawler, 两系统通过RabbitMq连接

    agumaster_crawler系统负责启动爬虫取得数据,之后便往队列中推送. agumaster_crawler系统中pom.xml关于RabbitMq的依赖是: <!-- RabbitMq ...

  10. JDK8(jdk-8u212-windows-x64) 下载 安装 及设置

    JDK8 下载页面 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 19.8.2 ...