mysql update语句

MySQL基于ROW格式的数据恢复

為{幸葍}努か 提交于 2019-12-27 02:49:52
大家都知道MySQL Binlog 有三种格式,分别是 Statement、Row、Mixd。 Statement记录了用户执行的原始SQL,而Row则是记录了行的修改情况,在MySQL 5.6以上的版本默认是Mixd格式,但为了保证复制数据的完整性,建议生产环境都使用Row格式,就前面所说的Row记录的是行数据的修改情况,而不是原始SQL。那么线上或者测试环境误操删除或者更新几条数据后,又想恢复,那怎么办呢?下面演示基于Binlog格式为Row的误操后数据恢复,那么怎么把Binlog解析出来生成反向的原始SQL呢?下面我们一起来学习。 下面我们使用 binlog-rollback.pl 对数据进行恢复演示。( 这脚本的作者不知道是谁,Github上也没找到这个脚本,所以无法标明出处 ),脚本是用Perl语言写的,非常好用的一个脚本,当然你也可以用Shell或者Python脚本来实现,下面是脚本的代码: #!/usr/lib/perl -w use strict; use warnings; use Class::Struct; use Getopt::Long qw(:config no_ignore_case); # GetOption # register handler system signals use sigtrap 'handler', \&sig_int,

mysql -e参数使用详解

拥有回忆 提交于 2019-12-27 02:07:40
可以用shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作 。 mysql -hhostname -Pport -uusername -ppassword -e 相关mysql的sql语句,不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法。 实例: #!/bin/bash HOSTNAME="192.168.111.84" #数据库信息 PORT="3306" USERNAME="root" PASSWORD="" DBNAME="test_db_test" #数据库名称 TABLENAME="test_table_test" #数据库中表的名称 #创建数据库 create_db_sql="create database IF NOT EXISTS ${DBNAME}" mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e"${create_db_sql}" #创建表 create_table_sql="create table IF NOT EXISTS ${TABLENAME} ( name varchar(20), id int(11) default 0 )" mysql -h${HOSTNAME} -P$

Java连接MySQL数据库及操作

ε祈祈猫儿з 提交于 2019-12-27 00:35:27
Java操作MySQL数据库,需要驱动 mysql-connector-java 来进行操作,去下载对应的jar包 一、导入需要的jar包 我用的是maven对包进行管理,在maven中添加如下内容,直接重新导入Reimport一下包就下载下来了 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency> 想要其他的版本,可以自己去maven的 http://www.mvnrepository.com/ 去找,搜索对应的依赖。 二、开始具体编码 1.加载驱动程序 Class.forName("com.mysql.jdbc.Driver" ); 说明:将这个驱动加载到JVC中 2.连接数据库(con是自定义的) Connection con = DriverManager.getConnection(url, user, password) 3.建立Statement对象,用来执行sql语句 Statement stmt = con.createStatement(); 4.执行sql语句 可以进行查询、update等操作,我这里只用到了查询,更新可以用 executeUpdate 查询语句:

Linux下安装MySQL数据库

ⅰ亾dé卋堺 提交于 2019-12-26 17:06:04
  MySQL目前最新版本是5.7.x,这里安装的MySQL版本是稳定的5.6.29版本,和5.7版本的版本安装过程不太一样,这里在CentOS 7.2系统上部署过程如下   首先,打开下载链接:http://www.mysql.com/downloads/,页面最上面是企业版,一般个人或者企业使用社区版就足够了,页面拉到最下方可以看到下载入口:      点击链接进入,然后选择第一项进入:      这里默认是5.7.11的版本,我们选择5.6的下载链接进入:      进入后,默认版本就是5.6.19,对于版本这里选择Linux - Generic,也就是通用的二进制版本      然后上面都是RPM的包,我们拉到页面最下方根据操作系统位数选择.tar.gz的包,这里选择64位的mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz      点击Download下载到本地,然后上传到服务器准备安装   接下来执行安装过程:   释放归档文件: tar -xvzf mysql- 5.6 . 29 -linux-glibc2. 5 -x86_64. tar .gz   建立mysql目录并移动至安装目录: mkdir /usr/local/mysql mv mysql-5.6.29-linux-glibc2.5-x86_64 /usr/local

CentOS7安装mysql-server

◇◆丶佛笑我妖孽 提交于 2019-12-26 14:22:58
在Hive中,Derby数据库只能起一个实例,不能在多个终端同时运行,这就产生了许多禁锢,因此对于元数据的存储,采用开源的mysql数据库,因此就需要在主节点上安装mysql相关服务。 0、首先,通过yum list | grep mysql命令来查找yum源中是否有MySQL,我的查询结果如下; 可以看出,总之看不到mysql-server的影子,具体彻底删除还可以参考这个博文:https://www.cnblogs.com/cyl048/p/6879085.html (据说centOS7的源中暂时没有mysql,但是相同版本的centOS在阿里云中可以直接使用yum install mysql-server来直接安装mysql的) 因此,可以通过找到mysql的安装源,如下: 1、先下载mysql的repo源 $ wget http://repo .mysql .com/mysql-community-release-el7- 5.noarch .rpm 2、安装源包,即安装mysql-community-release-el7-5.noarch.rpm包 $ sudo rpm -ivh mysql -community -release -el7 - 5.noarch .rpm 安装这个包后,就会获得两个mysql的yum repo源: /etc/yum.repos.d

MYSQL子查询与连接

