mysql update语句

mysql杂说——mysql锁

a 夏天 提交于 2019-12-03 13:11:23
Mysql用到了很多这种锁机制,行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。这些锁统称为悲观锁(Pessimistic Lock)。 1、mysql存储引擎分为:innodb 和 myisam 事务, 表锁 行锁 innodb 支持 支持 支持    myisam 不支持    支持    不支持 2、数据库锁:行锁的是索引 加锁的目的:减少资源的竞争 表级锁: 开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁: 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁: 开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 3、 mysql5.7解决了幻读:解决思路通过间隙锁 防止幻读,以满足相关隔离级别的要求 间隙锁:1,3,5 存在(-∞,1),(1,3),(3,5),(5,∞) 四个间隙,分别存在4个间隙锁 4、InnoDB实现了以下两种类型的行锁。 共享锁(s):又称读锁。 允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这 保证了其他事务可以读A , 但在T释放A上的S锁之前不能对A做任何修改 。 排他锁(X):又称写锁。

MySQL学习笔记2——DML

自作多情 提交于 2019-12-03 12:20:31
DML(数据操作语言,它是对表记录的操作(增,删,改)!) 1.插入数据 *INSERT INTO 表名(列名1,列名2,...) VALUES(列值1,列值2,...); >在表名后给出要插入的列名,其他没有指定的列等同于插入null值,所以插入记录总是插入一行,不可能是半行。 >在VALUES后给出列值,值的顺序和个数必须与前面指定的列对应。 *INSERT INTO 表名 VALUES(列值1,列值2,...); >没有给出要插入的列,那么表示插入所有列。 >值的个数必须是该表列的个数。 >值的顺序,必须与表创建时给出的列的顺序相同。 //插入所有列 INSERT INTO stu(id, name, age, gender )VALUES( 'ITCAST_0001', 'zhangSan', 28, 'male'); //插入部分列,没有指定的列默认为NULL INSERT INTO stu(id, name )VALUES( 'ITCAST_0001', 'zhangSan'); //不给出插入列,那么默认为插入所有列!值的顺序要与创建表时列的顺序相同 INSERT INTO stu VALUES( 'ITCAST_0001', 'zhangSan', 28, 'male'); 2.修改数据 *UPDATE 表名 SET 列名1=列值1,列名2=列值2,...

数据同步工具otter(一)谈谈binlog和canal

