update

Innodb核心特性——事务

拟墨画扇 提交于 2020-02-16 18:18:49
Innodb核心特性——事务 一、什么是事务? 主要针对DML语句(update,delete,insert) 一组数据操作执行步骤,这些步骤被视为一个工作单元: 1)用于对多个语句进行分组 2)可以在多个客户机并发访问同一个表中的数据时使用 所有步骤都成功或都失败 1)如果所有步骤正常,则执行 2)如果步骤出现错误或不完整,则取消 二、事务通俗的理解 伴随着“交易”出现的数据库概念。 我们理解的“交易”是什么? 1)物与物的交换(古代) 2)货币现金与实物的交换(现代1) 3)虚拟货币与实物的交换(现代2) 4)虚拟货币与虚拟实物交换(现代3) 数据库中的“交易”是什么? 1)事务又是如何保证“交易”的“和谐”? 2)ACID # 10.0.0.51的第一个窗口 # 1.创建一个转账表 mysql> use test mysql> create table jiaoyi; mysql> insert into jiaoyi values('msy',1000), mysql> select * from jiaoyi; +------+-------+ | name | money | +------+-------+ | msy | 1000 | | hjm | 1000 | +------+-------+ # 2.开始事务 mysql> begin; # 3.更改数据

MongoDB增删查改

别说谁变了你拦得住时间么 提交于 2020-02-16 07:58:47
MongoDB自带了一个JavaScript Shell,所以在其中使用js语法是可以的。 Insert操作: 单条插入 var single={"name":"mei","age":22} db.user.insert(single); 循环插入 var single={"name":"tinyphp","num":28,} for(var i=0;i<5;i++){single.num=i;db.user.insert(single);} Find查询操作: db.集合名.find(query,fields,limit,skip) query,指明查询条件,相当于SQL中的where语句 例子:db.student.find({"name":"joe","age":{$lt:22}}) fields用于字段映射,语法格式:{field:0}或{field:1} 例子:db.student.find({"age":{$lt:22},{"_id":0,"name":1}}) 表示查询结果包含name字段,不包含_id字段 limit限制查询结果集的文档数量,指定查询返回结果数量的上限 例子:db.student.find({"name":"joe"},{"name":1,"age":1},5) skip跳过一定数量的结果,设置第一条返回文档的偏移量 例子:db.student

MySQL 中的事务

浪尽此生 提交于 2020-02-16 04:32:22
事务的应用场景说明 什么是事务: 在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的。转 账是一个用户扣钱,另一个用户加钱。如果其中有一条 SQL 语句出现异常,这条 SQL 就可能执行失败。 事务执行是一个整体,所有的 SQL 语句都必须执行成功。如果其中有 1 条 SQL 语句出现异常,则所有的 SQL 语句都要回滚,整个业务执行失败。 案例说明 转账的操作 -- 创建数据表 CREATE TABLE account ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10), balance DOUBLE ); -- 添加数据 INSERT INTO account (NAME, balance) VALUES ('LeeHua', 1000), ('Tom', 1000); 模拟LeeHua给Tom转 500 元钱,一个转账的业务操作最少要执行下面的 2 条语句: -- LeeHua账号-500 UPDATE account SET balance = balance - 500 WHERE name='LeeHua'; -- Tom账号+500 UPDATE account SET balance = balance + 500 WHERE name='Tom'; 假设当LeeHua账号上 -500

跨表更新,Mysql Update Join

