Oracle编程入门经典 第2章 SQLPlus和基本查询
- 怎樣使用SQL*Plus工具連接數(shù)據(jù)庫以及執(zhí)行查詢
- 怎樣配置SQL*Plus,以格式化查詢結(jié)果
- SQL語句的不同種類
- 怎樣在數(shù)據(jù)庫上編寫查詢來查看數(shù)據(jù)
- 怎樣修改存儲在數(shù)據(jù)庫中的數(shù)據(jù)
2.1 SQL*Plus簡介
SQL*Plus是一個(gè)用于連接Oracle數(shù)據(jù)庫的工具,具有可以滿足Oracle用戶和管理員需求的大量功能,包括:
- 在數(shù)據(jù)庫中執(zhí)行SQL和PL/SQL
- 更新數(shù)據(jù)庫中的數(shù)據(jù)
- 執(zhí)行數(shù)據(jù)查詢
- 將查詢結(jié)果集格式化為報(bào)表
- 建立、編輯、檢索和執(zhí)行SQL腳本
- 幫助Oracle用戶調(diào)整SQL查詢
- 管理數(shù)據(jù)庫
- 描述數(shù)據(jù)庫中的表和PL/SQL對象
- 將數(shù)據(jù)從一個(gè)數(shù)據(jù)庫復(fù)制到另一個(gè)數(shù)據(jù)庫
- 向用戶發(fā)送消息,接受這些用戶的輸入
2.1.1 SQL、PL/SQL和SQL*Plus之間的區(qū)別
SQL:結(jié)構(gòu)化查詢語言,或者是用來將數(shù)據(jù)放入數(shù)據(jù)庫,從數(shù)據(jù)庫檢索數(shù)據(jù),控制事務(wù)處理以及管理數(shù)據(jù)庫的語言。
PL/SQL:Oracle的過程化編程語言,用戶可以使用它編寫在數(shù)據(jù)庫中執(zhí)行的定制程序以及過程代碼。
SQL*Plus:是用戶可以用來編寫SQL和PL/SQL腳本的接口,即一個(gè)接口工具。
以賬戶(即用戶名稱):scott,默認(rèn)密碼(即口令):tiger 登錄數(shù)據(jù)庫(創(chuàng)建數(shù)據(jù)庫,會自動分配一個(gè)演示賬號scott)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | SQL*Plus: Release 9.2.0.1.0 - Production on?星期六 12月 29 10:34:34 2012 Copyright (c) 1982, 2002, Oracle Corporation. All?rights reserved. 連接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With?the Partitioning, OLAP and?Oracle Data Mining options JServer Release 9.2.0.1.0 - Production SQL> select?* from?dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> begin 2 for?cur in?(select?* from?DEPT) loop 3 dbms_output.put_line(cur.dname || ' is the department name now.'); 4 end?loop; 5 end; 6 / PL/SQL 過程已成功完成。 SQL> |
2.1.2 啟動SQL*Plus
1. 命令行模式的SQL*Plus
- Unix:$ORACLE_HOME/bin/sqlplus
- Windows:%ORACLE_HOME5/bin/sqlplus.exe
這個(gè)目錄應(yīng)該在用戶的PATH環(huán)境變量中。
- SYS是數(shù)據(jù)詞典的所有者,只應(yīng)用于管理的目的。SYS的默認(rèn)密碼是CHANGE_ON_INSTALL。
- SYSTME是一個(gè)管理員賬號。SYSTEM的默認(rèn)密碼是MANAGER。
- SCOTT是一個(gè)演示賬號。SCOTT的默認(rèn)密碼是TIGER。
試驗(yàn):連接Oracle
(1) 在DOS或者XTERM中,在提示符下輸入sqlplus,打開一個(gè)SQL*Plus會話。
(2) 使用用戶名SCOTT和密碼TIGER登錄。
工作原理
2. 通過網(wǎng)絡(luò)連接
配置C:\oracle\ora92\network\ADMIN的文件sqlnet.ora
| 1 2 3 4 5 6 7 8 9 | # SQLNET.ORA Network Configuration File: C:\oracle\ora92\network\admin\sqlnet.ora # Generated by?Oracle configuration tools. # NAMES.DEFAULT_DOMAIN = Infomation # SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) |
啟動配置助理Oracle Net Configuration Assistant,如下圖所示:
2.2 快速而簡單地查詢數(shù)據(jù)庫
試驗(yàn):
啟動SQL*Plus,使用密碼TIGER,作為SCOTT連接數(shù)據(jù)庫(或以win+R,輸入sqlplus)。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | SQL> select?table_name from?user_tables; TABLE_NAME ------------------------------ BONUS DEPT EMP SALGRADE |
工作原理
USER_TABLES是Oracle數(shù)據(jù)詞典中的一個(gè)視圖。當(dāng)SQL*Plus中遇到排版亂序(如行不夠顯示)特殊問題的時(shí)候,可以有三種選擇:
- 忍受它。
- 查詢少量的列。
- 格式化結(jié)果(用戶可以讓標(biāo)題每10、100、10000行重復(fù)一次或者根本不重復(fù))。
2.2.1 格式化用戶結(jié)果
1. COLUMN
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | SQL> select?ename,sal from?emp where?ename like?'A%' 2 / ENAME SAL ---------- ---------- ALLEN 1600 ADAMS 1100 SQL> column?sal format $9,999.99 SQL> select?ename,sal from?emp where?ename like?'A%' 2 / ENAME SAL ---------- ---------- ALLEN $1,600.00 ADAMS $1,100.00 SQL> describe user_objects 名稱 是否為空? 類型 ----------------------------------------- -------- ---------------- OBJECT_NAME VARCHAR2(128) SUBOBJECT_NAME VARCHAR2(30) OBJECT_ID NUMBER DATA_OBJECT_ID NUMBER OBJECT_TYPE VARCHAR2(18) CREATED DATE LAST_DDL_TIME DATE TIMESTAMP?VARCHAR2(19) STATUS VARCHAR2(7) TEMPORARY?VARCHAR2(1) GENERATED VARCHAR2(1) SECONDARY VARCHAR2(1) |
2. PAUSE
| 1 2 3 4 5 6 7 | SQL> set?pause on 一頁之后,停止?jié)L屏 SQL> set?pause off 全部顯示(一頁的大小默認(rèn)PAGESIZE是14) |
3. PAGESIZE
試驗(yàn):設(shè)置用戶頁面大小
從數(shù)據(jù)詞典的ALL_OBJECTS視圖中選擇ROWNUM和OBJECT_NAME。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | SQL> set?pagesize 10 SQL> select?rownum,object_name from?all_objects where?rownum<20 2 / ROWNUM OBJECT_NAME ---------- ------------------------------ 1 /1005bd30_LnkdConstant 2 /10076b23_OraCustomDatumClosur 3 /10297c91_SAXAttrList 4 /103a2e73_DefaultEditorKitEndP 5 /10501902_BasicFileChooserUINe 6 /105072e7_HttpSessionBindingEv 7 /106ba0a5_ArrayEnumeration ROWNUM OBJECT_NAME ---------- ------------------------------ 8 /106faabc_BasicTreeUIKeyHandle 9 /10744837_ObjectStreamClass2 10 /1079c94d_NumberConstantData 11 /10804ae7_Constants 12 /108343f6_MultiColorChooserUI 13 /10845320_TypeMapImpl 14 /10948dc3_PermissionImpl ROWNUM OBJECT_NAME ---------- ------------------------------ 15 /1095ce9b_MultiComboBoxUI 16 /109a284b_OracleXMLStaticQuery 17 /109cbb8e_SpanShapeRendererSim 18 /10a45bfe_ProfilePrinterErrors 19 /10a793fd_LocaleElements_iw 已選擇19行。 19條記錄,2頁,這里顯示屏幕大小占10行。 |
3. LINESIZE
LINESIZE默認(rèn)為80。通過此方式,用戶不會因?yàn)檩敵鰯?shù)據(jù)超過了窗口的右邊限制而遺失數(shù)據(jù)。
4. FEEDBACK
查詢結(jié)果末尾輸出N行。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | SQL> show feedback 用于6或更多行的 FEEDBACK ON SQL> select?empno,ename,job from?emp where?rownum<7; SQL> set?feedback off SQL> select?empno,ename,job from?emp where?rownum<7; SQL> set?feedback 3 SQL> select?empno,ename,job from?emp where?rownum<3; |
5. NUMFOFRMAT
| 1 2 3 4 5 | NUMFORMAT的默認(rèn)值是10。 SQL> set?numformat 9999999.99 SQL> select?sal from?emp; |
6. LONG
LONG的默認(rèn)值是80.如果用戶要查詢具有LONG列的表或者視圖,那么就只會顯示這個(gè)特定列的前80個(gè)字符。如果使LONG列更長,就可以顯示這個(gè)列中的更多數(shù)據(jù)。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SQL> select?text from?all_views where?view_name='USER_TABLES'; TEXT --------------------------------------------------------------------- select?o.name, decode(bitand(t.property, 4194400), 0, ts.name, null), decode(bitand(t.propert SQL> set?pagesize 1000; SQL> set?long 10000; SQL> select?text from?all_views where?view_name='USER_TABLES'; |
2.3 什么是SQL
SQL不是Oracle的專有技術(shù);它是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言(最早是由IBM在二十世紀(jì)70年代建立,并于隨后被ANSI/ISO標(biāo)準(zhǔn)化組織采納,并被進(jìn)一步提煉和升華。
SQL-92 ANSI標(biāo)準(zhǔn)的SQL標(biāo)準(zhǔn)中共有四個(gè)層次:
(1) 入門層次。大多數(shù)供應(yīng)商所構(gòu)建的SQL引擎都會符合層次1.
(2) 過濾層次。隨著特性要求的增加,過濾層次介于入門層次和中間層次之間。
(3) 中間層次。中間層次的SQL-92兼容層次要求在數(shù)據(jù)庫中提供大量超過了入門或者過濾兼容性的新特性。這些特性包括但不局限于如下內(nèi)容:
- 動態(tài)SQL
- 用于參照完整性的級聯(lián)刪除
- DATE和TIME數(shù)據(jù)類型
- 域
- 可變長度字符串
- CASE表達(dá)式
- 數(shù)據(jù)類型之間的CAST函數(shù)
(4) 完全。這是最高和最終級別的ANSI SQL-92兼容層次。它向中間層次的標(biāo)準(zhǔn)又增加了更多的特性,這些特性包括但不局限于如下內(nèi)容:
- 連接管理
- BIT字符串?dāng)?shù)據(jù)類型
- 可延遲完整性約束
- FROM子句中的派生表
- CHECK子句中的子查詢
- 臨時(shí)表
以下的列表展示了用戶在使用Oracle的時(shí)候?qū)褂貌煌愋偷腟QL:
- 數(shù)據(jù)操作語言(DML)
- 數(shù)據(jù)定義語言(DDL)
- 事務(wù)處理控制語句
- 會話控制語句
- 系統(tǒng)控制語句
2.4 表中內(nèi)容
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | DESCRIBE <TABLE_NAME> or?DESC?<TABLE_NAME> 試驗(yàn):描述表 SQL> describe dept; 名稱 是否為空? 類型 ----------------------------------------- -------- ------------- DEPTNO NOT?NULL?NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13) |
2.5 數(shù)據(jù)操作語言
2.5.1 查詢
SELECT句子有:
- WITH
- SELECT
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
2.5.2 WHERE子句
| 1 | select?<columns> from?<data table> where?<conditional_expression>; |
- A=B
- B
- A<B
- A!=B;A<>B
- BETWEEN A AND B
- A LIKE B
- A NOT <條件表達(dá)式>
1. 二元操作符
AND
2. 操作符和條件的優(yōu)先級
操作優(yōu)先級:
- :=、-。
- *、/。
- +、-,||。
條件優(yōu)先級:
- =、!=、<、>、<=、>=。
- IS [NOT] NULL、LIKE、[NOT] BETWEEN、[NOT] IN、EXISTS。
- NOT。
- AND。
- OR。
3. 使用WHERE子句聯(lián)接表
| 1 | select?a.*,b.* from?a,b where?a.ID=b.ID |
4. 理解NULL
NULL是一個(gè)用來描述沒有定義的內(nèi)容的術(shù)語。NULL列意味著沒有向列賦值。
在Oracle中,當(dāng)執(zhí)行IF COL_A=<某個(gè)值>這樣的條件操作時(shí),可能的返回值是TURE、FALSET UNKNOWN。
是否為空,用IS NULL或IS NOT NULL判斷。
5. ORDER用戶結(jié)果
| 1 | order?by?<columns,columns..> |
6. GROUP BY和HAVING
GROUP BY 子句可以用于在查詢結(jié)果集中對記錄進(jìn)行分組,以匯總數(shù)據(jù)或者為整個(gè)組顯示單選的匯總信息。
HAVING用戶可以隨同GROUP BY子句提供一個(gè)附加的子句,來過濾GROUP BY查詢所返回的行組。這個(gè)HAVING子句只能夠用于使用了GROUP BY子句的查詢,并且通常會包含一個(gè)SQL集函數(shù),例如AVG、SUM、MAX等。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | SQL> select?empno,avg(sal) from?emp group?by?empno having?avg(sal)>=1000; EMPNO AVG(SAL) ---------- ---------- 7499 1600 7521 1250 7566 2975 7654 1250 7698 2850 7782 2450 7788 3000 7839 5000 7844 1500 7876 1100 7902 3000 7934 1300 已選擇12行。 |
2.5.3 聯(lián)接
笛卡爾積
| 1 | SQL> select?t1.empno,t2.dname,t2.loc,t1.ename from?emp t1,dept t2 where?t1.deptno=t2.deptno; |
1. 表別名
表別名(以前稱為相關(guān)名稱)是在FROM子句中用于各個(gè)表的“簡短名稱”,它們可以唯一地標(biāo)識數(shù)據(jù)源,而且可以使用縮寫。
2. 列表名
查詢中的列也可以被賦予別名。
3. Oracle 9i 中的ANSI聯(lián)接
用戶能夠執(zhí)行的不同類型的聯(lián)接如下所示:
- 自然聯(lián)接
- 內(nèi)連接
- 外聯(lián)接
- 左聯(lián)接
- 右聯(lián)接
- 完全聯(lián)接
4. 自然聯(lián)接
使用自然聯(lián)接兩個(gè)表的時(shí)候,Oracle就會將第一個(gè)表中的那些列與第二個(gè)表中具有相同名稱的列進(jìn)行聯(lián)接。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | SQL> select?empno,dname,loc,ename,sal from?emp natural join?dept where?sal>1000; EMPNO DNAME LOC ENAME SAL ---------- -------------- ------------- ---------- ---------- 7499 SALES CHICAGO ALLEN 1600 7521 SALES CHICAGO WARD 1250 7566 RESEARCH DALLAS JONES 2975 7654 SALES CHICAGO MARTIN 1250 7698 SALES CHICAGO BLAKE 2850 7782 ACCOUNTING NEW YORK CLARK 2450 7788 RESEARCH DALLAS SCOTT 3000 7839 ACCOUNTING NEW YORK KING 5000 7844 SALES CHICAGO TURNER 1500 7876 RESEARCH DALLAS ADAMS 1100 7902 RESEARCH DALLAS FORD 3000 7934 ACCOUNTING NEW YORK MILLER 1300 已選擇12行。 |
自然聯(lián)接是一個(gè)理論上很好,但是實(shí)際應(yīng)用性很差的特性示例。各個(gè)表中的聯(lián)接列都必有要具有相同的名稱。這將會強(qiáng)制設(shè)計(jì)者將要聯(lián)接表的相關(guān)列命名為與所聯(lián)接的表具有相同的名稱。
5. 內(nèi)聯(lián)接
內(nèi)聯(lián)接就像自然聯(lián)接一樣,要在FROM子句中使用聯(lián)接條件。雙表中其中一個(gè)條關(guān)鍵聯(lián)接列沒有值,則不顯示該記錄。
| 1 | Select?<columns> from?<data table> inner?join?<data table> where?<conditional_expression> |
6. 外聯(lián)接
外聯(lián)接擴(kuò)展了內(nèi)聯(lián)接的結(jié)果。外聯(lián)接的結(jié)果將會是所有滿足聯(lián)接條件的行,以及存在于一個(gè)表中的一些行,它們在其他表中沒有相應(yīng)的行來滿足聯(lián)接條件。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | Select?<columns> from?<data table> left/right?outer?join?<data table> on?<conditional_expression> SQL> select?empno,dname,loc,ename,sal from?emp left?outer?join?dept on?emp.deptno=dept.deptno; EMPNO DNAME LOC ENAME SAL ---------- -------------- ------------- ---------- ---------- 7934 ACCOUNTING NEW YORK MILLER 1300 7839 ACCOUNTING NEW YORK KING 5000 7782 ACCOUNTING NEW YORK CLARK 2450 7902 RESEARCH DALLAS FORD 3000 7876 RESEARCH DALLAS ADAMS 1100 7788 RESEARCH DALLAS SCOTT 3000 7566 RESEARCH DALLAS JONES 2975 7369 RESEARCH DALLAS SMITH 800 7900 SALES CHICAGO JAMES 950 7844 SALES CHICAGO TURNER 1500 7698 SALES CHICAGO BLAKE 2850 7654 SALES CHICAGO MARTIN 1250 7521 SALES CHICAGO WARD 1250 7499 SALES CHICAGO ALLEN 1600 |
7. 自聯(lián)接
在用戶建立的一些表中,用戶可能會擁有所謂的自引用外鍵。這意味著一個(gè)列可以是相同表主鍵的一個(gè)外鍵。
2.5.4 集合操作符
通過使用四個(gè)集合操作符UNION、UNIONALL、INTERSECT和MINUS,Oracle提供將兩個(gè)或者多個(gè)SQL查詢結(jié)合進(jìn)一個(gè)單獨(dú)的語句的能力。
使用集合操作符的查詢稱為復(fù)合查詢(compound query)。Oracle提供了一些編寫復(fù)合查詢時(shí)需要遵循的指南:
- 在構(gòu)成復(fù)合查詢的各個(gè)單獨(dú)的查詢中,SELECT表中值的數(shù)量和數(shù)據(jù)類型必須相匹配。
- 用戶不許在復(fù)合查詢所包含的任何單獨(dú)的查詢中規(guī)定ORDER BY子句。
- 用戶不許在BLOB、LONG這樣的大數(shù)據(jù)對象上使用集合操作符。
- 用戶不許在集合操作符SELECT列表中使用嵌套或者數(shù)組這樣的集合。
1. UNION
UNION語句可以將第一個(gè)查詢中的所有行與第二個(gè)查詢的所有行相加,消除重復(fù)行并且返回結(jié)果。
| 1 2 3 4 5 6 7 8 9 10 11 | SQL> select?empno,ename,job from?emp where?ename like?'F%'?union?select?empno,ename,job from?emp where?ename like?'A%'; EMPNO ENAME JOB ---------- ---------- --------- 7499 ALLEN SALESMAN 7876 ADAMS CLERK 7902 FORD ANALYST |
2. UNION ALL
UNION ALL語句與標(biāo)準(zhǔn)的UNION語句工作方式基本相同,只是不會從列表中濾除重復(fù)行。
| 1 2 3 4 5 6 7 8 9 10 11 | SQL> select?empno,ename,job from?emp where?ename like?'F%'?union?all?select?empno,ename,job from?emp where?ename like?'A%'; EMPNO ENAME JOB ---------- ---------- --------- 7902 FORD ANALYST 7499 ALLEN SALESMAN 7876 ADAMS CLERK |
3. INTERSECT
INTERSECT這個(gè)集合操作符會獲取兩個(gè)查詢,對值進(jìn)行匯總,并且返回同時(shí)存在于兩個(gè)結(jié)果集中的記錄。
| 1 2 3 4 5 6 7 8 9 | SQL> select?empno,ename,job from?emp where?ename like?'F%'?or?ename like?'A%'?intersect?select?empno,ename,job from?emp where?ename like?'A%'; EMPNO ENAME JOB ---------- ---------- --------- 7499 ALLEN SALESMAN 7876 ADAMS CLERK |
4. MINUS
MINUS集合操作符會返回所有從第一個(gè)查詢中的記錄,但是沒有從第二個(gè)查詢中返回的那些記錄。
| 1 2 3 4 5 6 7 | SQL> select?empno,ename,job from?emp where?ename like?'F%'?or?ename like?'A%'?minus select?empno,ename,job from?emp where?ename like?'A%'; EMPNO ENAME JOB ---------- ---------- --------- 7902 FORD ANALYST |
2.6 其它DML語句
2.6.1 INSERT語句
| 1 | SQL> insert?into?dept values(50,'INFORMATION','CHINA'); |
2.6.2 UPDATE語句
| 1 | SQL> update?dept set?DNAME='OPERATION'?where?deptno=40; |
2.6.3 DELETE語句
| 1 | SQL> delete?from?dept where?deptno=40; |
2.7 提交和回滾
在Oracle中,在用戶通知Oracle完成之前,用戶對數(shù)據(jù)所做的改變(例如,INSERT、UPDATE、DELETE)都不會永久改變。這可以使用COMMIT的SQL語句完成。
當(dāng)用戶在數(shù)據(jù)庫中改變數(shù)據(jù)的時(shí)候,用戶可能會發(fā)現(xiàn)有的時(shí)候會因?yàn)檫@樣或者那樣的原因,需要撤銷已經(jīng)進(jìn)行的改變。用戶可以使用ROLLBACK語句。
試驗(yàn):提交改變
另打開一個(gè)會話(即打開2個(gè)會話),用相同帳戶登錄,第一個(gè)會話插入一條記錄,第二個(gè)會話查詢。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | SQL> insert?into?dept values(50,'OPERATIONS','BOSTON'); 已創(chuàng)建 1 行。 SQL> select?* from?dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 OPERATIONS BOSTON SQL> |
第一個(gè)會話未COMMIT前,第二個(gè)會話的記錄:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | SQL*Plus: Release 9.2.0.1.0 - Production on?星期一 12月 31 08:47:08 2012 Copyright (c) 1982, 2002, Oracle Corporation. All?rights reserved. 連接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With?the Partitioning, OLAP and?Oracle Data Mining options JServer Release 9.2.0.1.0 - Production SQL> select?* from?dept; DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON SQL> |
第一個(gè)會話:
| 1 | SQL> commit; |
第二個(gè)會話的記錄:
SQL> select * from dept;
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | DEPTNO DNAME LOC ---------- -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 OPERATIONS BOSTON SQL> |
工作原理
在我們的第一個(gè)會話沒有提交事務(wù)處理之前,不能在第二個(gè)會話中看到對多張表所做的改變。一旦使用COMMIT語句在我們的第一個(gè)會話中完成了事務(wù)處理,那么我們就能夠立即在第二個(gè)會話中看到數(shù)據(jù)。
2.8 回滾
回滾事務(wù)和提交事務(wù)相似,即使用ROLLBACK便可對未提交的事務(wù)進(jìn)行回滾。
2.9 小結(jié)
文章根據(jù)自己理解濃縮,僅供參考。
摘自:《Oracle編程入門經(jīng)典》 清華大學(xué)出版社?http://www.tup.com.cn/
from:?http://www.cnblogs.com/yongfeng/archive/2013/01/06/2846983.html
總結(jié)
以上是生活随笔為你收集整理的Oracle编程入门经典 第2章 SQLPlus和基本查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle编程入门经典 第1章 了解O
- 下一篇: Oracle编程入门经典 第3章 建立以