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

最新文章

  1. Excel Sheet Column Title
  2. oracle 归档日志
  3. request.getParameter 乱码问题
  4. Leetcode | Parentheses 相关
  5. OSSEC 安装执行./install.sh详细信息
  6. Designing Evolvable Web API with ASP.NET 随便读,随便记 “The Internet,the World Wide Web,and HTTP”——HTTP
  7. java--多线程之前台幕后
  8. 一个JQuery发送ajax请求
  9. 在Windows的DOS中运行java编程中的问题
  10. 基于JavaBean编辑器读取peroperties文件
  11. linux grep 从入门到精通
  12. mongo2csv
  13. dubbo源码分析12——服务暴露3_doExportUrls()方法分析
  14. COM口总是有惊叹号怎么办
  15. IIS7.0 下使用Intelligencia.UrlRewriter时Session为空问题
  16. 使用rgba设置输入框背景透明
  17. UVa 11021 麻球繁衍
  18. 第90天:HTML5中文件API和拖放操作
  19. layer 刷新某个页面
  20. RCU

热门文章

  1. React_TODOList 数据增删改查
  2. linux字符终端(控制台)的字体更改
  3. sha1sum校验方法
  4. js中的各种常用方法(持续更新中。。。)
  5. Linux常用命令--不断更新
  6. 用LR录制终于可以在我的电脑上顺利弹出IE了
  7. mybatis-spring-boot-starter 1.3.0 操作实体类的SpringBoot例子
  8. 转载:SQL语句执行顺序
  9. ZK集群源码解读
  10. AP、AC、无线路由器