廉价感情. 提交于 2019-12-03 12:05:58
数据同步工具otter(一)谈谈binlog和canal 之前因为懒,没有针对otter做更多的解释和说明,在使用过程中,也发现了一些问题,此次补上一个完整的文档,方便大家使用。 Otter是基于cannal开源的,canal又是基于mysql binlog的产品。我们就从binlog说起 binlog mysql的binlog日志是被设计用来作主从备份或者数据恢复用的。binlog是The Binary Log的简称,意思就是二进制的日志文件(可以点击https://dev.mysql.com/doc/refman/5.6/en/binary-log.html了解)。binlog中以二进制的形式记录了数据库的"events(事件)"即数据库结构及表数据发生的变化。以下这张图就反应了主从库之间使用binlog进行同步的过程: mysql提供了三种不同的binlog记录形式: STATEMENT 语句模式(默认):日志中记录了所有的执行的sql语句,从库在执行的时候,重新执行相应sql即可。但是因为不记录语句执行的上下文,在从库执行某些语句(比如存储过程)的时候,有些语句不一定能成功执行导致丢失数据 ROW 行模式:日志中记录每一行每个字段的变化,能清楚记录每行数据的变化历史,主从丢失数据的情况大大降低,但是缺点是会产生大量的binlog占用存储空间 MIX 混合模式:在 Mixed

MySQL5.6与MySQL5.7安装的区别

三世轮回 提交于 2019-12-03 12:02:01
一.MySQL5.6与MySQL5.7安装的区别 1、cmake的时候加入了boost 下载boost.org 2、初始化时 cd /application/mysql/bin/mysql 使用mysqld --initialize 替代mysql_install_db,其它参数没有变化:--user= --basedir= --datadir= 3、--initialize会生成一个临时密码 4、还可以用另外一个参数--initialize-insecure (加上生不成密码) mysql 5.7使用弱密码 validate_password_length 8 # 密码的最小长度,此处为8。 validate_password_mixed_case_count 1 # 至少要包含小写或大写字母的个数,此处为1。 validate_password_number_count 1 # 至少要包含的数字的个数,此处为1。 validate_password_policy MEDIUM # 强度等级,其中其值可设置为0、1、2。分别对应: 【0/LOW】:只检查长度。 【1/MEDIUM】:在0等级的基础上多检查数字、大小写、特殊字符。 【2/STRONG】:在1等级的基础上多检查特殊字符字典文件,此处为1。 validate_password_special_char_count 1

MySql学习笔记06

易管家 提交于 2019-12-03 11:51:09
课程回顾 一对一关联 案例1:查询每个员工的名字和主管领导的名字 select e.ename 员工姓名,m.ename 领导姓名from emp e join emp mon e.mgr=m.empno; 案例2: 查询主管领导名字为blake的所有员工名字 select e.ename 员工姓名,m.ename 领导姓名 from emp e join emp m on e.mgr=m.empno where m.ename='blake' 案例3:查询有商品的分类信息及上级分类信息 往t item category表内部插入以下数据 id 162 name 办公用品 id 229 name 文具 id 913 name 户外用品 -插入数据 insert into t item category (id,name) values(162,'办公用品'),(229,'文具'),(913,'户外用品'); -查询所有有商品的分类id SELECT DISTINCT category id FROM t item WHERE category id IS NOT NULL -查询分类详情 select * from t item category where id in (SELECT DISTINCT category id FROM t item WHERE category

Mysql-基本的知识点

南笙酒味 提交于 2019-12-03 11:26:46
Mysql-操作基本知识点 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格) /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- 显示系统变量信息 /* 数据库操作 */ ------------------ -- 查看当前数据库 SELECT DATABASE(); -- 显示当前时间、用户名、数据库版本 SELECT now(), user(), version(); -- 创建库 CREATE DATABASE[ IF NOT EXISTS] 数据库名 数据库选项 数据库选项: CHARACTER SET charset_name COLLATE collation_name -- 查看已有库 SHOW DATABASES[ LIKE 'PATTERN'] -- 查看当前库信息 SHOW CREATE DATABASE 数据库名 -- 修改库的选项信息 ALTER DATABASE 库名 选项信息 -- 删除库 DROP DATABASE[ IF EXISTS]

MYSQL的修改表结构SQL语句

我是研究僧i 提交于 2019-12-03 11:22:44
1.背景   使用sql语句对表结构进行修改 2.案例演示 案例:表结构 CREATE TABLE `login_user` ( `id` int(32) NOT NULL AUTO_INCREMENT, `name` varchar(225) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '名字', `password` varchar(26) DEFAULT NULL COMMENT '密码3', `type` varchar(32) DEFAULT NULL, `state` varchar(32) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL, `password5` varchar(26) DEFAULT NULL COMMENT '密码5', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; 1.修改字段:一般修改属性和数据类型 alter table login_user modify password varchar(25) DEFAULT NULL

window和linux(centos7)安装mysql5.7

半城伤御伤魂 提交于 2019-12-03 11:08:57
window mysql 安装步骤 社区版本下载地址: https://dev.mysql.com/downloads/file/?id=474802 下载完成后,得到mysql-installer-web-community-5.7.21.0.msi文件,双击安装 进入安装界面,下一步 勾选server only 或者 Developer Default都可以,这里勾选仅服务器形式安装,然后下一步 点击execute后,等待下载完成并自动安装 安装完成后,一直点击下一步,直到出现设置root用户密码的界面 设置完密码后,继续下一步, 到如下页面后,若白色圆圈中都是绿色则代表成功,否则出现红色就说明本地环境有问题。 默认数据端口就是3306 打开开始mysql默认命令行客户端,测试是否安装成功 至此,window环境下mysql安装完成 linux mysql 安装步骤 CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用MariaDB代替了,MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品

mysql常用排查命令

时间秒杀一切 提交于 2019-12-03 10:42:02
1.查看服务器使用状态 mysqladmin -uroot -p -S /tmp/mysql .sock -r -i 1 ext |\ awk -F "|" \ "BEGIN{ count=0; }" \ '{ if ($2 ~ /Variable_name/ && ++count == 1){\ print "----------|---------|--- MySQL Command Status --|----- Innodb row operation ----|-- Buffer Pool Read --" ;\ print "---Time---|---QPS---|select insert update delete| read inserted updated deleted| logical physical" ;\ }\ else if ($2 ~ /Queries/ ){queries=$3;}\ else if ($2 ~ /Com_select /){com_select=$3;}\ else if ($2 ~ /Com_insert /){com_insert=$3;}\ else if ($2 ~ /Com_update /){com_update=$3;}\ else if ($2 ~ /Com_delete /){com_delete=$3;}\

mysql面试题

会有一股神秘感。 提交于 2019-12-03 10:38:32
1、MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联; 2、MySQL中myisam与innodb的区别,至少5点 (1)、问5点不同; (2)、innodb引擎的4大特性 (3)、2者selectcount(*)哪个更快,为什么 3、MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义 (1)、varchar与char的区别 (2)、varchar(50)中50的涵义 (3)、int(20)中20的涵义 (4)、mysql为什么这么设计 4、innodb的事务与日志的实现方式 (1)、有多少种日志; (2)、事物的4种隔离级别 (3)、事务是如何通过日志来实现的,说得越深入越好。 5、问了MySQL binlog的几种日志录入格式以及区别 (1)、binlog的日志格式的种类和分别 (2)、适用场景; (3)、结合第一个问题,每一种日志格式在复制中的优劣。 6、问了下MySQL数据库cpu飙升到500%的话他怎么处理? (1)、没有经验的,可以不问; (2)、有经验的,问他们的处理思路。 7、sql优化 (1)、explain出来的各种item的意义; (2)、profile的意义以及使用场景; 8、备份计划,mysqldump以及xtranbackup的实现原理 (1)、备份计划; (2)、备份恢复时间; (3)