精华内容
下载资源
问答
  • 每次更新前先从数据库里获取这个版本号的,然后更新时要同步更新版本号+1,并且增加更新条件版本号=查询出来的。 因为更新时每次只可能有一个线程更新到数据,等到另外一个线程再去更新数据的时候版本号已经+1...

    MYSQL多线程并发操作同一张表同一个字段的更新问题?

    可以用乐观锁方案:

    在表里增加个字段,版本号字段

    每次更新前先从数据库里获取这个版本号的值,然后更新时要同步更新版本号+1,并且增加更新条件版本号=查询出来的值。

    因为更新时每次只可能有一个线程更新到数据,等到另外一个线程再去更新数据的时候版本号已经+1了,所以会更新失败,重新获取版本号再走更新流程,这样就解决了多线程并发更新被覆盖的问题。

    而且乐观锁机制避免了长事务中的数据库加锁开销(多个线程操作过程中,都没有对数据库数据加锁),大大提升了大并发量下的系统整体性能表现。

    展开全文
  • 通常的做法,是通过“select max(id) from tablename”的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表以“X锁“,待获得max(id)的以后,再解锁。这种做法需要的步骤比较多,有些麻烦,而且并发...

    在MySQL中,使用auto_increment类型的id字段作为表的主键。通常的做法,是通过“select max(id) from tablename”的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表以“X锁“,待获得max(id)的值以后,再解锁。

    这种做法需要的步骤比较多,有些麻烦,而且并发性也不好。有没有更简单的做法呢?答案之一是通过select LAST_INSERT_ID()这个操作。乍一看,它和select max(id)很象,但实际上它是线程安全的。也就是说它是基于数据库连接的,基于数据库连接是什么意义呢?举例说明:

    (1)、在连接1中向A表插入一条记录,A表包含一个auto_increment类型的id。

    (2)、在连接2中向A表再插入一条记录。

    (3)、结果:在连接1中执行select LAST_INSERT_ID()得到的结果和连接2中执行select LAST_INSERT_ID()的结果是不同的;而在两个连接中执行select max(id)的结果是相同的。

    对于mysql表中主键设置我自动增长,当我们插入一条记录的时候,id会自动增长,而我们又想得到这个id ,用于另一张表的插入,我们怎样获取这个id呢?有的人通过max(id) 来获取,这样是不合理的,如果另外一个人恰巧在你执行select max(id)获取之前,插入一条记录,那么它的id就变了。而mysql又不存在锁表的功能,所以我们可以通过LAST_INSERT_ID 来获取。

    对于mybatis

    1

    2

    3 useGeneratedKeys="true" keyProperty="id">

    4 insert into vrv_application_list5 (6 appname,7 apptype,8 iconpath,9 filepath,10 filesize,11 pic112 )13 values14 (15 #{appname},16 #{apptype},17 #{iconpath},18 #{filepath},19 #{filesize},20 #{pic1}21 )22

    23 keyProperty="id">

    24 SELECT LAST_INSERT_ID()25

    通过上面的方式,我就把最新插入的一条id,绑定返回到我的实体Application上了,前提是你的Application实体里一定有id这个属性。不然会报错。

    当然如果你的parameterType=”java.util.Map” 的话,也是可以的,就不需要做什么多余的,会自动绑定到Map上 ,例如:

    1

    2

    3 useGeneratedKeys="true" keyProperty="id">

    4 insert into vrv_push_message_tab5 (6 type,7 title,8 message,9 create_id,10 create_time,11 force_open12 )13 values14 (15 #{type},16 #{title},17 #{message},18 #{create_id},19 now(),20 #{force_open}21 )22

    23 keyProperty="id">

    24 SELECT LAST_INSERT_ID()25

    26

    在java代码里只需要通过下面的方式获取就可以了

    1 int id = addMessage(map);

    展开全文
  • 什么叫做关系型数据库 关系数据库工作原理 事务 何为数据库事务 事务应用的场景举例 事务的特性ACID 原子性Atomic 一致性Consistent 隔离性Isolation 持久性Duration 事务的实现 并发控制 - 锁 ...增加一个字段

    这里主要说明一下本人对于数据库理论的理解,以及如何体现sql语句中。主要针对关系数据库。

    什么叫做关系型数据库?

    计算机中很多实现都是有在一定的数学模型基础上建立起来的。关系数据库也是如此。这个过程更像是这样的(如图1):
    图1:(关系数据库产生过程)

    这里写图片描述

    理解关系型 数据库,就在 将关系型数据库 放到 其整个产生过程中去理解。这里主要介绍现实世界,数学建模,以及关系模型到实现过度这3点内容。(三者的关系如图2.)

    图2:(现实世界 ,数学模型,数据库之间关系简要说明)
    这里写图片描述

    个体 && 环境

      当我们理解、刻画一个事物的时候,往往会将其放到一定的环境中。环境本质上是一种与待研究事物 相关联的 集合(其他事物,关系)。这是理解现实世界的一个基本的思想,有了这个思想,我们就需要通过数学的方式将其量化出来。假设,我们知道一个事物person1,那么我们应该如何去刻画这个事物呢?我们会刻画出person1 所属于的集合P ,然后还有刻画person 与其他事物之间的关系,符号化为(person1,thing)。这样子就数学化 说明了person 与周围事物之间的关系。

      建立数学模型之后,我们就可以进行相应的计算机处理了。我们需要我们搜集到的现实的信息,通过某种方式,存储下来。数据结构就是为了表示不同的关联关系,这里顺便说说数据结构能够带来的好处:

      因为计算机是有一套运作机制的(CPU,内存,输入,输出等),这些机制决定了计算机擅长什么,不擅长什么。所以我们必须将现实生活中的数据转化为计算机中的数据,同时也要方便计算机进行处理(适合计算机的特点,特长)。即数据的组织方式应该适应于计算机的操作,只有这样才能提升效率。举个简单的例子,在现实生活中,你有两个物品A,B。那么在计算机中可以进行哪些存储方案:

    【方案1:损失关系】只把A,B放入到存储中。这样子做会把关系(“A,B都属于我”)给损失掉。
    【方案2:保存关系】把A,B存储,同时把关系也进行存储。即,A,B, (A,B)
    【方案3:计算机特点利用】在A,B存储在相邻的物理位置,利用在存储中的位置信息(计算机中地址)来进行刻画关系 。(在方案2的基础上,有了更加的改进)
    

      上面的三种方案体现为三种不同的数据结构。方案3比方案2要快,因其利用了计算机的优势。

      关系数据库也可以看作是数据结构的一种表现形式,在这种结构中,能够更加方便人的操作(查询,插入),更加方便机器的运作。

      关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

    分类与模式

      为了更好的,统一的认识事物,我们将事物进行划分为类。类此处可以理解为符合某种共同特征的集合。

      现实中的分类如何刻画到数学中呢?(见文章:聚类是什么?【这里面有相应得说明】)

      分类体现了共性与个性。我们应该如何将这种现象刻画到计算机中呢?模式,实例。

    【模式】类,共性
    【实例】个体,个性
    

    关系模型

    关系数据库 是建立在关系模型的基础之上的。更多关于关系模型的信息见:(【百度百科】关系模型)

    综上所述,前面所说的内容主要是为了说明关系型数据库存在的意义,其合理性以及其模型基础。

    关系数据库工作原理

    参考:
    关系型数据库工作原理简述

    事务

    何为数据库事务?

    【逻辑工作单元:(结果角度)不可拆分】数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作要么完全地执行要么完全地不执行

    【作用】事务处理可以确保除非事务性单元内的所有操作都成功完成*,否则不会永久更新面向数据的资源*。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。

    事务特性】一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。

    注意:

    与 并发中的一些概念进行区分。(比如,原子性)

    事务应用的场景(举例)

    事务的特性(ACID)

    概述

    原子性(Atomic)

    事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位它所做的对数据改操作要全部执行,要么全部不执行。这种特性称为原子性。

    使用原子性的情况,是指一些指令之间关系十分密切,其中的约束条件要求他们必须一同改变,而原子中的封装保证了,这些语句从一定程度上维护这种约束条件。(举个简单的例子:在银行转账的例子中,A的付款 = B的收款 是本例中的约束条件,我们将其A付款与B收款封装为原子操作,是因为这两者在语义上是不可分割的)

    注意:

    原子性:非多线程】这里的原子性,并未涉及到多线程。可以理解为单个线程执行一系列动作(封装成了原子),原子性指的是这一系列动作,必须全部完成或者全部完成。在原子内部的某条指令处出现了故障,故障破坏了原子性,这时候再次开机的时候就需要数据库自动将数据库恢复,以保证原子性要求。(数据库不允许停在原子内部的某条指令

    一致性(Consistent)

    含义

    一致性,是指 数据处于一种有意义的状态,这种状态是语义上的而非语法上的。(举例:A向B转账,A的钱减少了,B的钱却没有增加,那么此处认为数据处于不一致的状态)

    语义的表示:不变性条件】还是上面转账的例子,如果将其表达为计算机可理解的形式,一致性就可以表达为一种约束条件A减少的值 = B增加的值无论何种场景下,都要符合这个条件。(此处的约束的条件,就是我们实现时考虑的需求,而这些需求则是我们程序需要实现的语义)

    隔离性(Isolation)

    指并发的事务是相互隔离的。

    多线程情况下的性质】隔离性 主要是 为了解决并发场景中的一些问题。

    隔离性 特点 与锁:

    数据库事务有不同的隔离级别不同的隔离级别对锁的使用是不同的锁的应用最终导致不同事务的隔离级别。按照数据库的理论,隔离级别可以被分为以下四种,从上向下依次增强:(下面说明来自知乎:原文地址)

    【读不提交,造成脏读(Read Uncommitted)】: 一个事务中的读操作可能读到另一个事务中未提交修改的数据,如果事务发生回滚就可能造成错误。

    例子1:A打100块给B,B看账户,这是两个操作,针对同一个数据库,两个事物,如果B读到了A事务中的100块,认为钱打过来了,但是A的事务最后回滚了,造成损失。

    例子2:游戏当中剩余挑战次数,读取次数是个事务中的操作,如果写同时并发,则可能导致两个事务同时修改数据,同时读到数据是1,但是当再次修改的时候就一个事务修改为0,另一个事务修改为1,就可能造成误判。避免这些事情的发生就需要我们在写操作的时候加锁,使读写分离,保证读数据的时候,数据不被修改,写数据的时候,数据不被读取。从而保证写的同时不能被另个事务写和读。

    【读提交(Read Committed)】我们加了写锁,就可以保证不出现脏读,也就是保证读的都是提交之后的数据,但是会造成不可重读,即读的时候不加锁,一个读的事务过程中,如果读取数据两次,在两次之间有写事务修改了数据,将会导致两次读取的结果不一致,从而导致逻辑错误

    【Repeatable Read(可重读)】:解决不可重复读问题, 一个事务中如果有多次读取操作,读取结果需要一致(指的是固定一条数据的一致,幻读指的是查询出的数量不一致)。 这就牵涉到事务中是否加读锁,并且读操作加锁后是否在事务commit之前持有锁的问题,如果不加读锁,必然出现不可重复读,如果加锁读完立即释放,不持有,那么就可能在其他事务中被修改,若其他事务已经执行完成,此时该事务中再次读取就会出现不可重复读,所以读锁在事务中持有可以保证不出现不可重复读写的时候必须加锁且持有,这是必须的了,不然就会出现脏读。Repeatable Read(可重读)也是MySql的默认事务隔离级别,上面的意思是读的时候需要加锁并且保持

    注意:【在事务执行期间一直持有读锁】 需要持有读锁一段时间。(“持有”)

    Serializable(可串行化) : 解决幻读问题, 在同一个事务中,同一个查询多次返回的结果不一致。事务A新增了一条记录,事务B在事务A提交前后各执行了一次查询操作,发现后一次比前一次多了一条记录。幻读是由于并发事务增加记录导致的,这个不能像不可重复读通过记录加锁解决,因为对于新增的记录根本无法加锁。需要将事务串行化,才能避免幻读。 这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

    持久性(Duration)

    事务的实现

    参考:
    数据库事务原子性、一致性是怎样实现的?
    数据库的事务隔离与锁机制的差别和联系
    【维基百科】数据库事务

    并发控制 - 锁

    乐观锁 & 悲观锁

    乐观锁 : 版本控制 + 版本验证

    悲观锁 : 互斥锁

    读锁 & 写锁

    读锁 : 加读锁后,其他线程(事务)可加读锁,但不可以加写锁。(其他线程只能读,不能写)

    写锁:相当于互斥锁,其他线程的读、写锁都不可添加。(其他线程不能访问(不能读写))

    数据库锁机制
    深入理解乐观锁与悲观锁
    【维基百科】乐观并发控制

    并发控制 - 锁的粒度

    表锁

    行锁

    细节操作

    选择

    limit使用

    1、查询第一行记录:
    select * from table limit 1

    2、查询第n行到第m行记录
    select * from table1 limit n-1,m-n;
    SELECT * FROM table LIMIT 5,10;返回第6行到第15行的记录
    select * from employee limit 3,1; // 返回第4行

    3、查询前n行记录
    select * from table1 limit 0,n;

    select * from table1 limit n;

    4、查询后n行记录

    select * from table1 order by id desc dlimit n;//倒序排序,取前n行 id为自增形式

    5、查询一条记录($id)的下一条记录

    select * from table1 where id>$id order by id asc dlimit 1

    6、查询一条记录($id)的上一条记录

    select * from table1 where id

    多表查询

    示例1

    SELECT app_category,topic_number, AVG(num_downloads) FROM
    ((SELECT app_category,docid,version_code,COUNT(*) as topic_number,num_downloads FROM topic_app GROUP BY app_category,docid,version_code) as t1)
    GROUP BY app_category,topic_number;

    常见错误

    【mysql】Every derived table must have its own alias

    多表查询(UNION)

    初步介绍MySQL中的集合操作
    MYSQL差集 交集 并集

    插入

    mysql忽略主键冲突、避免重复插入的几种方式

    插入多个值

    insert 插入多条语句

    增加一个字段

    alter table 表名 add column sex char (8); 如果要在哪个字段后面加可以:after 某字段

    查询优化

    where 语句

    在mysql中,where语句是自左向右执行的。当数据量很大(达到数百万级别时),需要考虑执行顺序。相关建议:

    • 有索引情况下,尽量和索引相结合,且索引尽量放前面。
    • 排除越多的条件放到第一个。

    on 语句

    与where语句相似。
    当其与 left join 相结合时,on语句的索引往往能够降低left join的复杂度。(on语句在where语句之前执行)
    相关文章:
    sql语句中JOIN ON 的使用

    展开全文
  • 不幸的是,虽然关系型数据库历经了约30年的发展,有成熟的理论和大量的实践基础,但是,大多数设计、开发人员在设计数据库结构时仍然是“跟着感觉走”,根据业务的需要和编程的方便,把字段这张表放几个那张表放几个...
  • 不幸的是,虽然关系型数据库历经了约30年的发展,有成熟的理论和大量的实践基础,但是,大多数设计、开发人员在设计数据库结构时仍然是“跟着感觉走”,根据业务的需要和编程的方便,把字段这张表放几个那张表放几个...
  • 在FastDB中,通过原子指令来实现对数据库并发访问的同步,对查询处理几乎不增加任何开销。FastDB假设整个数据库都在当前内存中,并且在这个假设的基础上优化查询算法和结构。另外,数据库缓存管理几乎不会给FastDB...
  • like ''a%'' 使用索引 like ''%a'' 不使用索引用 like ''%a%'' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。 9、DB Server 和APPLication Server ...
  • 最明显的就是类似于LAST_UPDATE_TIME了,通常为了保证这个字段的一致性,通常在插入新记录时采用当前数据库时间作为字段值。但IBatisNet接收的实体类对象属性都是普通C#类型,并不具备传入表达式的能力。如果采用...
  • 乐观锁、悲观锁

    2020-05-18 21:02:13
    乐观锁大多是基于数据版本记录机制,即数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库增加一个 “version” 字段来实现。读取数据后获取数据的版本号,更新数据时将此版本号加一。当...

    乐观锁

    • 假设认为数据一般情况下不会产生并发冲突,所以在数据进行提交更新的时候,才会对数据是否产生并发冲突进行检测,如果发现并发冲突了,则让返回用户错误的信息,让用户决定如何去做。
    • 乐观锁大多是基于数据版本记录机制,即数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “version” 字段来实现。读取数据后获取数据的版本号,更新数据时将此版本号加一。当我们提交更新的时候,判断当前版本信息与第一次取出来的版本值大小,如果数据库表当前版本号与第一次取出来的version值相等,则予以更新,否则认为是过期数据,拒绝更新,让用户重新操作。(总需要竞争锁,发生线程切换,效率不高)
    • ABA问题可以用乐观锁来避免
    • 乐观锁适用于多读的应用类型,这样可以提高吞吐量

    悲观锁

    • 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以在每次拿数据的时候都会上锁,这样别人想拿到这个数据就会阻塞直到它拿到锁。
    • 悲观锁大部分是依据数据库的锁机制来实现,以保证操作最大程度的独占性。但随之而来的是数据库性能的大量开销。
    • 并不总是能处理所有问题,所以会引入一定的系统复杂度。

    两种锁都有优缺点,我们并不能说一种好于另一种,而是在进行应用时根据不同场景进行选择。像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。

    展开全文
  • 乐观锁限额控制

    2017-07-06 14:48:11
    为了解决并发下的商户限额问题,由于...即为数据增加一个版本标识,一般是通过为数据库增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段一同读出,数据每更新一次,对此version加一
  • MySQL/InnoDB中锁的知识

    2018-07-31 11:50:06
    1乐观锁 前提是,不会发生并发抢占资源,...即为数据增加一个版本标识,一般是通过为数据库增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段一同读出,数据每更新一次,对此versi...
  • MVCC MVCC的全称是“多版本并发控制”。这项技术使得InnoDB的事务隔离级别下执行一致性读操作有了保证,换言之,就是为了...InnoDB会给数据库中的每一行增加三个字段,它们分别是DB_TRX_ID、DB_ROLL_PTR、DB_ROW_ID,
  • MySQL的MVCC

    2021-03-20 10:15:05
    多版本并发控制,主要是通过在每一行记录中增加三个字段,与 undo log 中相关记录配合使用,同时加上可见性算法,使得各个事务可以在不加锁的情况下能够同时地读取到某行记录上的准确(这个对不同的事务而言可能...
  • 多版本并发控制,在MySQL数据库中主要是通过在每一行记录中增加三个字段,与undo log 中相关记录配合使用,同时加上可见性算法,使得各个事务可以在不加锁的情况下能够同时地读取到某行记录上的准确(这个对不同...
  • 2.每当新增一条记录时,sort_num的增加1 , https://editor.csdn.net/md/?articleId=112839525 (为了防止高并发问题,参照此处进行排序增值) 3.列表向上移动的时候查询出当前数据的上一条数据的sort_num,两者...
  • 2021-01-21 17:36:36
    2.2.乐观锁:乐观锁会乐观的认为每次查询都不会造成更新丢失,利用版本字段控制,即数据库中新增加一列version,当有更新操作的时候就对该列的进行加一操作。。。 3.重入锁 1.什么是重入锁:可重入锁,也叫做递归锁...
  • 21天学会SQL

    2013-04-10 14:46:04
    轻轻松松学数据库!!SQL Server 2008是微软的SQL Server数据库中的最新版本,在该版本的数据库产品中融入了更多商业智能的内容。本书中也使用了一篇专门讲解了与商业智能有关的一些内容。 本书总分为5篇,共21章。第...
  • AppFramework_V1.0

    2007-12-13 21:20:07
    最明显的就是类似于LAST_UPDATE_TIME了,通常为了保证这个字段的一致性,通常在插入新记录时采用当前数据库时间作为字段值。但IBatisNet接收的实体类对象属性都是普通C#类型,并不具备传入表达式的能力。如果采用...
  • 2.2.6 “就地”赋值并修改数据库值 73 2.3 DELETE 75 2.3.1 删除行 75 2.3.2 截断表 76 2.4 高级数据修改技术 77 2.4.1 使用TOP分块修改数据 77 2.4.2 在一条语句中执行INSERT、UPDATE和DELETE 78 ...
  • AppFramework_V1.0_New

    2007-12-13 22:46:12
    最明显的就是类似于LAST_UPDATE_TIME了,通常为了保证这个字段的一致性,通常在插入新记录时采用当前数据库时间作为字段值。但IBatisNet接收的实体类对象属性都是普通C#类型,并不具备传入表达式的能力。如果采用...
  • 精通SQL--结构化查询语言详解

    千次下载 热门讨论 2011-12-11 16:35:41
    3.4.1 增加新列 50 3.4.2 删除列 51 3.4.3 修改列 53 3.5 表的删除与重命名 55 3.5.1 重命名表 55 3.5.2 删除表 56 3.6 创建、删除数据库 56 3.6.1 数据库的创建 56 3.6.2 sql server中数据库的创建 57 ...
  • 3.4.1 增加新列 3.4.2 删除列  3.4.3 修改列  3.5 表的删除与重命名  3.5.1 重命名表  3.5.2 删除表  3.6 创建、删除数据库  3.6.1 数据库的创建  3.6.2 SQL Server中数据库的创建 3.6.3 删除...
  •  删除环境变量中的PATHT CLASSPATH中包含Oracle的。  删除“开始”/“程序”中所有Oracle的组和图标。  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents ...
  •  注意:以上代码的执行目的不是检查数据库内是否有9条并发记录。  随机读取若干条记录,测试过 Access语法:SELECT top 10 * From 表名 ORDER BY Rnd(id) Sql server:select top n * from 表名 order by newid() ...
  • 探测器信息,能够添加位号,可自由选择探测器型号,气体种类,气体符号,高报,低报,缓冲,清零,是否启用,报警声音,背景地图,存储周期,数值换算小数点位数,报警延时时间,报警的类型(HH,LL,HL)等。...
  • PHP3程序设计

    2011-10-21 18:45:03
    15.1.1 创建并发数据库 228 15.1.2 程序及图解 228 15.2 解决方案:阻止多用户编辑 235 15.2.1 跟踪编辑会话 236 15.2.2 设计解决方案 236 15.3 总结 248 第16章 XML 249 16.1 为什么使用XML 249 16.1.1 混合结构和...
  • 检索“标识”或“自动编号”:提供一个特定示例,它将为 Microsoft SQL Server 表中的“标识”(Identity) 字段所生成的以及 Microsoft Access 表中的“自动编号”(Autonumber) 字段映射到表中插入行的列。...
  • 我看到很多人,包括一些DBA,凡涉及性能优化,必定谈及性能参数的修改,这实在是一个误区,他把性能参数的修改对数据库性能的正面影响人为地放大了很多倍,实际上恰恰相反,很多时候修改这些参数产生的却是副作用...
  • 网站计数器(源码ASP)

    2008-10-10 22:38:56
    4.如果忘记密码请打开数据库修改,把Password字段的对应修改为254a978baaa071ad,这样密码就变为www.qqcf.com 5.免费版请保留版权使用,作者不对其作品付任何责任,你可以任意传播。 6.未经作者许可请勿用于任何...
  • 2009达内SQL学习笔记

    2010-02-10 19:46:58
    保存在oracle数据库中的所有操作细节: spool oracleday01.txt :开始记录 spool off :开始保存细节 四、SELECT语句:选择操作、投影操作。 select:从一个或多个表中检索一个或多个数据列。包含信息:想选择...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

数据库字段值增加并发