当前位置: 代码迷 >> Oracle认证考试 >> 这个题目是否有有关问题
  详细解决方案

这个题目是否有有关问题

热度:247   发布时间:2016-04-24 03:49:57.0
这个题目是否有问题

157. View the Exhibit and examine the structure of the ORDERS and CUSTOMERS tables.
Evaluate the following SQL command:
SQL> SELECT o.order_id, c.cust_name, o.order_total, c.credit_limit
FROM orders o JOIN customers c
USING (customer_id)
WHERE o.order_total > c.credit_limit
FOR UPDATE
ORDER BY o.order_id;
Which two statements are true regarding the outcome of the above query? (Choose two.)
A. It locks all the rows that satisfy the condition in the statement.
B. It locks only the columns that satisfy the condition in both the tables.
C. The locks are released only when a COMMIT or ROLLBACK is issued.
D. The locks are released after a DML statement is executed on the locked rows.
Answer: AC


------解决方案--------------------
引用:
我觉得C有问题,DDL不是也提交事务 解锁吗


根据上下文来、 the above query 这个查询没有ddl吧
------解决方案--------------------
C答案没有问题,不用纠结了。只有执行COMMIT或ROLLBACK命令时锁被释放。有问题吗?commit就是DDL语句。但是alter会解锁?RENAME会解锁?这都属于DDL语句。而rollback属于TCL语句。事物语句。所以答案C觉得不敢说成当执行DDL语句是锁被释放。

看下DDL的定义:
DDL (Data Definition Language )数据库定义语言 statements are used to define the database structure or schema. 

DDL是SQL语言的四大功能之一。
用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束
DDL不需要commit. 
CREATE 
ALTER 
DROP 
TRUNCATE 
COMMENT 
RENAME 


TCL的定义:
TCL(Transaction Control Language)事务控制语言 
SAVEPOINT 设置保存点 
ROLLBACK 回滚 
SET TRANSACTION 

SQL主要分成四部分:
(1)数据定义。(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。
(2)数据操纵。(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。
(3)数据控制。包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。
(4)嵌入式SQL的使用规定。涉及到SQL语句嵌入在宿主语言程序中使用的规则。 

定义来自于网上,可能没有官方文档的准备。下面我来查下文档。
------解决方案--------------------
Types of SQL Statements

The lists in the following sections provide a functional summary of SQL statements and are divided into these categories:

    Data Definition Language (DDL) Statements

    Data Manipulation Language (DML) Statements

    Transaction Control Statements

    Session Control Statements

    System Control Statement

    Embedded SQL Statements

Data Definition Language (DDL) Statements

Data definition language (DDL) statements let you to perform these tasks:

    Create, alter, and drop schema objects

    Grant and revoke privileges and roles

    Analyze information on a table, index, or cluster

    Establish auditing options

    Add comments to the data dictionary

The CREATE, ALTER, and DROP commands require exclusive access to the specified object. For example, an ALTER TABLE statement fails if another user has an open transaction on the specified table.

The GRANT, REVOKE, ANALYZE, AUDIT, and COMMENT commands do not require exclusive access to the specified object. For example, you can analyze a table while other users are updating the table.

Oracle Database implicitly commits the current transaction before and after every DDL statement.

Many DDL statements may cause Oracle Database to recompile or reauthorize schema objects. For information on how Oracle Database recompiles and reauthorizes schema objects and the circumstances under which a DDL statement would cause this, see Oracle Database Concepts.

DDL statements are supported by PL/SQL with the use of the DBMS_SQL package.

See Also:
Oracle Database PL/SQL Packages and Types Reference for more information about this package

The DDL statements are:

ALTER ... (All statements beginning with ALTER, except ALTER SESSION and ALTER SYSTEM—see "Session Control Statements" and "System Control Statement")
  相关解决方案