![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 67
lamp_yang_3533
你又可以了
展开
-
InnoDB 死锁和问题排查
两个及以上的事务各自持有对方需要的锁,导致双方都无法继续执行,只能互相等待(循环等待)。因为双方都在等待对方释放锁,而各自又无法释放锁,从而导致了死循环。这就是死锁(dead lock)。当两个事务锁定了多张表的多条记录(如 UPDATE 或者 SELECT ... FOR UPDATE),且它们各自锁定的顺序相反时,就会出现死锁。当 sql 语句锁定了多行记录和间隙时,也容易出现死锁。原创 2023-03-03 19:09:10 · 1331 阅读 · 0 评论 -
InnoDB 锁
共享锁(S)与 共享锁(S)兼容;共享锁(S)与 排他锁(X)冲突;排他锁(X)与 共享锁(S)、排他锁(X)冲突;原创 2023-03-01 22:46:18 · 351 阅读 · 0 评论 -
cast() 和 convert() 函数
cast() 和 convert() 函数非常常用,它们可以转换数据的数据类型、字符集以及排序校对规则。原创 2023-02-16 23:21:34 · 438 阅读 · 0 评论 -
窗口函数(Window Function)
窗口函数(Window Function)指的是对于查询结果的每一行,使用与该行相关的所有行,进行函数计算,可得到新的数据列。对于大多数聚合函数(如 min, max, count, sum, avg 等),如果其后紧跟 over 语句,就会作为窗口函数执行。原创 2023-02-15 23:45:41 · 1640 阅读 · 0 评论 -
存储过程
MySQL的存储过程(procedure),也叫存储程序。它是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。可以通过存储过程的名称对其进行调用。存储过程跟触发器有点类似,都是一组SQL集,但存储过程是主动调用的,且功能比触发器更加强大,触发器是某种SQL行为后自动触发的。应用场景:当用多种语言编写应用程序,或应用程序在不同平台上运行且需要执行相同的数据库操作时。当安全极为重要时。比如...原创 2018-03-01 21:24:21 · 387 阅读 · 1 评论 -
MySQL的事务的四大特性和隔离级别
事务就是一组原子性的SQL语句,或者说一个独立的工作单元。事务内的SQL语句,要么全部执行成功,要么全部执行失败。1. 事务的四大特性(ACID)原子性(atomicity):一个事务必须视为一个不可分割的最小单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行成功其中的一部分操作,这就是事务的原子性。一致性(consistency):数据总是从一个一致性的...原创 2018-02-21 23:12:10 · 1078 阅读 · 0 评论 -
视图
视图是一张虚拟的表,对视图中数据的增、删、改、查和数据表一样。简单来说,视图就是对多张表进行SELECT查询的结果集。关于视图和数据表的关系,有以下几个要点:视图是一种虚拟的表,本身并不独自占用物理空间,它是由创建它的数据表中的数据而形成的一个抽象的数据集合,是数据表中数据的子集。视图和创建它的数据表共享相同字段的值,也就是说,数据表中字段的值若发生变化,视图中对应的值也会发生改变,反之亦然。视图...原创 2018-03-07 08:01:47 · 241 阅读 · 0 评论 -
MySQL中的悲观锁和乐观锁
悲观锁(即悲观并发控制)和乐观锁(即乐观并发控制)是数据库系统中并发控制主要采用的技术手段。针对不同的业务场景,应该选用不同的并发控制方式。原创 2018-01-27 14:46:53 · 1155 阅读 · 1 评论 -
MySQL的count函数的多种用法
示例:查询id大于10和id等于3的统计。一般写法select count(case when id>10 then id end),count(case when id=3 then id end ) from test;非主流写法:select count(id>10 or null),count(id=3 or null) from test;去重统计:select count(disti原创 2017-12-17 17:58:15 · 1652 阅读 · 1 评论 -
MySQL的分区和分表
1. 分区MySQL中的分区是指将一个数据表按照某种规则(如时间范围、哈希等),划分为多个区块,各个区块所属的数据文件是相互独立的。分区对于SQL层来说,是一个完全封装的、底层实现的黑盒子;但对于底层的文件系统来说,每一个区块都对应 一个使用 # 分割命名的表文件。分区的一个主要目的是将数据按照一个较粗的粒度划分到不同的分区表中,这样,可以将相关的数据存放在一起,另外,如果想一次删除整个分区的数据...原创 2018-02-23 21:17:43 · 343 阅读 · 0 评论 -
MySQL创建普通用户并赋予权限
打开cmd,切换至 E:\xampp\mysql\bin,用 root 账户连接MySQL服务器:mysql -uroot -p -P3306首先,创建新用户:create user 'user01'@'127.0.0.1' identified by '666666';create user 'user01'@'%' identified by '666666';说明:@后面的ip地址为允许...原创 2018-02-25 10:46:36 · 6740 阅读 · 0 评论 -
触发器
触发器(trigger)是指在某一个操作(insert、delete、update)之前before或之后after,自动触发另外的sql语句。应用场景:某张表的数据发生改变时,自动更新另外一张表中的统计字段。自动实现两张表中的数据同步。比如:现在有两张用户表user1和user2,当user1表中的数据发生变化时,需同步更新至user2表。就可以用触发器来实现同步更新。准备工作:连接数据库,并创...原创 2018-03-06 15:29:03 · 336 阅读 · 0 评论 -
PHP 中使用 PDO 扩展操作 MySQL
简介PDO 支持面向对象的方式处理各种数据库(如:mysql、oracle、db2等),也就是说,PDO 支持跨数据库类型。PDO 中也支持预处理和参数绑定。连接数据库try{ $pdo = new PDO('mysql:host=localhost;dbname=test','root','root'); // 设置错误处理模式为抛出异常,下面执行SQL语句的时候,如果有错误...原创 2018-06-04 23:27:27 · 1318 阅读 · 0 评论 -
MySQL 中的流程控制和用法示例
MySQL 中的流程控制,case 子句,if 子句的基本语法和用法原创 2018-06-05 23:35:13 · 2533 阅读 · 1 评论 -
MySQL 中的 zerofill 和 tinyint(5)
在 MySQL 中,zerofill 字段约束表示用零填充,配合整型后面的小括号中的数值一起生效。整型后面的小括号中的数值,用于指定整型数据的长度(宽度)。若使用了 zerofill,当实际长度达不到指定的显示长度时,就会用 0 在前面补齐。对于 tinyint 数据类型,只占 1 个字节:无符号的(unsigned),范围是 0 到 255,默认长度是 3。 有符号的(sign...原创 2019-08-25 11:54:07 · 1639 阅读 · 0 评论 -
MySQL 报错 [Err] 1055 ... this is incompatible with sql_mode=only_full_group_by
问题描述升级 MySQL 的版本为 8.0.12 后,出现了问题。创建数据表,或执行更新操作时,报错 [Err] 1055 ...错误信息如下:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_s...原创 2019-08-21 02:29:20 · 434 阅读 · 1 评论 -
MySQL中字段的数据类型和约束
1. 字段的数据类型1.1 整型tinyint -128 to 127 0 to 255smallint -32768 to 32767 0 to 65535mediumint -8388608 to 8388607 0 to 16777215int -2147483648 to 2147483647 0 to 42原创 2017-12-20 20:44:08 · 943 阅读 · 1 评论 -
MySQL的数据备份和还原
1. 数据备份mysqldump -uusername -ppassword db_name > backup_name.sql备份单个数据库。mysqldump -uusername -ppassword --databases db_name1 db_name2 ... > backup_name.sql备份多个数据库。mysqldump -uusername -ppassword --al原创 2017-12-11 20:02:03 · 303 阅读 · 0 评论 -
存储引擎 MyISAM 和 InnoDB 的区别
MyISAM适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好,MyISAM不支持事务、外键和行锁。MyISAM的每个数据表包括三个文件,分别是表的结构、表的索引和表的数据,表的索引和表的数据是分开存储的。InnoDB在写操作比较多的时候会更优秀,InnoDB支持事务、外键和行锁。InnoDB的数据表包括两个文件,表的索引和数据存储在同一个文件中,默认是共享表空间,即原创 2016-06-25 10:50:04 · 454 阅读 · 0 评论 -
php中三种处理mysql数据库的扩展库(mysql、mysqli、pdo)的区别?
mysql 只支持面向过程的方式处理mysql数据库mysqli 既支持面向对象的方式处理mysql数据库,也保留了面向过程的处理方式pdo(推荐使用) 支持面向对象的方式处理各种数据库类型(如:mysql、oracle、db2等),也就是说pdo是可以跨数据库类型的原创 2016-06-23 10:38:12 · 1552 阅读 · 0 评论 -
如何在一台windows主机上实现MySQL的主从复制?
MySQL的主从复制是通过binlog日志来实现的,复制是数据库级别的,也就是说从服务器上的数据库名称必须和主服务器的数据库名称一致,为此,我们至少需要两个MySQL服务器。一般来说,MySQL数据库的主库和从库是分布在不同的主机上。假如,现在我们只有一台主机,且是windows系统,如何实现MySQL的主从复制呢?方法如下:这里我们只介绍 一主一从 的操作方法。我的电原创 2016-08-21 01:27:40 · 5694 阅读 · 2 评论 -
如何查看MySQL的版本?
查看MySQL的版本,主要有以下几个方法:1. 没有连接到MySQL服务器,就想查看MySQL的版本。打开cmd,切换至mysql的bin目录,运行下面的命令即可:e:\mysql\bin>mysql -Vmysql Ver 14.14 Distrib 5.6.32, for Win32 (AMD64)(版本为 5.6.32)或者:e:\m原创 2016-08-21 11:00:07 · 197836 阅读 · 5 评论 -
Windows系统如何安装mysql?
1. 下载mysql的windows安装包到mysql的官网:http://dev.mysql.com/downloads/mysql/5.6.html#downloads 进行下载注意:官网给出的安装包有两种格式(msi格式和 zip格式),如果下载的是msi格式的,则直接双击安装即可,这里我们下载zip格式的。现在,我们下载 mysql-5.6.32-win32.zip 版原创 2016-08-20 21:51:23 · 2095 阅读 · 0 评论 -
MySQL 的索引
在 MySQL 中,索引(index)也叫做键(key),它是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对性能的影响就愈发重要。索引优化是对查询性能优化最有效的手段。原创 2016-11-04 20:46:10 · 2398 阅读 · 1 评论 -
如何修改MySQL的密码?
1. 设置mysql的初始密码一般而言,mysql的用户名为root,初始密码为空。下面我们来设置root用户的初始密码,打开cmd,切换至mysql的bin目录,执行下面的命令:E:cd E:\xampp\mysql\binmysqladmin -u root password root初次设定root用户的密码为root。注意:该方式只适合初次设原创 2016-09-29 13:46:23 · 542 阅读 · 0 评论 -
MySQL的基本用法和常用命令
1. 连接mysql服务器打开命令行(开始菜单 + R ,输入cmd ,回车 ),输入:(如果报错,可以将mysql的bin目录加入windows系统的环境变量path中或切换至mysql的bin目录)mysql -u用户名 -p密码或mysql -u用户名 -pEnter Password:*****输入密码或mysql -h主机名原创 2016-11-06 20:46:59 · 2377 阅读 · 0 评论 -
如何优化SQL?
通常,网站的性能瓶颈在数据库查询,如果你希望你的网站在一定阶段之内保持稳定,优化你的SQL和数据库是非常必要的优化环节。优化数据库是一个很大的话题,这里只是摘要一些比较关键的优化参考建议,并且需要具体分析项目的情况才能给出最合理的优化建议,所以具体的优化建议你应该咨询你公司的架构师或者DBA。1. 选择合适的存储引擎以 MySQL 为例,常用的有两个存储引擎 MyISAM 和 InnoDB,它们各有原创 2016-10-29 15:35:18 · 2342 阅读 · 0 评论 -
MySQL 的 explain 命令基本用法
为了提前了解 SQL 的性能,MySQL 提供了 explain 执行计划功能。它对分析和优化 SQL 语句十分有用,通过它可以看清执行过程的细节、优化器的选择,分析 SQL 的性能瓶颈,找到问题所在。当需要对某条 SQL 查询语句进行分析和优化时,我们经常会使用 explain 命令 或 desc 命令进行操作,分析 SQL 语句时,explain 和 desc 的作用是一样的。原创 2016-10-30 01:39:02 · 957 阅读 · 1 评论 -
MySQL中的数学函数
1. bin将十进制数值转换为二进制数值。MariaDB [test]> select bin(11);+---------+| bin(11) |+---------+| 1011 |+---------+2. ceiling进一法取整。MariaDB [test]> select ceiling(3.2);+--------------+| ceiling(3.2) |+-原创 2017-01-08 02:20:07 · 920 阅读 · 0 评论 -
MySQL中的字符串函数
1. concat拼接多个字符串。MariaDB [test]> select concat('a', '-', 'b', '-', 'c');+---------------------------------+| concat('a', '-', 'b', '-', 'c') |+---------------------------------+| a-b-c原创 2017-01-19 21:34:04 · 321 阅读 · 0 评论 -
Linux系统中如何安装mysql的源码包?
这里以CentOS6.6系统中安装mysql的源码包,进行讲解。1. mysql源码包的下载mysql安装包的官方下载地址为:http://dev.mysql.com/downloads/mysql/5.6.html#downloads打开该下载地址后,在 “Select Version:”处,选择要下载的mysql的版本,我选择的是5.6.34;在“Select Platform:”处,选择适用的原创 2016-10-31 01:54:54 · 5797 阅读 · 3 评论 -
MySQL的常用命令
1. 连接mysql服务器打开命令行(开始菜单 + R ,输入cmd ,回车 ),输入下面的命令:如果报错,可将mysql的bin目录加入windows系统的环境变量path中或切换至mysql的bin目录。mysql -u用户名 -p密码或mysql -u用户名 -pEnter Password:*****输入密码或mysql -h主机名称 -u用户名 -p密码或mysql -h主机原创 2017-09-28 21:15:24 · 626 阅读 · 1 评论 -
MySQL 中的日期时间
1. now返回当前的日期和时间。MariaDB [test]> select now();+---------------------+| now() |+---------------------+| 2016-11-20 21:46:56 |+---------------------+2. curdate返回当前的日期。curdate()是current原创 2016-12-19 12:26:54 · 539 阅读 · 0 评论 -
MySQL三大范式和反范式
1. 第一范式确保数据表中每列(字段)的原子性。如果数据表中每个字段都是不可再分的最小数据单元,则满足第一范式。例如:user用户表,包含字段id,username,password2. 第二范式在第一范式的基础上更进一步,目标是确保表中的每列都和主键相关。如果一个关系满足第一范式,并且除了主键之外的其他列,都依赖于该主键,则满足第二范式。例如:一个用户只有原创 2016-02-29 14:16:37 · 4284 阅读 · 0 评论