mysql语句心得

一、写sql语句的思路

先看好需求是什么!先看好需求是什么!先看好需求是什么!
一定要先 理解好需求是什么!
否则写出来的语句不是那个意思!

然后 确定主表

一步步拆需求!
一定要知道、理清楚几张表之间的关联关系!
一定要知道、理清楚几张表之间的关联关系!
一定要知道、理清楚几张表之间的关联关系!

注意:(1)最好不要用temp表然后关联查询,这样效率会很低!

(2)注意使用左右连接的时候,填充null的字段。 A left join B on 条件表示A表的数据是完整的。如果在B表找不到匹配的会自动填充null
(3)查找到数据id,但是想显示name怎么办,这时候id ,name映射关系的表A可以根据id找到name作为select 。如下示例

二、mysql知识点补充

前提:软件:navicat 16 for mysql
1不等于0 的表示方式 ><
2 group by后面可以跟多个字段
group by a 那么a一定要出现在select a中
3字段设置为null与删掉值是不一样的
4group concat与concat是不同的。
group concat是把属于同一列的数据拼接起来
concat是把不同列的同一行数据拼接起来,可以用分隔符连接
concat_ws是一次性指定分隔符

三、数据库导出的时候花费时间很长
(1)方式一,将数据库查询加上时间的限制,分时间批次下载。此为从X轴分批次
(2)方式二,原本要查询的数据库字段很多,将其分为俩部分,然后分别下载,但是要有一张冗余的表来存储俩表之间的关系吗,所以俩表一定要有一个共同的字段然后冗余表存储这个关系,这样就可以在下载下来之后拼接俩张表

1把限制条件写在一张表里,比写在外围的where效率快

SELECT
    DISTINCT(su.user_id )
FROM
    approve_user_mapping aum
    INNER  JOIN mbx_system.sys_user su on (aum.relevance_id =  su.user_id  AND aum.user_type in (10,20))

    SELECT
    DISTINCT(su.user_id )
FROM
    approve_user_mapping aum
    INNER  JOIN mbx_system.sys_user su on (aum.relevance_id =  su.user_id )

    WHERE aum.user_type in (10,20)

2mysql能做的,java程序都能做。要寻求平衡
衡量标准:1)数据库表字段的多少 2)要关联查询的表的多少

数据库字段越多,在内存中查找比较快;
数据库字段越少,表示表结构简单,mysql查询也很快
要关联的表比较多,mysql语句会方便一些

Original: https://blog.csdn.net/weixin_43930851/article/details/127806854
Author: 耳东哇
Title: mysql语句心得

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/658072/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球