mysql关于查询的语句及文章汇总

mysql与oracle还是有些不一样的,有必要对于mysql的一些查询(或常用查询、容易踩的坑做个备注),持续更新,分为两块:

1、官方网站
2、收藏文章链接 :主要是汇总的一些文章
3、查询留存:按查询功能分大类,包括文章和查询示例

一、官方网站

MySQL 5.1中文文档
https://www.mysqlzh.com/
PS:没事多翻翻,虽然感觉不全,但是有些很基础的东西还是蛮有用的

三方网站:
W3Cschool的sql教程
SQL 教程
https://www.w3school.com.cn/sql/index.asp
PS:比较基础,查询备用

菜鸟教程的mysql教程
MySQL 教程
https://www.runoob.com/mysql/mysql-tutorial.html
PS:比较基础,查询备用

二、收藏的文章链接
Mysql数据库-使用的查询语句大全
https://blog.csdn.net/gymaisyl/article/details/84777139
PS:基础与常用的都提到了,蛮好的

三、查询留存

返回列的最大值相关:
1、拥有某个列的最大值的行

任务:找出最贵物品的编号、销售商和价格。

SELECT article, dealer, price
FROM   shop
WHERE  price=(SELECT MAX(price) FROM shop);

2、列的最大值:按组
任务:每项物品的的最高价格是多少?

SELECT article, MAX(price) AS price
FROM   shop
GROUP BY article

3、拥有某个字段的组间最大值的行(a、b两个表有关联字段,条件在b中,但要返回a表的字段)
任务:对每项物品,找出最贵价格的物品的经销商。

SELECT article, dealer, price
FROM   shop s1
WHERE  price=(SELECT MAX(s2.price)
              FROM shop s2
              WHERE s1.article = s2.article);

分组相关
1、MySQL group_concat()函数的排序方法
https://blog.csdn.net/william_n/article/details/97891833

正则/rlike匹配相关:
mysql中使用正则表达式查询(百度即可,或者翻《mysql必知必会》的书)
https://www.cnblogs.com/cute9406/p/11714263.html

内外左右连接
Mysql—— 内连接、左连接、右连接以及全连接查询
https://blog.csdn.net/zjt980452483/article/details/82945663

两张表,查询一张表字段的最大/最小,关联返回另一张表的数据
不能直接用一个语句返回多个字段,要嵌套:
例:

select a.aaa,a.bbb,b.ccc from t1 a,
(
select aaa,min(ccc) as ccc from t2
group by aaa
) b
where a.aaa = b.aaa

CURDATE()陷阱
博文链接:https://blog.csdn.net/andrea_25/article/details/79553071
例如提取前10天,不要用curdate()-10,等,用DATE_SUB(CURDATE(),INTERVAL 10 DAY)

查询结果中加入空值列
博文链接:https://www.cnblogs.com/qiywtc/p/3654688.html

select a,b,c,''d from X;

如上即可

数据库建表最后字段的说明:

ENGINE=INNODB 表示将数据库的引擎设置为InnoDB,从MySQL 5.6开始默认使用该引擎。
AUTO_INCREMENT=10 表示自动增长的起始值为10
DEFAULT CHARSET=utf8表示设置数据库的默认字符集为utf8

自定义排序【常用】
博文链接:MySQL自定义排序ORDER BY FIELD()
https://blog.csdn.net/u013162322/article/details/80795264
格式如下:

SELECT * FROM table ORDER BY FIELD(status,1,2,0);

这样子写的话,返回的结果集是按照字段status的1、2、0进行排序的,当然,也可以对字符串进行排序。
原理如下:
FIELD()函数是将参数1的字段对后续参数进行比较,并返回1、2、3等等,如果遇到null或者没有在结果集上存在的数据,则返回0,然后根据升序进行排序。

case when的类似if-else用法【常用】:

(
	case when A.theme_comment like '好好学习%' then REPLACE(A.theme_comment,'好好学习','')
	when A.theme_comment like '好好学习吧%' then REPLACE(A.theme_comment,'好好学习吧','')
	else A.theme_comment end
	)AS `theme_comment`,

其中A.theme_comment 这个字段也可以是其他字段

mysql的if-else语句
Mysql数据库If语句的使用
博客链接:https://www.cnblogs.com/baizhanshi/p/9284782.html

select if(sva=1,"男","女") as ssva from taname where id = '111'  

猜你喜欢

转载自blog.csdn.net/weixin_42377217/article/details/107147126