美文网首页
MySQL核心技术与最佳实践(第5 章 表记录检索)

MySQL核心技术与最佳实践(第5 章 表记录检索)

作者: 凯睿看世界 | 来源:发表于2019-02-19 16:06 被阅读17次

select 字段列表
from 数据源
[where 条件表达式]
[ group by 分组字段 [ having 条件表达式]]
[ order by 排序字段 [ asc | desc ]]

distinct 过滤重复记录

select 字段列表
from 数据源
limit [start,] length;

select 字段列表
from 表名1 [连接类型] join 表名2 on 表1与表2的连接条件

内连接 inner 连接两个表中满足条件的记录,并舍弃所有不满足条件的记录
外连接 outer join 又分为左外连接 和右外连接 和完全外连接(full join),Mysql不支持完全外连接。

from 表1 left join 表2 on 表1和表2连接条件
包含表1全部记录,表2中满足条件的记录

from 表1 right join 表2 on 表1和表2连接条件
包含表1满足条件的记录,表2中全部的记录

内连接和外连接的区别在于,内连接会除去所有不满足条件的记录,而外连接则保留其中一个表的全部记录,并保留另一个表中满足条件的记录。

多表连接
from 表1 [连接类型] join 表2 on 表1和表2的连接条件
[连接类型] join 表3 on 表2和表3的连接条件

where 条件表达式
表达式如果是数值则按照数值大小比较,如果是字符串,则需要参考字符序collation的设置进行比较。

逻辑非 !
and 逻辑运算符
表达式 [not] between 起始值 and 终止值
or 逻辑运算符
表达式 [not] in (数学集合)
字符串表达式 [not] like 模式
模式是否区分大小写取决于字符集设置
gbk_chinses_ci 或 gb2312_chinese_ci 不区分大小写,ci 结尾不区别大小写
gbk_bin 或 gb2312_bin区分大小写

select * from new_student where student_name like '%_%';
如果不想使用“\”作为转义符,也可以使用escape 关键字自定义一个转义符,有时也称为逃逸符,如:
select * from new_student where student_name like '%!_%' escape '!';

order by 字段名1 [asc | desc] [……,字段名n [asc | desc]]
group by 字段列表[having 条件] [with rollup]
group_concat() 与concat() 功能类似 用于字符串连接
group_concat()还可以按字段分组,将另一个值,除(NULL外)使用逗号连接起来。
concat()没有这样的功能
with rollup 用于汇总group by的各个组
union 会筛选点结果集中重复记录
union all 直接合拼两个结果集,效率更高。
exists 逻辑运算符用于检测子查询的结果集是否包含记录,如果至少包含一个记录,则
exists结果为true, 否则为false.
表达式比较运算符any(子查询)
表达式比较运算符all(子查询)
使用正则表达式查询
字段名[not] regexp [binary] '正则表达'
正则表达式匹配英文字母时,默认不区分大小写,除非添加binary选项或者将字符序
collation设置为bin或者cs

select 字段列表
from 表名
where match(全文索引字段1,全文索引字段2,……) against (搜索关键字[全文检索方式])
说明: 使用全文检索前,必须先创建全文索引。

相关文章

网友评论

      本文标题:MySQL核心技术与最佳实践(第5 章 表记录检索)

      本文链接:https://www.haomeiwen.com/subject/gvrfyqtx.html