∥☆過路亽.° 提交于 2019-12-26 05:40:07
37:子查询与连接 SET 列名 gbk;//改变客户端数据表的编码类型。 子查询 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句 例如 SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2); 其中SELECT * FROM t1称为Outer Query/Outer Statement SELECT col2 FROM FROM t2,称为SubQuery 子查询指嵌套在查询内部,且必须始终出现在圆括号内。 子查询可以包含多个关键字或者条件。 如DISTINCT,GROUP BY,ORDER BY,LIMIT函数。 子查询的外层查询可以是:SELECT,INSERT,UPDATE,SET或DO 子查询返回值 子查询可以返回标量,一行,一列,或子查询。 使用比较运算符的子查询 使用比较运算符的子查询 = > < >= <= <> != <=> 语法结构operand comparison_operator subquery 插入 数据准备 链接:http://pan.baidu.com/s/1qXA5WKk 密码:m4b0 用ANY,SOME或者ALL修饰的比较运算符 使用IN 或者NOT IN的子查询 语法结构 operand comparison_operator [NOT] IN(subquery)

Mysql 索引

不羁的心 提交于 2019-12-26 05:17:07
Mysql 索引介绍   MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。   打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。 索引分单列索引和组合索引: 单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。 组合索引,即一个索包含多个列。 注:创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 注:实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。 注:索引提高数据查找速度使用B+树算法查找,与hash差不多,数据被加入索引后会转为一串数字进行排列,上亿数据可同过几次查找并取出。 注:一个表中的主键就是一种索引。 注:唯一索引,索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。 因此索引也会有它的缺点: 虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。 因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。 建立索引会占用磁盘空间的索引文件。 它有以下几种创建方式: # 查看表中的索引 mysql> show index from 表名\G *********************

Mysql基础

☆樱花仙子☆ 提交于 2019-12-26 04:52:19
Mysql基础 1.mysql介绍 mysql 的前身是一家瑞典的mysqlab公司,08年被sun公司收购,09年sun被oracle公司收购 mysql的优点: 1.开源、免费、成本低 2.性能高 3.移植性好 4.体积小,便于安装 mysql的语法规范: 1.不区分大小写,建议关键字大写 2.sql语句按条执行 3.注释: # --_ /* */ mysql的语言分类 DQL:数据查询语言 select(查) DML:数据操纵语言 insert(插入) update(更新) delete(删除) DDL:数据定易语言 create(增) drop(删) alter(改) DCL:数据控制语言 commit(提交) rollback(回退) 2.SQL常见命令 select version() 显示当前的数据库版本 show databases 显示当前的数据库 use 数据库名 切换数据库 show tables 显示当前库所有的表 show tables from 库名 跨库查看表 desc 表名 查看表的结构 3.常见函数 1.字符函数 concat(联结合并) substr(取字符串的子串) upper(上面) lower(下面) trim(函数移除字符串两侧的空白字符或其他预定义字符) ltrim(左移除) rtrim(右移除) lpad(左填充) rpad(右填充)

Mysql数据库表的类型有哪些

家住魔仙堡 提交于 2019-12-26 03:43:45
截至目前,MySQL一共向用户提供了包括DBD、HEAP、ISAM、MERGE、MyIASM、InnoDB以及Gemeni这7种Mysql表类型。其中DBD、InnoDB属于事务安全类表,而其他属于事务非安全类表。 DBD Berkeley DB(DBD)表是支持事务处理的表,由Sleepycat软件公司开发。它提供MySQL用户期待已久的功能--事务控制。事务控制在任何数据库系统中都是一个极有价值的功能,因为它们确保一组命令能成功地执行或回滚。 HEAP HEAP表是MySQL中存取数据最快的表。这是因为他们使用存储在动态内存中的一个散列索引,不过如果MySQL或服务器崩溃,这些内存数据将会丢失。 ISAM ISAM表是早期MySQL版本的缺省表类型,直到MyIASM开发出来。建议不要再使用它。 MERGE MERGE是一个有趣的新类型,在3.23.25之后出现。一个MERGE表实际上是又一个MyISAM表的集合,合并而成的一个表,主要是为了效率的考虑,因为这样不仅仅可以提高速度、搜索效率、修复效率而且还节省了磁盘空间。 MyIASM MyIASM基于了IASM代码,应该可以说是IASM的衍生品,不过增加了不少有用的扩展。它是MySQL的默认数据表类型,基于了传统的ISAM类型,ISAM是Indexed Sequential Access Method(有索引的顺序访问方法

mysql的数据类型int、bigint、smallint 和 tinyint取值范围

荒凉一梦 提交于 2019-12-26 03:09:32
附录:(更新于2013-11-21) sql必知必会学习笔记: http://www.cnblogs.com/IPrograming/category/509859.html mysql 基本命令学习: http://blog.db89.org/the-mysql-the-basic-command/ 一、 mysql的字符串函数 对于针对字符串位置的操作,第一个位置被标记为1。 1.ASCII(str) 返回字符串 str 的最左面字符的ASCII代码值。 如果 str 是空字符串,返回 0 。如果 str 是 NULL ,返回 NULL 。 mysql> select ASCII('2'); -> 50 mysql> select ASCII(2); -> 50 mysql> select ASCII('dx'); -> 100 也可参见ORD()函数。 2.ORD(str) 如果字符串str最左面字符是一个多字节字符,通过以格式 ((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...] 返回字符的ASCII代码值来返回多字节字符代码。如果最左面的字符不是一个多字节字符。返回与 ASCII() 函数返回的相同值。 mysql> select ORD('2'); ->