![](https://img-blog.csdnimg.cn/20210723111719180.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 65
MySQL入门关键字&函数使用方法记录
磊疯
前车之鉴,后车之师
展开
-
MySQL按照拼音排序
mysql里面按照拼音进行排序ORDER BY CONVERT(name USING GBK) ORDER BY CONVERT(name USING GBK)原创 2022-03-17 14:28:38 · 1238 阅读 · 0 评论 -
MySQL5.7忘记密码(修改配置文件方式跳过授权)
在网上查看了很多资料来修改mysql的root账号密码,但是修改的时候总跟网上的教程里的不一样,不知道是不是因为版本原因。因此将解决办法和不同点都发上来,仅供参考,共同学习。1. 找到my.ini文件,配置跳过权限表my.ini文件,一般在隐藏文件夹ProgramData目录下的mysql里2. 在【mysqld】下配置skip-grant-tables3. 重启mysql服务这个方法就多了。可以使用mysql 自带的 MySQL Notifier。或者去windows的服务里面重启。或者在c原创 2022-02-08 13:19:46 · 5926 阅读 · 0 评论 -
MySQL language DDL/DML/DCL/DQL/DCL
DDL(Data Definition Language)数据定义语言 create/drop/alter/truncateDML(Data Manipulation Language)数据操作语言 insert/delete/updateDCL(Data Control Language)数据控制语言 grant/revokeDQL(Data Query Language)数据查询语言 seleteTCL(Transaction Control Language)事务控制语言 commit原创 2021-07-26 09:51:22 · 136 阅读 · 0 评论 -
MySQL高级(五)主从复制
读写分离 -> 数据一致性(主从复制原理)why:写锁、读不能读;热备;降低磁盘I/O日志:binlog(mysql server)、redolog(InnoDB 事务)、undolog(InnoDB 事务)从库两个线程(自带)IO thread :把二进制文件传递sql thread:读取relay log解析sql逐一执行mysql5.7之后使用MTS解决复制时间延迟主从复制搭建:主: 1、开启binlog日志,/etc/my.cnf设置二进制文件名称、日志格式、服务器原创 2021-07-26 09:51:03 · 101 阅读 · 0 评论 -
MySQL高级(四)事务 MVCC 日志 锁
InnoDB -> ACID 原子性(不可分割,完全成功或失败)、一致性、隔离性、持久性(redo) -> begin; commit 还有自动提交、隐式提交的概念。保存点、 脏读(读到了其他事务未提交的修改数据) 不可重复读(读到了其他事务提交的数据) 幻读(新增数据导致其他事务未提交的数据) 幻读产生原因:行锁只能锁住行,即使把所有的行记录都上锁,也阻止不了新插入的记录 处理方式:加锁、事务隔离、MVCC加锁:脏读:在修改时加排它锁,直到事务提交时释翻译 2021-07-26 09:50:44 · 174 阅读 · 0 评论 -
MySQL高级(三) 引擎
数据库表级别的存储引擎MyISAM: 文件: .frm(表结构) .MYD(数据) .MYI(索引)InnoDB: 文件: .frm(表结构) .ibd(数据+索引) 支持事务、支持行级锁、支持外键 支持XA事务、支持savePoints mysql数据默认存在mysql安装目录的data目录 聚集索引:叶子节点包含了完整的数据和索引,一个文件中查找 (InnoDB的主键索引) 非聚集索引:一个文件存索引、一个存数据问题1为什么InnoD原创 2021-07-26 09:49:22 · 58 阅读 · 0 评论 -
MySQL高级(二) 优化 explain
数据库优化: 1>数据库设计–三大范式 2>数据库索引 3>分表分库(水平分割,垂直分割) 4>读写分离 5>存储过程(模块化编程,可以提高速度) 6>对MySQL配置优化(配置最大并发数my.ini,调整缓存大小) 7>SQL调优 8>定时清除不需要的数据,定时进行碎片整理 mysql表最大数据量:64TBexplain: id:值越大越先执行,复杂的sql select_type:原创 2021-07-26 09:48:53 · 74 阅读 · 0 评论 -
MySQL高级(一) 索引 数据结构
1索引:概念:帮助mysql高效获取数据的 !排好序! 的 数据结构 (key - value)1.1数据结构二叉树:BST树 如果1234567,跟链表一样,与全表扫描一样(二分查找:log(n))平衡二叉树:AVL树 最短子树、最高子树 高度差 不能超过1红黑树:BRT树 平衡树,但是大数据时层数太多,IO也是很多,最长路径不超过最短路径的2倍B-Tree: 叶子节点没有指针,范围查找不友好 非叶子节点存储data和索引B+Tree:原创 2021-07-23 17:22:38 · 143 阅读 · 0 评论 -
MySQL函数&关键字(九)排名函数 非rank窗口函数
MySQL 官方手册 8.0 Reference Manual - Window Function本文转自:Query to obtain rank function in MySQLMySQL8.0之后开始支持窗口函数,其中排序函数有:ROW_NUMBER():顺序排序——1、2、3RANK():并列排序,跳过重复序号——1、1、3DENSE_RANK():并列排序,不跳过重复序号——1、1、2MySQL中8.0之前没有Rank排名函数,每当需要根据 MySQL 中的某些功能/标准从表中.转载 2021-07-23 17:14:20 · 368 阅读 · 0 评论 -
MySQL函数&关键字(八)自定义变量 @var_name
MySQL 官方手册 8.0 Reference Manual - User-Defined Variables您可以在一个语句中将一个值存储在用户定义的变量中,然后在另一个语句中引用它。这使您能够将值从一个语句传递到另一个语句。用户变量写为 @var_name,其中变量名*var_name*由当前字符集字母、数字、.、_和 $组成。如果将用户变量名称引用为字符串或标识符(例如, 、 或),则用户变量名称可以包含其他字符。 默认字符集是cp1252 (Latin1)。可以用mysqld的–defa.翻译 2021-07-23 16:40:36 · 816 阅读 · 0 评论 -
MySQL函数&关键字(七)时间计算/转换 date_add()/diff/format+时间戳
MySQL 官方手册 8.0 Reference Manual - DATE_FORMAT(date,format)时间计算#1.增减间隔 DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)set @dt = now();select date_add(@dt, interval 1 day); -- add 1 dayselect date_add(@dt, interval 1 hour); -- .转载 2021-07-23 11:09:06 · 663 阅读 · 0 评论 -
MySQL函数&关键字(六)时间选取 Extract()/dayof/week
MySQL 官方手册 8.0 Reference Manual - EXTRACT(unit FROM date)# 1. 选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒set @dt = '2008-09-10 07:15:30.123456';select date(@dt); -- 2008-09-10select time(@dt); -- 07:15:30.123456select year(@dt); -- 2008select quarter(@d.转载 2021-07-23 10:57:51 · 581 阅读 · 0 评论 -
MySQL函数&关键字(五)子查询 ANY/SOME/ALL/IN/EXISTS/USING
MySQL 官方手册 8.0 Reference Manual - Subqueries with ANY, IN, or SOME1. ANY与ALL对比operand comparison_operator ANY (subquery)operand IN (subquery)operand comparison_operator SOME (subquery)comparison_operator 包含:= > < >= <= <> !=ANY 和.原创 2021-07-23 10:46:06 · 458 阅读 · 0 评论 -
MySQL函数&关键字(四)连接查询 join/union
MySQL 官方手册 8.0 Reference Manual - JOIN Clausejoin隐式连接:两个表逗号连接,与INNER JOIN效果相同,只不过逗号连接需要在where条件里写连接条件,不写where结果是笛卡尔积SELECT * FROM `a` INNER JOIN `b` ON a.id = b.aid ORDER BY a.idSELECT * FROM `a` , `b` WHERE a.id = b.aid ORDER BY a.idJOIN具有比逗号运算符.原创 2021-07-23 10:38:00 · 393 阅读 · 0 评论 -
MySQL函数&关键字(三)字符串 concat()/concat_ws()+coalesce()
MySQL 官方手册 8.0 Reference Manual - CONCAT(str1,str2,…)GROUP_CONCAT()将group by产生的同一个分组中的值连接起来,返回一个字符串结果。GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] .原创 2021-07-23 10:25:38 · 229 阅读 · 0 评论 -
MySQL函数&关键字(二)分组 group by/group_concat()
MySQL 官方手册 8.0 Reference Manual - GROUP BY ModifiersMySQL 官方手册 8.0 Reference Manual - GROUP_CONCAT(expr)1、group by 通过select在返回集字段中,这些字段要么就要包含在group by语句后面 作为分组的依据,要么就要被包含在聚合函数中。否则就可能存在多个值,如上图,张三的语文有74,0,0三个值。with rollup: group by 后可以跟with rollup,表示在.原创 2021-07-23 10:22:10 · 644 阅读 · 0 评论 -
MySQL函数&关键字(一)条件控制 if/case when
1、ifIF(expr1,expr2,expr3)流程控制,可以理解为case when then else end的语法糖,或者理解为三目运算符例如: # 1 可以放在select中,字段转换输出 select emp_no, emp_name, if(emp_type=10,'合同工','临时工') emp_type_name from hr_employee # 2 可以放在where条件中,动态条件 SELECT a.co_id, a.goo原创 2021-07-23 10:05:48 · 507 阅读 · 0 评论 -
SQL书写顺序及执行顺序
在使用MyBatis的时候,经常需要自己手写SQL,多条件查询的时候很容易只关注条件的拼接,而不注意limit或者group by 的顺序。这里只列出SQL书写顺序,至于执行顺序,可参考SQL语句执行顺序-萌小Q-博客SQL调优SELECT DISTINCT <select_list>FROM <left_table><join_type> JOIN &...原创 2018-12-19 18:49:41 · 1019 阅读 · 0 评论