Mysql学习笔记(1)

2018-08-15  本文已影响2人  天渊hyominnLover

通配符

select username from gg_user where username like '%xiao/_%' escape '/'

联结查询

mysql联结查询包括内联结(inner join)和外联结(left join和right join),没有full join:


sql联结查询.png

inner join

内联结,查找出两个表都有的满足联结关系的数据行:

SELECT user.id,user.name,question.title
FROM
    user inner JOIN question 
on
    user.Id = question.user_id

如上,找出user和question表中满足条件的所有数据行

left join

左外联结,查找出两个表都有的满足联结关系的数据行,以及左表有、右表没有的数据行:

SELECT user.id,user.name,question.title
FROM
    user left JOIN question 
on
    user.Id = question.user_id

如上,找出user和question表中满足条件的所有数据行,但也可以找到不满足这个联结条件的user表中的数据行

right join

与left join相反,可以找到右表有但左表没有的数据行

SELECT user.id,user.name,question.title
FROM
    user right JOIN question 
on
    user.Id = question.user_id

如上,找出user和question表中满足条件的所有数据行,但也可以找到不满足这个联结条件的question表中的数据行

Mysql为什么不建议使用join(摘自网络)

不建议直接在数据库层面使用表联结,建议在数据库层面仅使用单表查询,在service层再通过dao使用多表关联,将多表的查询在service层进行分解,原因如下:
用分解关联查询的方式重构查询有如下的优势:

MyISAM 和 InnoDB 对比

数据库引擎都是表级别的

MyISAM引擎

InnoDB引擎

为何建议InnoDB主键用自增主键?

上一篇 下一篇

猜你喜欢

热点阅读