mysql update语句

数据库并发处理 - 上的一把好"锁"

久未见 提交于 2020-01-11 00:37:17
为什么要有锁? 我们都是知道,数据库中锁的设计是解决多用户同时访问共享资源时的并发问题。在访问共享资源时,锁定义了用户访问的规则。根据加锁的范围,MySQL 中的锁可大致分成全局锁,表级锁和行锁三类。在本篇文章中,会依次介绍三种类型的锁。在阅读本篇文章后,应该掌握如下的内容: 为什么要在备份时使用全局锁? 为什么推荐使用 InnoDB 作为引擎进行备份? 设置全局只读的方法 表级锁的两种类型 MDL 导致数据库挂掉的问题 如何利用两段锁协议减少锁冲突 如何解决死锁 对于热点表,如何避免死锁检测的损耗? 全局锁 什么是全局锁? 全局锁会让整个库处于只读状态,其他线程语句(DML,DDL,更新事务类)的语句都被会阻塞。 使用全局锁的场景 在做全库逻辑备份时,会把整库进行 select 然后保存成文本。 为什么要使用全局锁? 想象这样一个场景,要备份一个购买系统,其中购买操作设计到更新账号余额表和用户课程表。 现在进行逻辑备份,在备份过程中,一位用户购买了一门课程,这时需要在余额表扣掉余额,然后在购买的课程中加上一门课。正确的顺序肯定是先进行购买操作,减少余额和增加课程然后在进行备份。但却有可能出现这样的问题: 如果在时间顺序上先备份余额表 (u_account),然后用户购买(操作两张表),再备份用户课程表(u_course)? 这时用备份的数据做恢复时,会发现用户没花钱却买了一堂课

大数据框架开发基础之Sqoop(1) 入门

我们两清 提交于 2020-01-11 00:15:12
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 Sqoop的基本认知 原理 将导入或导出命令翻译成mapreduce程序来实现。 在翻译出的mapreduce中主要是对inputformat和outputformat进行定制。 安装 Sqoop的安装也很简单,首先我们需要有有一个 Sqoop安装包 ,这个包老夫也提供了。 我们在如下目录中: drwxr-xr-x 2 corp corp 4096 Dec 19 2017 bin -rw-rw-r-- 1 corp corp 55089 Dec 19 2017 build.xml -rw-rw-r-- 1 corp corp 47426 Dec 19 2017 CHANGELOG.txt -rw-rw-r-- 1 corp corp 9880 Dec 19 2017 COMPILING.txt drwxr-xr-x 2 corp corp 4096 Dec 19 2017 conf drwxr-xr-x 5 corp corp 4096 Dec 19 2017 docs drwxr

MySQL笔记-DDL、DML、DQL

僤鯓⒐⒋嵵緔 提交于 2020-01-10 21:10:55
## DDL:操作数据库、表 1. 操作数据库:CRUD 1. C(Create):创建 * 创建数据库: * create database 数据库名称; * 创建数据库,判断不存在,再创建: * create database if not exists 数据库名称; * 创建数据库,并指定字符集 * create database 数据库名称 character set 字符集名; * 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk * create database if not exists db4 character set gbk; 2. R(Retrieve):查询 * 查询所有数据库的名称: * show databases; * 查询某个数据库的字符集:查询某个数据库的创建语句 * show create database 数据库名称; 3. U(Update):修改 * 修改数据库的字符集 * alter database 数据库名称 character set 字符集名称; 4. D(Delete):删除 * 删除数据库 * drop database 数据库名称; * 判断数据库存在,存在再删除 * drop database if exists 数据库名称; 5. 使用数据库 * 查询当前正在使用的数据库名称 * select

MySQL表空间迁移

