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' )
@
-------博客内容仅用于个人学习总结-------