【【mysql】mysql中的锁机制】教程文章相关的互联网学习教程文章

MySql中的IFNULL、NULLIF和ISNULL用法详解

今天用到了MySql里的isnull才发现他和MSSQL里的还是有点区别,现在简单总结一下:mysql中isnull,ifnull,nullif的用法如下:isnull(expr) 的用法: 如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。mysql> select isnull(1+1); -> 0 mysql> select isnull(1/0); -> 1使用= 的null 值对比通常是错误的。 isnull() 函数同 is null比较操作符具有一些相同的特性。请参见有关is null 的说明。IFNULL(expr1,expr2)的用法:假...

MySQL中的常用函数

在MySQL中,函数不仅可以出现在select语句及其子句中,而且还可以出现在update、delete语句中。 常用的函数有: 1. 字符串函数;主要用于处理字符串。 2. 数值函数;主要用于处理数字。 3. 日期和时间函数;主要用于处理日期和事件。 4. 系统信息函数;获取系统信息。 1. 使用字符串函数: 虽然每种数据库都支持SQL,但是每种数据库拥有各自所支持的函数。 1.1 合并字符串函数concat() 和 concat_ws(): 在MySQL中可以通过函数conc...

MySQLbinlog中的事件类型详解

MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型。首先,看看源码中定义的事件类型源码位置:mysql-5.7.14/libbinlogevents/include/binlog_event.henum Log_event_type { /** Every time you update this enum (when you add a type), you have to fix Format_description_event::Format_description_event(). */ UNKNOW...

详解Mysql中的JSON系列操作函数【图】

前言 JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写。对机器来说易于解析和生成,并且会减少网络带宽的传输。JSON的格式非常简单:名称/键值。之前MySQL版本里面要实现这样的存储,要么用VARCHAR要么用TEXT大文本。 MySQL5.7发布后,专门设计了JSON数据类型以及关于这种类型的检索以及其他函数解析。 下面一起来实际操作一下。 创建带有 JSON 字段的表 比如一个‘文章表,...

全面了解MySql中的事务【图】

最近一直在做订单类的项目,使用了事务。我们的数据库选用的是MySql,存储引擎选用innoDB,innoDB对事务有着良好的支持。这篇文章我们一起来扒一扒事务相关的知识。 为什么要有事务? 事务广泛的运用于订单系统、银行系统等多种场景。如果有以下一个场景:A用户和B用户是银行的储户。现在A要给B转账500元。那么需要做以下几件事: 1. 检查A的账户余额>500元; 2. A账户扣除500元; 3. B账户增加500元; 正常的流程走下来,A账户扣了...

实例解析MySQL中的存储过程及存储过程的调用方法

mysql在5.1之后增加了存储过程的功能, 存储过程运行在mysql内部,语句都已经编译好了,速度比sql更快. 存储过程与mysql相当于shell和linux系统。如果你是程序员的话,那我告诉你存储过程实际上是一个方法,你只要调用这个方法,并且输入它设置好的参数就可以获取或者执行你想要的操作了. 看了如下存储过程实例,你会发现mysql存储过程和shell很像. 下面存储过程内容为:调用存储过程,并且传入用户名,密码参数。存储过程会将这她们...

详解MySQL中的分组查询与连接查询语句

分组查询 group by group by 属性名 [having 条件表达式][ with rollup] “属性名 ”指按照该字段值进行分组;“having 条件表达式 ”用来限制分组后的显示,满足条件的结果将被显示;with rollup 将会在所有记录的最后加上一条记录,该记录是上面所有记录的总和。 1)单独使用 group by 单独使用,查询结果只显示一个分组的一条记录。 实例:select * from employee group by sex;将只显示男女两条记录。 2)与group_concat()函...

MySQL中的基本查询语句学习笔记

1.基本查询语句 select 属性列表 from 表名和视图列表 [where 条件表达式1] [group by 属性名1 [having 条件表达式2]] [order by 属性名2 [asc|desc]] 2.单表查询 1)使用*查询所有字段select * from 表名;2) 查询指定字段select id,name from product;使用上面例子可以查询指定字段 3)查询指定记录 where 条件表达式 实例:select *from employee where id = 1002;where 子句常用查询条件 比较:=、<、 <=、 >、 >=、 !=、 <...

MySQL中的行级锁、表级锁、页级锁

在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。 在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。 一、行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁 和 排他锁。 特点 开销大,加...

详解MySQL中的死锁情况以及对死锁的处理方法

当多个事务同时持有和请求同一资源上的锁而产生循环依赖的时候就产生了死锁。死锁发生在事务试图以不同的顺序锁定资源。以StockPrice表上的两个事务为例: 事务1START TRANSACTION; UPDATE StockPrice SET close = 45.50 WHERE stock_id = 4 and date = 2002-05-01; UPDATE StockPrice SET close = 19.80 WHERE stock_id = 3 and date = 2002-05-02; COMMIT;事务 #2START TRANSACTION; UPDATE StockPrice SET high = 20.12 WHERE s...

MySQL中的联合索引学习教程

联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。两个或更多个列上的索引被称作复合索引。 利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。复合索引的结构...

MySQL中的主键以及设置其自增的用法教程

1、声明主键的方法: 您可以在创建表的时候就为表加上主键,如: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name)); 也可以更新表结构时为表加上主键,如:ALTER TABLE tbl_name ADD PRIMARY KEY (index_col_name,…); /* 创建一个qq表,将qq_id设为主键,且没有对其进行NOT NULl约束 */ create table qq( qq_id int(10), nick_name varchar(255) not null, primary key (qq_id)) /* 插入一条数据,将qq号...

MySQL中的唯一索引的简单学习教程

mysql 唯一索引UNIQUE一般用于不重复数据字段了我们经常会在数据表中的id设置为唯一索引UNIQUE,下面我来介绍如何在mysql中使用唯一索引UNIQUE吧。 创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复。唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该使用关键字UNIQUE。 把它定义为一个唯一索引。创建表时直...

解决MySQL中的Slave延迟问题的基本教程【图】

一、原因分析 一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发。简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在slave上,复制线程只有一个sql thread用于binlog的apply,所以难怪slave在高并发时会远落后master。 ORACLE MySQL 5.6版本开始支持多线程复制,配置选项 slave_parallel_workers 即可实现在slave上多线程并发复制。不过,它只能支持一个实例下多个 datab...

MySQL中的事件调度基础学习教程

经常需要有一些定时任务在MySQL表上执行,例如统计、迁移、删除无用数据等。之前的作法是利用Linux cron定时运行脚本,但是发现这样的额外依赖有时并不方便,例如单机多实例部署时,就需要分别手动分别配置不同的cron任务,需要额外配置相应的用户和权限;新环境部署时容易遗漏cron任务等。 MySQL提供了Event Scheduler,与Linux下的crontab类似,可以根据时间调度来运行任务,运行一次或多次。 完整的Event Schduler创建语句如下:...