精华内容
下载资源
问答
  • 2009达内SQL学习笔记

    2010-02-10 19:46:58
    多数DBMS不需要在单条SQL语句分号,但特定的DBMS可能必须在单条SQL语句分号。 SQL语句的最后一句要以 “;”号结束 二、写子句顺序 Select column,group_function From table [Where condition] ...
  • SQL 基础--SELECT 查询

    2013-09-11 11:21:02
    --算术加减运算 SQL> SELECT EMPNO,ENAME,SAL + 300 FROM SCOTT.EMP; EMPNO ENAME SAL+300 ---------- ---------- ---------- 7369 SMITH 1100 7499 ALLEN 1900 7521 WARD 1550 --优先级 SQL> SELECT EMPNO,...
  • 工作年面试总结

    2019-03-22 22:45:35
    一.笔试题 1.基础的混合运算。(加减乘除,自增自减等混合运算) 2.xml文件的解析方式 (家...7.sql,用一条sql语句查询出每门课都大于80分的学生姓名。(三家遇到) 8.一道有意思的逻辑题:现在有无限量的水和...

    一.笔试题

    1.基础的混合运算。(加减乘除,自增自减等混合运算)

    2.xml文件的解析方式  (两家面试遇到) : sax 和 dom

    3.break和continue在for循环中,输出打印出来的值。

    4.运行异常类的选择题

    5.顺序表

    6.数据库连接池的原理

    7.sql,用一条sql语句查询出每门课都大于80分的学生姓名。(三家遇到)

    8.一道有意思的逻辑题:现在有无限量的水和2个空水壶,容积分别是5升和6升,如何通过只用这2个壶从水池里取到准确的3升水。

    9.创建数组的所有方式

    10.方法的重载

    11.两个对象的== 和 equals()比较(还有多种自己扩展)

    12.工厂模式和单例模式(单例每次面试都会被问到)

    13.redis的类型,持久化方式等。

     

     

    二.面试题

    1.springMVC的执行流程,中央处理器,filter的执行先后顺序(重点)

    2.spring的IOC,概念,原理,声明周期 BeanFactory,factoryBean,

    3.反射,springAop的代理,静态代理,动态代理,jdk动态代理,cglib动态代理,具体实现(我不会)

    4.多线程,同步synchronized,ReentrantLock,ThreadLocal,线程池,线程池重要的参数,参数中的线程数量根据什么来确定。

    5.springMvc是线程安全的吗,怎么实现线程安全。

    6.List集合,map集合,线程安全的,线程不安全的,底层原理,为啥线程不安全。

    7.介绍项目,里面的一些使用技术

    8.redis持久化方式,怎么保存几千万的热点数据等。

    9.jvm,gc这个每家面试都有,我不会。

    10.ArrayList和hashMap扩容

     

     

    最后,无论多难,坚持面完,会有意外的收获。

     

    展开全文
  • T-SQL高级查询

    2015-04-26 14:17:13
    上面括号中的语句,就是子查询语句(内部查询)。在外面的是外部查询,其中外部查询可以包含以下语句: 1、 包含常规选择列表组件的常规select查询 2、 包含一个或多个表或视图名称的常规from语句 3、 可选的...
  • 需要有两条sql语句的执行。第一条是张三账户500,第二条sql语句是李四的账户上500。但是这是理想情况下进行了,是在sql语句正常执行的情况下进行的。但是如果在执行完第一条sql语句中出现了异常,就会导致张三的...

    是什么是事务控制?为什么要进行事务控制

    事务控制是我们在mysql数据库中常用的一种方式。假设我们有一张账户表,张三给李四转500元。需要有两条sql语句的执行。第一条是张三账户减500,第二条sql语句是李四的账户上加500。但是这是理想情况下进行了,是在sql语句正常执行的情况下进行的。但是如果在执行完第一条sql语句中出现了异常,就会导致张三的账户的钱-500,而李四的账户没有+500。这时候就需要事务控制了。

    在这里插入图片描述
    SELECT * FROM account;
    UPDATE account SET balance = 1000;
    – 张三给李四转账 500 元

    	-- 0. 开启事务
    	START TRANSACTION; 
    	-- 1. 张三账户 -500
    	
    	UPDATE account SET balance = balance - 500 WHERE NAME = 'zhangsan';
    	-- 2. 李四账户 +500
    	-- 出错了...
    	UPDATE account SET balance = balance + 500 WHERE NAME = 'lisi';
    	
    	-- 发现执行没有问题,提交事务
    	COMMIT;
    	
    	-- 发现出问题了,回滚事务
    	ROLLBACK; 
    

    数据库中事务是默认提交的

    • 事务提交的两种方式:
      * 自动提交:
      * mysql就是自动提交的
      * 一条DML(增删改)语句会自动提交一次事务。
      * 手动提交:
      * Oracle 数据库默认是手动提交事务
      * 需要先开启事务,再提交
      * 修改事务的默认提交方式:
      * 查看事务的默认提交方式:SELECT @@autocommit; – 1 代表自动提交 0 代表手动提交
      * 修改默认提交方式: set @@autocommit = 0;

    事务控制的四大特征:

    1. 原子性:不可分割的最小单位,要么同时成功,要么同时失败
    2. 持久性:当执行完回滚和提交时,数据库会持久化的保存数据
    3. 隔离性:多个事务之间是相互独立的
    4. 一致性:事务操作前后,数据的总量是不变的
    展开全文
  • 任一条sql语句失败则事务整体失败,数据恢复到事务之前的状态。 下面以转账为例进一步说明。 A 账户向 B 账户转账,需要更新个账户的记录: - A 账户金额 update user set money=money-100 where id='A' - B ...

    数据库事务

    数据库事务由一组sql语句组成。

    所有sql语句执行成功则事务整体成功;任一条sql语句失败则事务整体失败,数据恢复到事务之前的状态。

    下面以转账为例进一步说明。

    A 账户向 B 账户转账,需要更新两个账户的记录:

    - A 账户减金额
    update user set money=money-100 where id='A'
    
    - B 账户加金额
    update user set money=money+100 where id='B'
    • 两条sql语句都成功则转账成功。
    • 任意一条sql语句失败,恢复以前的状态。

    数据操作的最小单元是事务,而不是一条sql语句!

    Mysql 事务操作

    开始事务

    start transaction;
    
    - 或
    begin;

    事务开始后,对数据的增删改操作不直接修改数据表,而是被记录在日志文件中。

    提交事务

    commit;

    将日志中记录的操作,永久保存到数据表,并清空日志文件。

    回滚事务

    rollback;

    直接清空日志文件

    Mysql 事务操作测试

    1.准备测试表

    CREATE TABLE USER (
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	username VARCHAR(128),
    	`password` CHAR(32)
    ) CHARSET=utf8;
    
    # 插入一条数据
    INSERT INTO `user`(username,`password`) VALUES('aaa', 'aaa');

    2. 测试

    打开两个终端,分别登录数据库。

    # 在终端登录 mysql
    mysql -uroot -p
    
    # 切换到你的数据库
    mysql> use 数据库名;

    测试一

    image.png

    测试二
    image.png

    事务特性 ACID

    A - 原子性 Atomic

    一个事务是一个不可分割的工作单元,事务中包括的操作要么都做,要么都不做。

    数据操作的最小单元是事务,而不是SQL语句 。

    C - 一致性 Consistency

    事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

    例如:

    • 转账前 a+b = 100
    • 转帐后 a+b = 100

    I - 隔离性 Isolation

    一个事务的执行不能被其他事务干扰。

    即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

    D - 持久性 Durancy

    一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

    数据库并发访问冲突问题

    脏读

    读取到其他事务未提交的数据。

    不可重复读

    • 重复读取同一数据时,与之前读取的数据不一致。
    • 一个事务提交的数据,可以被另一个事务立即读取。

    幻读

    • 读取到已经被删除的数据。
    • 读取不到新插入的数据。

    Mysql 的四种事务隔离级别

    事务之间为了避免互相干扰,执行时要进行隔离。也就是A执行时B要等待。但严格的隔离会造成性能的下降。

    数据库为了兼顾数据安全和性能,可以在一定程度上允许多个事务并行执行。

    Mysql 提供了四种隔离级别从低到高:

    • READ-UNCOMMITTED
    • READ-COMMITTED
    • REPEATABLE-READ
    • SERIALIZABLE

    隔离级别越高数据越安全;越低性能越好,但会造成数据访问的问题:

    image.png

    Mysql 设置隔离级别

    set tx_isolation='read-uncommitted';
    
    set tx_isolation='read-committed';
    
    # repeatable-read 是Mysql默认的隔离级别
    set tx_isolation='repeatable-read';
    
    set tx_isolation='serializable';

    oracle mysql 8 使用 transaction_isolation 系统变量:

    set transaction_isolation='read-uncommitted';
    
    set transaction_isolation='read-committed';
    
    # repeatable-read 是Mysql默认的隔离级别
    set transaction_isolation='repeatable-read';
    
    set transaction_isolation='serializable';

    注意:set设置的变量只对当前会话有效。需要进行全局设置使用 set global

    Mysql 隔离级别测试

    打开两个终端,分别登录数据库。

    # 在终端登录 mysql
    mysql -uroot -p
    
    # 切换到你的数据库
    mysql> use 数据库名;

    测试一

    image.png
    测试二
    image.png
    测试三
    image.png
    测试四
    image.png

    Q.E.D.

    展开全文
  • 数据库事务是由一组 SQL 语句组成的一个逻辑工作单元。您可以把事务看作是一组不可分的 SQL 语句,这些...这个简单的示例仅使用了两条 UPDATE 语句,但一个更实际的事务可能包含许多 INSERT、UPDATE和 DELETE 语句
  • 任一条sql语句失败则事务整体失败,数据恢复到事务之前的状态。下面以转账为例进一步说明。A 账户向 B 账户转账,需要更新个账户的记录:- A 账户金额update user set money=money-100 where id='A'- B 账户...

    分布式事务(一)Mysql本地事务和事务隔离级别

    数据库事务

    数据库事务由一组sql语句组成。

    所有sql语句执行成功则事务整体成功;任一条sql语句失败则事务整体失败,数据恢复到事务之前的状态。

    下面以转账为例进一步说明。

    A 账户向 B 账户转账,需要更新两个账户的记录:

    - A 账户减金额

    update user set money=money-100 where id='A'

    - B 账户加金额

    update user set money=money+100 where id='B'

    两条sql语句都成功则转账成功。

    任意一条sql语句失败,恢复以前的状态。

    数据操作的最小单元是事务,而不是一条sql语句!

    Mysql 事务操作

    开始事务

    start transaction;

    - 或

    begin;

    事务开始后,对数据的增删改操作不直接修改数据表,而是被记录在日志文件中。

    提交事务

    commit;

    将日志中记录的操作,永久保存到数据表,并清空日志文件。

    回滚事务

    rollback;

    直接清空日志文件

    Mysql 事务操作测试

    1.准备测试表

    CREATE TABLE USER (

    id INT PRIMARY KEY AUTO_INCREMENT,

    username VARCHAR(128),

    `password` CHAR(32)

    ) CHARSET=utf8;

    # 插入一条数据

    INSERT INTO `user`(username,`password`) VALUES('aaa', 'aaa');

    2. 测试

    打开两个终端,分别登录数据库。

    # 在终端登录 mysql

    mysql -uroot -p

    1234

    # 切换到你的数据库

    mysql> use 数据库名;

    测试一

    步骤

    终端A

    终端B

    1

    begin;

    begin;

    2

    insert into user(username) values('A');

    3

    update user set username='X' where id=1;

    4

    select * from user; B查询不到A未提交的数据

    5

    select * from user; A未提交的数据对于自己是可见的

    6

    commit;

    7

    select * from user; 即使A已经提交,B也查询不到A提交的数据

    8

    commit;

    9

    select * from user; B的事务结束后才能查询到A提交的数据

    测试二

    步骤

    终端A

    终端B

    1

    rollback; 为避免未结束的事务影响,先结束前面的事务

    rollback; 为避免未结束的事务影响,先结束前面的事务

    2

    begin;

    begin;

    3

    insert into user(username) values('B');

    4

    update user set username='Y' where id=1;

    5

    select * from user;

    6

    commit;

    7

    select * from user;

    8

    insert into user(username) values('C');

    9

    update user set username='Z' where id=1;

    10

    select * from user;

    11

    rollback; 回滚事务,B的数据修改全部丢弃,恢复到以前的状态。注意自增主键不会回滚

    12

    select * from user;

    事务特性 ACID

    A - 原子性 Atomic

    一个事务是一个不可分割的工作单元,事务中包括的操作要么都做,要么都不做。

    数据操作的最小单元是事务,而不是SQL语句 。

    C - 一致性 Consistency

    事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

    例如:

    转账前 a+b = 100

    转帐后 a+b = 100

    I - 隔离性 Isolation

    一个事务的执行不能被其他事务干扰。

    即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

    D - 持久性 Durancy

    一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

    数据库并发访问冲突问题

    脏读

    读取到其他事务未提交的数据。

    不可重复读

    重复读取同一数据时,与之前读取的数据不一致。

    一个事务提交的数据,可以被另一个事务立即读取。

    幻读

    读取到已经被删除的数据。

    读取不到新插入的数据。

    Mysql 的四种事务隔离级别

    事务之间为了避免互相干扰,执行时要进行隔离。也就是A执行时B要等待。但严格的隔离会造成性能的下降。

    数据库为了兼顾数据安全和性能,可以在一定程度上允许多个事务并行执行。

    Mysql 提供了四种隔离级别从低到高:

    READ-UNCOMMITTED

    READ-COMMITTED

    REPEATABLE-READ -----》 MySQL的默认隔离级别 --》可重复读

    SERIALIZABLE

    隔离级别越高数据越安全;越低性能越好,但会造成数据访问的问题:

    可能引发的问题

    READ-UNCOMMITTED

    READ-COMMITTED

    REPEATABLE-READ

    SERIALIZABLE

    幻读

    ×

    不可重复读

    ×

    ×

    脏读

    ×

    ×

    ×

    Mysql 设置隔离级别

    set tx_isolation='read-uncommitted';

    # read-committed 是Mysql默认的隔离级别

    set tx_isolation='read-committed';

    set tx_isolation='repeatable-read';

    set tx_isolation='serializable';

    oracle mysql 8 使用 transaction_isolation 系统变量:

    set transaction_isolation='read-uncommitted';

    # read-committed 是Mysql默认的隔离级别

    set transaction_isolation='read-committed';

    set transaction_isolation='repeatable-read';

    set transaction_isolation='serializable';

    注意:set设置的变量只对当前会话有效。需要进行全局设置使用 set global

    Mysql 隔离级别测试

    打开两个终端,分别登录数据库。

    # 在终端登录 mysql

    mysql -uroot -p

    # 切换到你的数据库

    mysql> use 数据库名;

    测试一

    步骤

    终端A

    终端B

    1

    set tx_isolation='read-uncommitted';

    set tx_isolation='read-uncommitted';

    2

    rollback;

    rollback;

    3

    begin;

    begin;

    4

    insert into user(username) values('D');

    5

    update user set username='R' where id=1;

    6

    select * from user; 可以读取A未提交的数据,这些数据在真实数据表中并不存在

    7

    rollback;

    8

    select * from user; A回滚后,B不能再重复读取这些数据

    测试二

    步骤

    终端A

    终端B

    1

    set tx_isolation='read-committed';

    set tx_isolation='read-committed';

    2

    rollback;

    rollback;

    3

    begin;

    begin;

    4

    ``

    select * from user;

    5

    insert into user(username) values('E');

    ``

    6

    update user set username='S' where id=1;

    ``

    7

    ``

    select * from user; 不能读取A未提交的数据

    8

    commit;

    ``

    9

    ``

    select * from user; A提交后,可以立即读取

    测试三

    步骤

    终端A

    终端B

    1

    set tx_isolation='repeatable-read';

    set tx_isolation='repeatable-read';

    1

    rollback;

    rollback;

    1

    begin;

    begin;

    1

    ``

    select * from user;

    1

    insert into user(username) values('F');

    ``

    1

    update user set username='T' where id=1;

    ``

    1

    commit;

    ``

    1

    ``

    select * from user; 即使A已经提交,这里也不能读取A已提交的数据。这里读取的结果要和前一次的结果一致

    1

    ``

    update user set password='111'; 可以修改A已提交的数据

    1

    ``

    select * from user; 修改后这些数据又变成可见的

    测试四

    步骤

    终端A

    终端B

    1

    rollback;

    rollback;

    1

    begin;

    begin;

    1

    ``

    select * from user;

    1

    delete from user where id<5;

    ``

    1

    commit;

    ``

    1

    ``

    select * from user; 仍然可以查询到已被A删除的数据

    1

    ``

    update user set password='222'; 但是不可能去修改这些已删除的数据

    1

    ``

    select * from user; 现在被删掉的数据还是可见的

    1

    ``

    commit;

    1

    ``

    select * from user; 事务结束后这些数据不再可见

    展开全文
  • 任一条sql语句失败则事务整体失败,数据恢复到事务之前的状态。下面以转账为例进一步说明。A 账户向 B 账户转账,需要更新个账户的记录:- A 账户金额update user set money=money-100 where id='A'- B 账户...
  • JDBC与MySql:事务

    2015-10-21 15:21:41
    什么是事务?  事务的概念: 事务是指逻辑上的一组操作,这组操作要么同时完成要么同时不完成. ...有一个很经典的银行转账...这两个操作分别是由两条sql语句完成的,那么假设在执行第一条sql语句之后数据库发生故障,
  • 例如:A——B转帐,对应于如下两条sql语句: /*转出账户钱*/ update account set money=money-100 where name=‘a’; /**转入账户钱*/ update account set money=money+100 where name=‘b’; 这两条语句的...
  • 20-JDBC-批量与事务

    2019-08-07 22:10:05
    就拿银行汇款为例,我要向另一个人汇款五万块,首先用一个sql语句实现将我的钱的五万,然后在用一个sql语句将另一个人的账户余额五万元,假如个不是一起实行的,或者说其中的一语句出错,就假如第二个出错了...
  • MySQL系列-事务及乐观锁悲观锁

    千次阅读 2018-07-01 00:40:26
    以下我们针对innoDB存储引擎进行分析,作为MySQL的默认存储...比如说简单的转账事务包含SQL语句,一条是给转账人钱,另一条是给被转账人钱,这俩条SQL要么都执行,要么读不执行,不允许中间因为停电或者出...
  • 比如说简单的转账事务包含SQL语句,一条是给转账人钱,另一条是给被转账人钱,这俩条SQL要么都执行,要么读不执行,不允许中间因为停电或者出现异常而只执行一条。出现这种情况会自动回滚 即都不执行。 2....
  •  通过表名、列名、某些列的值生成sql语句。  安全指针和防野指针类。防野指针类:在构造函数中将状态初始为已初始化,在析构函数中将状态设置为已释放。安全指针在使用时之前判断 防野指针类释放是“已初始化”...
  • 18.3 SQL语句 391 18.3.1 select语句 391 18.3.2 where语句 393 18.3.3 order by语句 395 18.3.4 insert into语句 397 18.3.5 delete语句 399 18.3.6 update语句 401 18.4 小结 403 18.5 习题 403
  • 1.POS日结由于pos_bill表单的出现两条BillId=0记录,导致日结后查不到Pos明细,而主单会有的错码,修改存储过程pcdDayAuditPayed,出错会回滚;但财务日是在主程序中处理,还是提示日结成功。 2.增加多一个帐单号格式...
  • 轻松学C#(图解版)

    热门讨论 2014-04-27 19:50:54
    11.2.2 使用多catch语句 205 11.2.3 嵌套try块 206 11.2.4 抛出异常 207 11.2.5 重新抛出异常 208 11.2.6 finally语句 210 11.3 自定义异常类 212 11.4 checked和unchecked关键字 214 11.4.1 checked 214 11.4.2 ...
  • -- 作 用:数据库执行语句,可执行查询添加修改删除等任何sql语句 -- 参 数:$sql sql语句(必填) -- 返回值:布尔 -- 实 例:无 *******************************************************************/ ...
  • 8.3.2 非分布式PL/SQL代码块中的COMMIT 249 8.4 完整性约束和事务 250 8.4.1 IMMEDIATE约束 251 8.4.2 DEFERRABLE约束和级联更新 251 8.5 不好的事务习惯 255 8.5.1 在循环中提交 255 8.5.2 使用自动提交 261...
  • 3.2.4 两条相交的单向链表,如何求他们的第一个公共节点? 3.2.5 求单向局部循环链表的环入口? 3.2.6 IP地址如何在数据库中存储? 3.2.7 new/delete和malloc/free的底层实现? 3.2.8 overload、override、overwrite...
  • 易语言模块914个

    2018-03-12 20:00:21
    RUN加减模块1.0+名.ec SAVEPIC.EC SetIEProxy.ec setuser.ec sev.ec SHELL32.EC ShutDown.ec SH_RAR.EC SIMIXP.EC simixp1.0.ec simixp1.01.ec simixp1.02.ec simixp3.0.ec simixp4.0.ec SMTP.EC ...
  • C++程序员面试宝典

    热门讨论 2013-04-01 13:36:19
    面试题64 break语句与continue语句有什么区别 64 5.3 switch语句 66 面试题65 switch语句的执行顺序是什么 66 面试题66 如何在switch语句内部定义变量 67 5.4 递归 68 面试题67 什么是递归 68 面试题68 汉诺塔问题 ...
  • RUN加减模块1.0+ 名.ec SAVEPIC.EC Sc千寻专用模块.ec SetIEProxy.ec setuser.ec sev.ec shell.ec SHELL32.EC ShutDown.ec ShutDown1.ec SH_RAR.EC SIMIXP.EC simixp1.0.ec simixp1.01.ec simixp1.02.ec simixp1.03....
  • 1350多个精品易语言模块提供下载

    热门讨论 2011-06-06 17:51:09
    RUN加减模块1.0+ 名.ec SAVEPIC.EC Sc千寻专用模块.ec SetIEProxy.ec setuser.ec sev.ec shell.ec SHELL32.EC ShutDown.ec ShutDown1.ec SH_RAR.EC SIMIXP.EC simixp1.0.ec simixp1.01.ec simixp1.02.ec simixp1.03....
  • 1345个易语言模块

    2012-01-27 19:41:59
    RUN加减模块1.0+ 名.ec SAVEPIC.EC Sc千寻专用模块.ec SetIEProxy.ec setuser.ec sev.ec shell.ec SHELL32.EC ShutDown.ec ShutDown1.ec SH_RAR.EC SIMIXP.EC simixp1.0.ec simixp1.01.ec simixp1.02.ec simixp1.03....
  • exist 存在, 发生 [ig'zist] '(SQL关键字 exists) extends (关键字) 继承、扩展 [ik'stend] false (关键字) final (关键字) finally (关键字) fragments 段落; 代码块 ['frægmәnt] FrameWork [java] 结构,...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    第一部分 笔试题(问题) 7 一、 java基础 7 ... 用JAVA写一个多线程程序,如写四个线程,二个1,二个对一个变量一,输出。 51 11. ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三...
  • 程序员面试宝典高清

    2012-03-16 16:28:17
    第16章 操作系统 257 16.1 进程 257 16.2 图形学 259 16.3 内存管理 261 16.4 DOS、Linux、UNIX 271 第17章 数据库与SQL语言 273 17.1 数据库理论 273 17.2 SQL语言 276 17.3 SQL语言客观题 279 17.4 SQL语言主观题...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

两条sql语句加减