MYSQL学习笔记(一)

 SQL 的执行顺序

FROM -> ON  -> JOIN  -> WHERE -> GROUP BY -> AVG() SUM()MAX()..-> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT

一般子查询:先执行子查询、再执行主查询。

相关子查询:先执行主查询、再执行子查询。

1.序号

SELECT  (@i:=@i+1)  i,a.account FROM  user a  ,(SELECT   @i:=0)  t2 ORDER BY a.account DESC LIMIT 10;

 2.按指定顺序输出

SELECT s.id schoolId,s.name schoolName
FROM sys_school s
WHERE s.id IN (1) order by FIELD(id,1);

3 取平均值+保留小数点后两位+为空的不计算

CONVERT (AVG( CASE WHEN size IS NOT NULL AND  size != '' THEN size END) ,DECIMAL(10,2)) AS "size",

4. json 中获取某个值

REPLACE (JSON_EXTRACT( 字段名,'$.key' ), '"', '' )
{"key":"value","key2":"value2"} 

 5. 单次删除多张表数据(关联删除)

    DELETE
        t1,t2,t3,t4,t5
        FROM
        主表 AS t1
        LEFT JOIN 表2 AS t2 ON t1.id = t2.p_id
        LEFT JOIN 表3 AS t3 ON t1.id = t3.p_id
        LEFT JOIN 表4 AS t4 ON t1.id = t4.p_id
        LEFT JOIN 表5 AS t5 ON t1.id = t5.p_id
     WHERE t1.id in (${ids})

 6.为什么建索引?

索引是帮助高效的获取数据的排好序的数据结构

navicat 设计表中就可以加索引

 那么哪些字段加索引?

1.表的主键、外键+

2.Where 中经常使用的字段+

3.经常与其他表关联使用的字段+

4.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引

7.MD5加密:MD5()

#  小插曲-》问题:

  把localhost 改成本地 ip访问:

    1.找到本地mysql 安装路径: 不知道安装在哪了? 右键->启动任务管理器->服务->找到mysql ->右键转到进程->右键打开文件位置

    2.配置环境变量;

    3. use mysql;

     update user set host = '%' where user = 'root';

        flush privileges;

        select 'host','user' from user where user='root';

        quit;

    4.登录mysql 后执行

       GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.154' IDENTIFIED BY '密码' WITH GRANT OPTION;  改成自己的IP ,'密码' 改成自己的密码

    5.重启电脑不好使了。。 看mysql 服务是否被停用了

    ** 账号缺少权限 :
    GRANT XA_RECOVER_ADMIN ON *.* TO 'root'@'%';

navicat操作:

用户->新建用户

服务器授权:

 

 任务管理器 重启mysql

 

8.navicat 查看mysql 版本:

select version() from dual;

  9.查询当月的数据

AND DATE_FORMAT( 数据库字段, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )

@

-------博客内容仅用于个人学习总结-------
原文地址:https://www.cnblogs.com/DarGi2019/p/11763674.html