首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库工程师常见面试题

答: 事务从 COMMIT、 ROLLBACK、连接到数据库或开始第一条可执行的 SQL 语句时开始,到一条 COMMIT、 ROLLBACK 语句或退出数据库时结束。...该命令的语法是: SAVEPOINT 存储点名,如果在 ROLLBACK 语句中没有给 出存储点名,则整个事务被回退。 问题 9: 如何设置网络数据包的大小?...答: 在触发器中不能使用 COMMIT 等事务控制语句。因为触发器是事务触发的如果有事务控制语句 就会影响到触发它的事务。即连带触发它的语句之前的已经完成的没有提交的语句都要受到影响。...问题 22: 自定义函数支持输出参数吗? 答: 自定义函数可以接受零个或多个输入参数,其返回值可以是一个数值,也可以是一个表,但是自 定义函数不支持输出参数。...如果需求发生变化, 而触发器没有进行相应的改变或者删除,则触发器仍然会执行旧的语句,从而会影响新的数据的完整性。 因此,要将不再使用的触发器及时删除。 问题 24: 什么是唯一索引?

3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL SERVER事务处理

    在存储过程中,ROLLBACK TRANSACTION 语句使 @@TRANCOUNT 在触发器完成时的值不同于调用该存储过程时的@@TRANCOUNT 值,并且生成一个信息。...该信息不影响后面的处理。 如果在触发器中发出 ROLLBACK TRANSACTION:将回滚对当前事务中的那一点所做的所有数据修改,包括触发器所做的修改。...在存储过程中,ROLLBACK TRANSACTION 语句不影响调用该过程的批处理中的后续语句; 将执行批处理中的后续语句。...ROLLBACK 对游标的影响由下面三个规则定义: 当 CURSOR_CLOSE_ON_COMMIT 设置为 ON 时,ROLLBACK 关闭但不释放所有打开的游标。...Insert into demo2(name,age) values('lis',2) rollback transaction t1 Note: 在一系列嵌套的事务中用一个事务名给多个事务命名对该事务没有什么影响

    1.8K20

    使用嵌入式SQL(五)

    带有显式值的INSERT命令只能影响一行,因此将%ROWCOUNT设置为0或1。INSERT查询结果,UPDATE或DELETE可以影响多行,因此可以将%ROWCOUNT设置为0或正数。整数。...输出主机变量包含字段值。 如果SQLCODE = 100,则查询成功完成,但是输出主机变量值可能不同。...任何一个:查询返回一个或多个数据行(SQLCODE = 0),然后到达数据的末尾(SQLCODE = 100),在这种情况下,输出主机变量设置为返回的最后一行的字段值。 %ROWCOUNT> 0。...如果表中没有数据或没有数据与查询条件匹配,查询将根据需要将输出主机变量设置为0或空字符串。如果SQLCODE为负数,则查询失败,并显示错误条件。...其他START TRANSACTION语句对$TLEVEL无效。每个SAVEPOINT语句将$TLEVEL加1。 ROLLBACK TO SAVEPOINT点名语句减少$TLEVEL。

    2.7K20

    python中MySQLdb模块用法实例

    : host:数据库主机名.默认是用本地主机 user:数据库登陆名.默认是当前用户 passwd:数据库登陆的秘密.默认为空 db:要使用的数据库名.没有默认值 port:MySQL服务使用的TCP端口...cursor用来执行命令的方法 //用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数 callproc(self, procname, args) //执行单条sql语句,接收的参数为...sql语句本身和使用的参数列表,返回值为受影响的行数 execute(self, query, args) //执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数executemany...一致性与原子性是密切相关的。 ③ 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。...持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

    72010

    SQL命令 CREATE TRIGGER(二)

    被触发的操作是原子的,它要么完全应用,要么根本不应用,并且不能包含COMMIT或ROLLBACK语句。 关键字BEGIN ATOMIC与关键字BEGIN是同义词。...引用流属性 在触发器定义(如{StreamField}、{StreamField*O}或{StreamField*N})中引用流字段/属性时,{StreamField}引用的值是流的OID(对象ID)值...对于BEFORE INSERT或BEFORE UPDATE触发器,如果INSERT/UPDATE/ObjectSave指定了新值,则{StreamField*N}值将是临时流对象的OID或新的文字流值。...对于BEFORE UPDATE触发器,如果没有为流字段/属性指定新值,则{StreamField*O}和{StreamField*N}都将是当前字段/属性流对象的OID。...编译到类例程中的任何其他代码都不能定义相同的标签,包括在其他触发器、非过程块方法、SqlComputeCode和其他代码中。 注意:对标签使用冒号前缀要优先于对主机变量引用使用冒号前缀。

    1.6K20

    MySQL中DML语句和事务的概念「建议收藏」

    自动提交打开或者关闭对这些事务没有影响 对于DML事务,在自动提交关闭的情况下,事务的开始分为隐式开始和显式开始: 隐式开始:程序的第一条DML语句执行时或者在COMMIT或ROLLBACK语句之后执行第一条...该语句会自动关闭自动提交,当事务结束后,autocommit变量恢复到原来的值 4.DML事务的结束 COMMIT语句:成功提交。...事务所做的全部工作被撤销,表中的数据不受事务操作的影响 其它事务控制语句 SAVEPOINT identifier :保存点命令,用来在事务中做一个标记,专门提供给rollback to语句使用...或 ROLLBACK 语句之前数据的状态 数据的修改都是在内存中进行的 通过查询表,当前用户(事务)能够查看DML操作的结果 其它用户(事务)不能查看当前用户(事务)所做的DML操作的结果。...已修改但未提交的数据叫做赃数据 表中受影响的行被锁定,其它用户(事务)不能在受影响的行上修改数据 7.COMMIT或ROLLBACK语句之后数据的状态 COMMIT之后: 数据改变被写到数据库中

    2K20

    【MySQL】存储过程

    文章目录 为什么使用存储过程 书写基本格式 关于参数 存储过程中开启事务 返回多个结果集 设置变量 存储过程:一段SQL语句的集合 为什么使用存储过程 1、解耦合。...数据库部分可交由专门的数据库管理人员去做,像前后端联合协作那样提供接口供后端调度。(这两天对后端开发又有了新的理解:作为前端和数据库之间数据转接的中间人。...我们每个SQL语句执行都需要经过编译,然后再运行。但是存储过程只需要一次编译,多次运行。 4、提高系统安全性。存储过程可以使用权限控制,而且参数化的存储过程可以有效防止注入攻击,保证了其安全性。...调用的时候就: call login(参数) 关于参数 IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量) OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)...但是目前我还没有找到C++接收其他结果集的方法。 分支循环啥的我也没有用过,所以也就不写在里面啦。后面整批量插入的时候应该要用到,用到再补吧。

    7.9K30

    Oracle数据库相关经典面试题

    答∶ ORACLE事务在执行第一条可执行的SQL语句时开始,到一条COMMIT、ROLLBACK语句或退出数据库时事务结束。 利用ROLLBACK语句可以在COMMIT命令前随时撤消或回退一个事务。...该命令的语法是:SAVEPOINT 存储点名如果在ROLLBACK语句中没有给出存储点名,则整个事务被回。...答∶ 在触发器中不能使用COMMIT;等事务控制语句。因为触发器是事务触发的如果有事务控制语句就会影响到触发它的事务。即连带触发它的语句之前的已经完成的没有提交的语句都要受到影响。...这是会影响到数据的一致性的。 解释函数,存储过程,包 答∶ 都是命名块,函数与过程是pl/sql代码的集合,通常是为了完成一个业务,过程可以不返回任何值,但函数必须有返回值。...通常事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。

    2.2K20

    SqlSessionFactoryBuilder、SqlSessionFactory 和 SqlSession

    (通常意味着很多数据库和/或 JDBC 驱动没有事务) 连接:我需要依赖 MyBatis 获得来自数据源的配置吗?还是使用自己提供的配置?...执行语句:我需要 MyBatis 复用预处理语句和/或批量更新语句(包括插入和删除)吗? 基于以上需求,有下列已重载的多个 openSession() 方法供使用。...List flushStatements(); 事务控制方法 控制事务作用域有四个方法。当然,如果你已经设置了自动提交或你正在使用外部事务管理器,这就没有任何效果了。...值对 session 无效)。...对返回的对象(例如 list)做出任何更新将会影响本地缓存的内容,进而影响存活在 session 生命周期中的缓存所返回的值。因此,不要对 MyBatis 所返回的对象作出更改,以防后患。

    47010

    SQL命令 SAVEPOINT

    在长期运行的事务或具有内部控制结构的事务中,通常希望能够回滚事务的一部分,而不撤消在事务期间提交的所有工作。 保存点的建立会递增$TLEVEL事务级别计数器。...保存点名称可以是分隔的标识符。 如果指定的保存点没有点名,或者指定的点名不是有效的标识符或SQL保留字,则会发出运行时SQLCODE-301错误。...在事务内发出第二个START TRANSACTION对保存点或$TLEVEL事务级别计数器没有影响。 如果事务操作未能成功完成,则会发出SQLCODE-400错误。...ObjectScript和InterSystems SQL都提供了对嵌套事务的有限支持。 ObjectScript事务处理不与SQL锁控制变量交互; 特别需要关注的是SQL锁升级变量。...使用TSTART/TCOMMIT嵌套的方法可以包含在事务中,只要它们不初始化事务。 方法和存储过程通常不应该使用SQL事务控制语句,除非按照设计,它们是事务的主控制器。

    60920

    SQL命令 START TRANSACTION

    当事务正在进行时发出START TRANSACTION对$TLEVEL或%INTRANSACTION没有影响。 SQL不支持嵌套事务。...如果数据库修改操作失败,则发出ROLLBACK语句将数据库恢复到事务开始之前的位置。 在EXPLICIT模式下,多个数据库修改操作可以组成一个事务。 NONE:没有自动事务处理。...由于COMMIT或ROLLBACK仅对数据更改有意义,而对数据查询没有意义,因此COMMIT或ROLLBACK操作对ISOLATION LEVEL设置没有影响。...方法和存储过程通常不应该使用SQL事务控制语句,除非按照设计,它们是事务的主控制器。...存储过程通常不应该使用SQL事务控制语句,因为这些存储过程通常是从ODBC/JDBC调用的,ODBC/JDBC有自己的事务控制模型。

    1.4K30

    面试官:你说对MySQL事务很熟?那我问你10个问题

    学习关系型数据库MySQL是很好的切入点,大部分人学习和工作中用惯了CRUD,对面试官刨根问底的灵魂拷问你还能对答如流吗?我们有必要了解一些更深层次的数据库基础原理。...如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。 事务控制语法知道吗?...在前面的例子中,一致性确保了,即使在执行第三、四条语句之间时系统崩溃,CMBC账户中也不会损失100万,不然lemon要哭死,因为事务最终没有提交,所以事务中所做的修改也不会保存到数据库中。...对于MyISAM或者内存表这些事务型的表,修改AUTOCOMMIT不会有任何影响。对这类表来说,没有COMMIT或者ROLLBACK的概念,也可以说是相当于一直处于AUTOCOMMIT启用的模式。...这种方式可以极大的提升写入性能,但是在数据库或者主机崩溃时会造成「索引损坏」,需要执行修复操作。

    85620

    技术分享 | 如何计算 MySQL 的 QPSTPS

    中文的意思是,Queries 计数表示服务器执行的语句数。与 Questions 计数不同,此变量包括了存储过程中执行的语句。它不计数COM_PING或COM_STATISTICS命令。...而我们这边由于几乎没有业务使用到存储过程和预准备语句,所以用哪一种方式都一样。 有趣的现象是,官方用的是第二种方法"Queries-per-second"。纳尼?不是说官方文档没定义和说明吗?...中文意思是,这个 Com_xxx 语句计数器变量指示每个变量的次数。xxx 语句已执行。每种类型的语句都有一个状态变量。...方法二: 计算 commit、rollback 总和 是事务就需要有 begin 和 commit/rollback 语句,对吧。...所以计算 commit、rollback 的总和,即计算com_commit+com_rollback ,也可以计算出 TPS,对吧? 错错错!

    2.7K30

    db2 terminate作用_db2 truncate table immediate

    日志文件路径被复位为缺省值。01564 已为主机变量指定了空值,因为发生了被零除的错误。01586 该语句导致一个或多个表自动置于设置完整性暂挂状态。01589 语句包含有冗余规范。...类代码 07:动态 SQL 错误 SQLSTATE 值 含义07001 对于参数标记的数目来说,主机变量的数目不正确。07002 调用参数列表或控制块无效。...22002 检测到空值或缺少指示符参数;例如,不能将空值赋给主机变量,因为没有指定指示符变量。22003 数值超出范围。...42617 语句字符串是空白或空的。42618 不允许主机变量。42620 对 UPDATE 子句指定了只读 SCROLL。42621 检查约束无效。42622 名称或标号太长。...此游标的 LOB 值的所有访存的目标主机变量必须是定位器或 LOB 变量。 42858 不能将该操作应用于指定对象。 42863 检测到 REXX 中有未定义的主机变量。

    7.7K20

    如何计算数据库的TPS和QPS

    中文的意思是,Queries 计数表示服务器执行的语句数。与 Questions 计数不同,此变量包括了存储过程中执行的语句。它不计数COM_PING或COM_STATISTICS命令。...而我们这边由于几乎没有业务使用到存储过程和预准备语句,所以用哪一种方式都一样。 有趣的现象是,官方用的是第二种方法"Queries-per-second"。纳尼?不是说官方文档没定义和说明吗?...中文意思是,这个 Com_xxx 语句计数器变量指示每个变量的次数。xxx 语句已执行。每种类型的语句都有一个状态变量。...方法二: 计算 commit、rollback 总和 是事务就需要有 begin 和 commit/rollback 语句,对吧。...所以计算 commit、rollback 的总和,即计算com_commit+com_rollback ,也可以计算出 TPS,对吧? 错错错!

    2.1K111

    MySQL TCL 事务控制

    所以,使用事务处理的时候一定要确定所操作的表示是否支持事务处理,可以通过查看建表语句来查看有没有指定事务类型的存储引擎。当然,事务处理是为了保障表数据原子性、一致性、隔离性、持久性。...READ COMMITTED; 也可以直接使用 SET 语句为变更系统变量 transaction_isolation 的值修改当前 session 的事务隔离级别。...系统变量 @@autocommit 用来控制一条SQL语句提交后是否自动执行,默认值是1,表示在mysql命令行模式下每条增删改语句在键入回车后,都会立即生效,而不需要手动commit。...事务回滚: ROLLBACK; 回滚后我们查看数据表中的数据。 SELECT * FROM transaction_test; Empty set (0.00 sec) 表中没有数据,回滚成功。...事务保存点可以在事务内部创建,并且可以用于回滚到该保存点之前的状态,而不影响事务中的其他操作。

    19510

    MyBatis框架的使用解析!数据库相关API的基本介绍

    ,这些逗号是在使用条件语句给列赋值时引入的 foreach 对集合进行遍历的时候使用foreach, 特别是在构建IN条件语句的时候 <select id="selectPostIn" resultType...WHERE title LIKE #{pattern} 多数据库支持 如果配置了databaseIdProvider, 就可以在动态代码中使用名为 "_databaseId" 的变量来为不同的数据库构建特定的语句...count值,使用0或者1 由于不是所有语句都需要参数,所以这些方法都具有一个不需要参数的重载形式 insert, update 和delete方法返回值表示受该语句影响的行数 select高级版本 允许限制返回行数的范围...不会自动提交事务,除非发现到调用了插入,更新或删除方法改变了数据库 如果没有使用这些方法提交修改,那么就可以在commit和rollback方法参数传入true值来保证事务被正常提交 注意: 在自动提交模式或者使用了外部事务管理器的情况下...,设置force值对session无效 大部分情况下,无需调用rollback(), 因为MyBatis会在没有调用commit() 时完成回滚操作 但是,当要在一个可能多次提交或回滚的session中详细控制事务

    76020

    MySQL学习笔记(长期更新)

    INSERT INTO 表名 (字段名) SELECT 字段名或值 FROM 表名 WHERE 条件 修改:不要修改主键字段的值,主键是数据记录的唯一表示,修改主键的值可能破坏数据完整性。...FROM:其后可以跟表或查询结果(派生表/子查询),意思是将查询的数据当作一个虚拟的数据表来看待,需要使用AS关键字对派生表进行取名。 ORDER BY:对查询结果排序,ASC升序、DESC降序。...(基表),然后再使用此表的记录去关联其他的表,驱动表选择的原则:在对最终结果集没有影响的前提下,优先选择结果集最少的那张表作为驱动表。...为解决该问题,可以使用rollback进行回滚。 rollback回滚:在一个事务中,如果有一个SQL语句执行失败,那么当前事务便不会提交,相当于当前事务中的SQL并没有执行。...,永远跟第一次读取的值一致,不受其他事务中数据操作的影响。

    96310

    SQL基础【十八、事物】(sql事物慎用,还是写业务逻辑代码好一些,入伙涉及到更换数据啥的很麻烦!)

    1、了解事务和锁 事务:保持逻辑数据一致性与可恢复性,必不可少的利器。 锁:多用户访问同一数据库资源时,对访问的先后次序权限管理的一种机制,没有他事务或许将会一塌糊涂,不能保证数据的安全正确读写。...D 持久性:事务提交之后,数据是永久性的,不可再回滚,不受关机等事件的影响。 事务在如下情况终止: 遇到rollback 或commit命令 遇到DDL或者DCL语句. 系统发生错误,崩溃或者退出。...Rollback Transaction:数据处理过程中出错,回滚到没有处理之前的数据状态,或回滚到事务内部的保存点。...>0) --全局变量@@trancount,事务开启此值+1,他用来判断是有开启事务 rollback tran ---由于出错,这里回滚到开始,第一条语句也没有插入成功。...>0) --全局变量@@trancount,事务开启此值+1,他用来判断是有开启事务 rollback tran end catch if(@@trancount>0) rollback

    48020
    领券