℡╲_俬逩灬. 提交于 2020-02-15 11:16:56
背景 项目新导入了一批人员数据,这些人的有的部门名称发生了变化,有的联系方式发生了变化,暂且称该表为t_dept_members, 系统中有另外一张表 t_user_info 记录了人员信息。 要求将 t_dept_members 中有变化的信息更新到 t_user 表中,这个需求就是「跨表更新」啦 不带脑子出门的就写出了下面的 SQL 看到身后 DBA 在修仙,想着让他帮润色一下,于是发给了他,然后甩手回来就是这个样子: 看到这个 SQL 语句我都惊呆了,还能这样写,咱得查查这是咋回事啊 Mysql Update Join 我们经常使用 join 查询表中具有(在 INNER JOIN 情况下)或可能没有(在 LEFT JOIN 情况下)另一个表中匹配行的表中的行。 同样,在 MySQL 中, 我们也可以在 UPDATE 语句中使用 JOIN 子句执行跨表更新,语法就是这样: UPDATE T1, T2, [INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1 SET T1.C2 = T2.C2, T2.C3 = expr WHERE condition 我们还是详细的说明一下上面的语法: 首先,在 UPDATE 子句之后,指定主表(T1)和希望主表联接到的表(T2)。请注意,必须在UPDATE 子句之后至少指定一个表 接下来

[置顶] Oracle数据操作和控制语言详解

故事扮演 提交于 2020-02-14 22:56:41
SQL 语言共分为四大类:数据查询语言 DQL ,数据操纵语言 DML , 数据定义语言 DDL ,数据控制语言 DCL 。其中用于定义数据的结构,比如 创建、修改或者删除数据库; DCL 用于定义数据库用户的权限;在这篇文章中我将详细讲述这两种语言在 Oracle 中的使用方法。 DML 语言 DML 是 SQL 的一个子集,主要用于修改数据,下表列出了 ORACLE 支持的 DML 语句。 语句 用途 INSERT 向表中添加行 UPDATE 更新存储在表中的数据 DELETE 删除行 SELECT FOR UPDATE 禁止其他用户访问 DML 语句正在处理的行。 LOCK TABLE 禁止其他用户在表中使用 DML 语句 插入数据 INSERT 语句常常用于向表中插入行,行中可以有特殊数据字段,或者可以用子查询从已存在的数据中建立新行。 列目录是可选的,缺省的列的目录是所有的列名,包括 comlumn_id,comlumn_id 可以在数据字典视图 ALL_TAB_COLUMNS,USER_TAB_COLUMNS, 或者 DBA_TAB_COLUMNS 中找到。 插入行的数据的数量和数据类型必须和列的数量和数据类型相匹配。不符合列定义的数据类型将对插入值实行隐式数据转换。 NULL 字符串将一个 NULL 值插入适当的列中。关键字 NULL 常常用于表示将某列定义为

HDU3974 Assign the task

北慕城南 提交于 2020-02-14 21:55:43
DFS遍历树,把时间轴投到线段树上,单点查询~ #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<string> using namespace std; const int maxn=1e6+14; struct edge { int to; int next; }Edge[maxn]; int head[maxn]; int tot; int cnt; int st[maxn]; int ed[maxn]; void init () { cnt=0; tot=0; memset(head,-1,sizeof(head)); } void addedge (int u,int v) { Edge[tot].to=v; Edge[tot].next=head[u]; head[u]=tot++; } void dfs (int u) { ++cnt; st[u]=cnt; for (int i=head[u];i!=-1;i=Edge[i].next) dfs (Edge[i].to); ed[u]=cnt; } struct node { int l; int r; int val; int lazy; }segTree[maxn*4]; void update

ABAP数据表的操作

故事扮演 提交于 2020-02-14 02:00:28
ABAP数据表的操作 这几天对于数据标的操作表较多,自己从网上找资料和自己动手操作总结了一些数据表的增删改查操作,希望对一些初学者有所帮助,仅供参考。 开源的数据库操作都离不开INSERT、UPDATE、MODIFY和DELETE语句。其中当SY-DBCNT返回为0,则表示操作成功,此外还将返回实际操作的数据行数。需要指明的是Open SQL本身并不进行操作权限的检查,若需要进行设定,则要在系统中创建授权对象。 一.INSERT语句 Open SQL中的INSERT语句用于向数据库中插入新条目。 1.插入单行数据:dbtab是内表,wa是工作区。 INSERT INTO dbtab VALUES wa. INSERT INTO dbtab FROM wa. 内表:Internal memory table 内存中的表,是外设(屏幕、磁盘,打印机等)和数据库表数据交换的中介。 wa为工作区,是与数据库具有相同结构的数据对象,一般直接基于数据库结构声明。该语句也可以将数据插入视图中,首先该视图所有字段必须来自同一个数据库表,而且在数据字典中的maintenance status属性必须设定为read and change 注:如果相同表关键字的数据条目已经存在,则不能重新插入,只能对非关键字进行更改(UPDATE,MODIFY) 2.插入多行数据:datab是内表,itab是表

BZOJ 2770: YY的Treap

六眼飞鱼酱① 提交于 2020-02-14 01:56:02
平衡树中序遍历之后是个递增序列,那么 LCA 的 key 肯定加在两个节点的 key 之间 而 priority 是最小的,否则可以往上走 所以就是区间查询最值,动态开点即可 输入会有负数。。 常数较大。。 因为它的log是int大小的log。。 #include <bits/stdc++.h> const int N = 1e5 + 7; const int INF = 0x3f3f3f3f; struct Node { int pri, key; Node(int _ = INF, int __ = 0): pri(_), key(__) {} bool operator < (const Node &p) const { return pri < p.pri; } }; struct Seg { #define lp ch[p][0] #define rp ch[p][1] #define mid ((l + r) >> 1) Node tree[N * 20]; int ch[N * 20][2]; int tol; void pushup(int p) { tree[p] = std::min(tree[lp], tree[rp]); //printf("%d %d %d\n", tree[lp].pri, tree[rp].pri, tree[p].pri); }

PL/SQL轻量版(四)——存储函数/存储过程与触发器

眉间皱痕 提交于 2020-02-11 11:56:34
概述   ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它。这样就叫存储过程或函数。过程和函数统称为 PL/SQL 子程序,他们是被命名的 PL/SQL 块,均存储在数据库中,并通过输入、输出参数或输入/输出参数与其调用者交换信息。 过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据。 一、存储函数    1.创建函数        内嵌函数 CREATE [OR REPLACE] FUNCTION function_name [ (argment [ { IN | IN OUT }] Type, argment [ { IN | OUT | IN OUT } ] Type ] [ AUTHID DEFINER | CURRENT_USER ] RETURN return_type { IS | AS } <类型.变量的说明> BEGIN FUNCTION_body EXCEPTION 其它语句 END; 说明: 1) OR REPLACE 为可选. 有了它, 可以或者创建一个新函数或者替换相同名字的函数, 而不会出现冲突 2) 函数名后面是一个可选的参数列表, 其中包含 IN, OUT 或 IN OUT 标记. 参数之间用逗号隔开. IN 参数 标记表示传递给函数的值在该函数执行中不改变; OUT