偶尔善良 提交于 2020-01-10 21:00:52
文章目录 有cfg文件时表空间迁移 无cfg文件时表空间迁移 有cfg文件时表空间迁移 在源表上显示建表语句: mysql> use test mysql> show create table t1; +-------+---------------------------------------------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------------------------------------------+ | t1 | CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+---------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) 在目标表上创建一样的表: mysql> CREATE TABLE `t1` ( -> `a` int(11) DEFAULT

Qt中MySQL数据库的操作例程

丶灬走出姿态 提交于 2020-01-10 17:49:46
  数据库连接不成功时,要将libmysql.dll放到C:\Qt\Qt5.11.0\5.11.0\mingw53_32\bin和C:\Qt\Qt5.11.0\5.11.0\msvc2017_64\bin下面 .h文件 1 #ifndef MYWIDGET_H 2 #define MYWIDGET_H 3 4 #include <QWidget> 5 #include <QSqlDatabase> 6 #include <QDebug> 7 #include <QMessageBox> 8 #include <QSqlError> 9 #include <QSqlQuery> 10 #include <QVariantList> 11 12 namespace Ui { 13 class MyWidget; 14 } 15 16 class MyWidget : public QWidget 17 { 18 Q_OBJECT 19 20 public: 21 explicit MyWidget(QWidget *parent = 0); 22 ~MyWidget(); 23 24 private slots: 25 void on_sureButton_clicked(); 26 27 void on_cancelButton_clicked(); 28 29 void on

mysql事务

China☆狼群 提交于 2020-01-10 17:37:51
事务的概念 事务是一种机制,一个操作序列,包含了一组数据库操作命令,并且把所有命令作为一个整体一起想系统提交或撤销操作请求, 即这一组数据库命令要么都执行,要么都不执行,事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时, 事务是最小的控制单元,事务适用于用户同时操作数据库系统的场景,如银行,保险公司 以及证券交易系统等,通过事务的整体以保证数据的一致性,事务是保证了一组操作的平稳性和可预测性的技术。 事务的四大特性(ACID) 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 原子性(Atomicity )   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 一致性(Consistency)   一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。   拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。 隔离性(Isolation )   隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰

Linux 部署应用程序

99封情书 提交于 2020-01-10 07:44:17
安装 Java 解压缩并移动到指定目录 解压缩: tar -zxvf jdk-8u152-linux-x64.tar.gz 创建目录: mkdir -p /usr/local/java 移动安装包: mv jdk1.8.0_152/ /usr/local/java/ 设置所有者: chown -R root:root /usr/local/java/ 配置环境变量 配置系统环境变量: vi /etc/environment 修改系统环境变量 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" export JAVA_HOME=/usr/local/java/jdk1.8.0_152 export JRE_HOME=/usr/local/java/jdk1.8.0_152/jre export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 配置用户环境变量: vi /etc/profile 修改用户环境变量 if [ "$PS1" ]; then if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then # The file bash

Mysql杂记

╄→гoц情女王★ 提交于 2020-01-10 00:56:03
-- SELECT * FROM tb_dept t,time tt WHERE tt.id=3 ; 1、SELECT id FROM tb_dept WHERE id =3 UNION ALL SELECT id FROM time WHERE id=3; CREATE TABLE `employee_tbl` ( `id` int(11) NOT NULL, `name` char(10) NOT NULL DEFAULT '', `date` datetime NOT NULL, `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; --2、 插入多条数据 INSERT INTO alter_test(name,created,updated) VALUES('Tina',SYSDATE(),SYSDATE()),('Jame',SYSDATE(),SYSDATE()); SELECT * FROM employee_tbl; 3、-- 查询分组并统计总数用 with ROLLUP SELECT name, SUM(singin) as singin_count FROM employee_tbl

面试之mysql

萝らか妹 提交于 2020-01-10 00:15:41
1.数据库三范式是什么? a.第一范式:字段具有原子性、不可再分(所有关系型数据库都满足) b.第二范式:需满足第一范式,要求数据库表中的每个实例或行可以被唯一区分。 c.第三范式:需满足第二范式,要求一个数据库表,不包含已在其它表中包含的非主关键字信息 2.优化相关 a.用PreparedStatement,一般来说比Statement性能高 b.有外键约束会影响插入和删除性能,如果程序能保证数据完整性,设计数据库时就去掉外键 c.表种允许冗余. d.union all 要比 union快很多 ,所以不考虑重复数据和排序的话 使用union all 3.索引种类 a.普通索引:针对数据库表创建的索引 b.唯一索引:与普通索引类似,不同的是数据库索引列的值必须唯一, 允许空 c.主键索引:特殊的索引,不允许空,在建表时同时创建主键索引 d.组合索引:讲数据库表中的多个字段,联合起来 组成一个 组合索引. 4.索引的工作机制 a.数据库索引,是数据库管理系统中的 一个排序的数据结构,用于协助快速查询、更新数据库表中的数据。 索引的实现通常使用的是B树及其变种B+树。 5.myisam与 innodb的区别 a.事物:myisam特点是性能,每次查询具有原子性,其执行速度比innodb类型快,不支持事物。innodb提供事物支持,commit、rollback b.锁:innodb

PHP操作MySQL数据库的方法-执行SQL语句的函数

主宰稳场 提交于 2020-01-09 17:22:06
在我们日常PHP开发工作中,当我们要从数据库获取数据的时候, 在PHP连接数据库后,接下来就是我们要选择数据库,那么要对数据库的表进行操作,我们就要用到 SQL语句了! 直线电机品牌 在前面的两篇文章《PHP操作MySQL数据库的方法-如何选择数据库文件》,《PHP操作MySQL数据库的方法-使用mysql_connect()函数连接数据库》中介绍是如何连接数据库以及选择数据库 ,那么我么今天来介绍如何执行 SQL语句。 要对数据库中的表进行操作,我们通常使用 mysql_query()函数来执行 SQL语句。该函数的语法格式如下: 1 mysql_query(string query[,resource link_identifier]) mysql_query()函数是指令的专用函数,所有的SQL语句都通过它来执行,并且返回结果集。 注意: 在mysql_query函数中执行的 SQL 语句不应以分号“;”结束。 mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。 对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。 非 FALSE 的返回值意味着查询是合法的并能够被服务器执行