mysql update语句

记一次MYSQL更新优化

江枫思渺然 提交于 2019-12-18 05:50:03
引言 今天(August 5, 2015 5:34 PM)在给数据库中一张表的结构做一次调整,添加了几个字段,后面对之前的数据进行刷新,刷新的内容是:对其中的一个已有字段 url 进行匹配,然后更新新加的字段 type 和 typeid 。后来就写了个shell脚本来刷数据,结果运行shell脚本后我就懵了,怎么这么慢~~~ 情景再现 CREATE TABLE `fuckSpeed` ( `uin` bigint(20) unsigned NOT NULL DEFAULT 0, `id` int(11) unsigned NOT NULL DEFAULT 0, `url` varchar(255) NOT NULL DEFAULT '', `type` int(11) unsigned NOT NULL DEFAULT 0, `typeid` varchar(64) NOT NULL DEFAULT '', ...... KEY `uin_id` (`uin`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 表结构大概是上面这样的(省略了好多字段),表中只有一个联合索引 uin_id ,而我在更新的时候是下面的思路: 首先根据一个id范围获取到一定数量的数据 select id,url from funkSpeed where id>=101

mysql row日志格式下 查看binlog sql语句

ぐ巨炮叔叔 提交于 2019-12-18 04:30:53
有时候我们需要使用row作为binlog的日志格式,即配置文件使用了binlog_format= row 参数 这样以来,我们在查看数据库binlog内容时候,就看不到增删改查的具体语句了,在数据库恢复的时候 不利于我们查找恢复数据点。 使用row日志格式的日志: 可以看到都是一段段类似加密过的字符串一样,不要着急,其实sql真实语句就在这里这里,只不过 是经过64位编码转换后的内容,我们使用mysqlbinlog对应的参数即可查看具体的sql内容: mysqlbinlog --base64-output=decode-rows -v --start-date="2017-08-12 15:00:19" --stop-date="2017-08-12 15:30:19" mysql-bin.000055 说明:--base64-ouput=decode-rows 代表解码 -v 代表换行显示这些语句,如果没有-v 你依然看不到具体的语句   --start-date 代表你要获取日志的开始时间   --stop-date 代表你要获取日志的结束数据 备注:你也可以使用pos位置来查询一定阶段呢的日内容 结果: 可以查看到很多###开头的数据,这些就是具体的sql语句,只不过不是在一行而已,而是分行显示,已经不耽误我们查看了。 binlog日志补习: binlog格式

mysql命令 出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'

為{幸葍}努か 提交于 2019-12-18 04:21:35
1、安装 brew install msyql 2、更新 brew upgrade mysql 3、启动 To have launchd start mysql now and restart at login:    brew services start mysql Or, if you don't want/need a background service you can just run:    mysql.server start 4、登录 mysql -uroot 5、查看用户及密码 select host,user,password from mysql.user;//即可查看到用户和密码 若报错 出现 ERROR 1054 (42S22): Unknown column 'password' in 'field list' 是因为 mysql数据库下已经没有password这个字段了,password字段改成了   authentication_string 所以只需要将password改成authentication_string就好 6、修改密码 如果要修改密码的话,在命令行下执行下面的语句 update mysql.user set password='这里填写你要设置的密码' where user='root'; 若报上面的错,原因同上 完成这些操作后

Mysql的锁机制的简单学习

馋奶兔 提交于 2019-12-18 01:36:42
Mysql的锁机制 在Mysql中,不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。 表级锁: 开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁: 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 1.MyISAM表锁 MyISAM默认加的是表锁 MySQL的表级锁有两种模式: 表共享读锁(Table Read Lock) 和 表独占写锁(Table Write Lock) 。 对MyISAM表的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求;对 MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作;MyISAM表的读操作与写操作之间,以及写操作之间是串行(共享读锁(S)之间是兼容的,但共享读锁(S)与排他写锁(X)之间,以及排他写锁(X)之间是互斥的)的! 写锁阻塞读 :当一个线程获得对一个表的写锁之后,只有持有锁的线程可以对表进行更新操作。其他线程的读写操作都会等待,直到锁释放为止。 读锁阻塞写 :一个session使用lock table给表加读锁,这个session可以锁定表中的记录

MySql的优化步骤

点点圈 提交于 2019-12-18 00:18:21
MySql优化的一般步骤: 1.通过show status 命令了解各种sql的执行效率   SHOW STATUS提供msyql服务器的状态信息   一般情况下,我们只需要了解以”Com”开头的指令   show session status like ‘Com%’:显示当前的连接的统计结果   show global status like ‘Com%’ :显示自数据库上次启动至今的统计结果   注:默认是session级别的   其中Com_XXX表示XXX语句所执行的次数。 重点注意:Com_select,Com_insert,Com_update,Com_delete通过这几个参数,可以容易地了解到当前数据库的应用是以插入更新为主还是以查询操作为主,以及各类的SQL大致的执行比例是多少。   另外,还有几个参数需要注意下:   show status like ‘Connections’// 试图连接MySQL服务器的次数   show status like ‘Uptime’//服务器工作的时间(单位秒)   show status like ‘Slow_queries’//慢查询的次数 (默认是10秒中就当做是慢查询,如下图所示)      a) 如何查询mysql的慢查询时间     Show variables like 'long_query_time';  

MySQL入门

大城市里の小女人 提交于 2019-12-17 22:37:23
目录 1. 数据库的介绍 2. 数据库的类型 关系型数据库核心元素 3. MySQL的基本介绍 4. 常用入门的操作命令 SQL DQL数据查询语言 DML DDL 5 DDL 创建表 显示建表语句 6 数据类型 数值类型(常用) 小数类型 字符串 日期时间类型 7 数据库设计 约束规则 实体 8 三范式 9 E-R模型 10 备份和恢复 备份 恢复 11 消除重复行 12 where条件的运算符进阶 空判断 运算符优先级 13 连接查询[连表查询、多表查询] 内连接查询(inner join) 右连接查询(right join) 左连接查询(left join) 多表关联 14 单表的连表查询[自关联查询] 15 子查询 主查询 主查询和子查询的关系 16 having 17 select查询语句的完整格式 18 Python操作mysql 安装pymysql模块 使用pymysql模块操作数据库 1. 数据库的介绍 数据库就是一个以某种有组织的方式存储的数据集合。 简单的说,数据库(database)就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据提供的多种方法来管理数据库里的数据。 好处 : 持久化存储 读写速度极高 保证数据的有效性 对程序支持性非常好,容易扩展 我们可以理解为

MySQL基础知识

霸气de小男生 提交于 2019-12-17 18:09:55
一、MySQL安装 MySQL的下载 http://dev.mysql.com/downloads/mysql/ MySQL版本选择 MySQL功能自定义选择安装 1.功能自定义选择 2.路径自定义选择 3.设置root用户密码 4.安装完成,点击MySQL Workbench 6.3 CE进入MySQL客户端 二、SQL基础 SQL语句分类 1.DDL(Data Definition Languages)语句: 数据定义语言 ,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括create/drop/alter 2.DML(Data Manipulation Language)语句: 数据操纵语句 ,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用的语句关键字主要包括 insert/delete/update/select等 3.DCL(Data Control Language)语句: 数据控制语句 ,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括grant/revoke等 DDL语句(涉及表的定义、结构的修改) 一、create语句 Query Ok代表语句执行成功 1 row affected代表数据库一行收到影响 0.01 sec代表操作执行的时间

Mysql安装、配置、优化

眉间皱痕 提交于 2019-12-17 17:05:22
Mysql安装 1、安装 下载Mysql安装包 http://test.hexin.cn/software/mysql-5.7.9.tar.gz -P /usr/local/src/ http://test.hexin.cn/software/cmake-3.4.0.tar.gz -P /usr/local/src/ http://test.hexin.cn/software/boost_1_59_0.tar.gz -P /usr/local/src/ 2、配置环境变量 1.打开cmd(可以使用win + R 键快捷打开),打开后进入mysql的安装目录:我的安装目录是:D:\work\work_soft\mysql-5.7.27-winx64\mysql-5.7.27-winx64\bin 2.进入目录后执行以下命令初始化数据库:mysqld --initialize --console ; 3.输入mysql安装命令:mysqld install # mysql安装命令 4.启动mysql服务:net start mysql  5.输入命令登录mysql:mysql -u 用户名 -p 密码(可以自行更改密码:set password for root@localhost = password(‘新密码’)) 6.右键单击打开属性,在系统变量中,选择 “path” 并单击

ubuntu安装mysql,远程连接

北城余情 提交于 2019-12-17 12:46:54
1.安装 用apt-get命令安装mysql,当前默认安装的mysql5.7 apt-get install mysql-server apt-get install mysql-client 如果中途出现设置密码操作即设置密码,没有的话后期会讲到 查看是否安装成功 netstat -tap | grep mysql 当出现这些时表示安装成功 以超级管理员权限进入mysql sudo mysql 使用mysql数据库 use mysql; 设置root的密码,我这里设置的是123456,改成你们自己要的就行 update user set authentication_string=password("123456"),plugin='mysql_native_password' where user='root'; 退出 quit; 重启mysql sudo service mysql restart; 测试 mysql -u root -p 输入密码即可登录 声明:该操作对mysql8以下版本有用 2.远程连接 先登录进mysql,然后执行sql语句 use mysql; update mysql.user as uu set uu.host='%' where uu.user='root'; 如图 ‘%’设置的是所有的ip都可以访问 然后退出数据库,修改配置文件 sudo

mysql 数据库基本操作

可紊 提交于 2019-12-17 12:30:38
Evernote Export */ /*--> */ 使用终端操作数据库 1.如何查看有什么数据库? show databases; 2.如何选择数据库? use databasesName; 3.如何查看该数据库中有哪些表? show tables; 4.如何查询表中的数据? select * from tableName; 5.如何退出数据库服务器? exit; 6.如何在数据库服务器中创建自己的数据库? create database databaseName; 7.如何创建一个数据表? 创建一个pet表 create TABLE pet( name VARCHAR(20), owner VARCHAR(20), specise VARCHAR(20), sex CHAR(1), brith DATAE, death DATE ); 注意事项: 1 :var()与varchar()的区别在于var()是定常的,哪怕存储的字符串没有达到"()"中数字的上限,var()依然会占用空格来填充空间.而varchar()则是不定长的,没有达到"()"中的上限则会自动去掉后面的空格; 2 :性别不要用:sex 要用:gender 一个是性 一个是性别; 3: 定义最后一个字段的时候不要加","; 4 :上面的"VAR","VARCHAR","DATE"可以用小写