Oracle(四)這些SQL基礎你都會了麼

目錄

1.SQL語言基礎

1.1 DDL(數據定義語言DDL)

1.2 DCL(數據控制語言DCL)

1.3 DML(數據操縱語言DML)

 SQL語句的一些規範:

2.用戶與模式

      2.1 用戶(user):

     2.2 模式/方案(schema) :

3.select語句的使用(重點)

4.SQL中常用內置函數(重點)

5.子查詢(難點)

6.Oracle事務處理(重點)

6.1 事務的基本概念

6.2 事務控制

6.3 事務回退

6.4 事務回退舉例

                                           

 


1.SQL語言基礎

1.1 DDL(數據定義語言DDL

CREATE
ALTER
DROP

1.2 DCL(數據控制語言DCL

GRANT
REVOKE

1.3 DML(數據操縱語言DML

SELECT
INSERT
DELETE
UPDATE
 

      SQL語句的一些規範:

  1. SQL關鍵字、對象名和列名不區分大小寫,既可以使用大寫格式,也可以使用小寫格式,或者混用大小寫格式。

  2. 字符值和日期值區分大小寫。當在SQL語句中引用字符值和日期值時,必須要給出正確的大小寫數據,否則不能返回正確信息。
  3. 在應用程序中編寫SQL語句時,如果SQL語 句文本很短,可以將語句文本放在一行上:如果SQL語句文本很長,可以將語句文本分佈到多行上,並且可以通過使用跳格和縮進提高代碼的可讀性。
  4. SQL* Plus中的SQL語句要以分號(;)結束

2.用戶與模式

          2.1 用戶(user):

  用戶是用來連接數據庫和訪問數據庫對象的。(如我們使用的system、hr等)

     2.2 模式/方案(schema) :

模式(又稱爲方案)是用戶所擁有的數據庫對象的集合。在ORACLE數據庫中,對象是以用戶來組織的,用戶與模式是一一對應的關係,並且兩者名稱相同。例如:SCOTT用戶擁有的所有對象(表、視圖、索引、序列、過程、程序、函數……)都屬於SCOTT模式。

注意

  1. Oracle數據庫中不能新創建一個schema,要想創建一個schema,只能通過創建一個用戶的方法解決。
  2. 同一個模式不能存在同名對象,但不同模式中的對象名稱可以相同。
  3. 用戶可以直接訪問其他模式對象,但如果要訪問其他模式對象,必須具有對象權限。

Oracle附帶的示例方案中給了我們帶了很多模式:HR、SCOTT、訂單目錄(OE)模式、產品媒體(PM)模式、信息交換(IX)模式和銷售記錄(SH)模式。有了模式怎麼用呢?

--當我們要利用一個模式,首先要將它解鎖,我們才能使用它。這裏以解鎖HR爲例
--首先我們要先連接到數據庫,才能解鎖用戶
connect system/password;  --以system連接數據庫

alter user hr account unclock;       ---解鎖用戶hr
alter user hr identified by password; --給hr設置密碼,password是我們設置的密碼

conn hr/password;           --連接到hr
select table_name from user_tables;    --查看HR模式下所有的表

3.select語句的使用(重點

select語句的使用,算是基礎中的基礎,大家應該都會,這裏就不贅述了,不知道的也可以參考這篇博客select語句,也比較詳細了

4.SQL中常用內置函數(重點

這裏推薦一個博主寫的內置函數練習。不知道怎麼用的,可以學習學習。Oracle中的SQL使用

 

5.子查詢(難點

子查詢也是基礎,這裏也不贅述了,不會的可以參考這篇博客Oracle之子查詢(嵌套查詢select嵌套)

6.Oracle事務處理(重點

Oracle系統中,在使用INSERTUPDATEDELETE語句操作數據時,數據庫中的數據並不會立即改變,用戶還可以通過控制事務確認是否提交或取消先前的操作。

6.1 事務的基本概念

        事務是數據庫系統工作的一個邏輯單元,它由一個或多個SQL語句組成。對於數據庫而言,事務是不可分割的工作單元,一個事務中的所有SQL語句要麼全部執行,要麼全部不執行。當事務被提交後,該事務的操作才直正被保存到數據庫中。如果某個事務被回退了,那麼該事務的所有操作都被取消。事務的回退和提交可以由用戶顯式執行(COMMIT語句提交事務),也可以隱含地執行。只有當事務被提交後,其他用戶才能夠看到對數據庫的修改結果。

簡言之:如果第一個會話沒有提交事務,所以在第二個會話中看不到第一個會話對數據庫數據的改變。可以開兩個會話自己去驗證。

6.2 事務控制

 Oracle中的事務是隱式自動開始,它不需要用戶顯式地使用語句開始事務處理。當發生如下情況時,Oracle認爲一個事務結束: 

  • 執行COMMIT語句提交事務。 
  • 執行ROLLBACK語句撤銷事務
  • 執行一條數據定義語句(例如CREAEDROPALTER語句等)。如果該語句執行成功,那麼表示系統自動執行COMMIT命令;如果這種操作失敗,那麼表示系統自動執行ROLLBACK命令。
  •  執行一個數據控制命令(例如GRANTREVOKE等),這種操作表示自動執行COMMIT命令
  • 斷開數據庫的連接。如果使用EXIT命令正常退出SQL*Plus,則系統自動執行COMMIT命令;如果退出SQL*Plus出現異常,則系統自動執行ROLLBACK命令

6.3 事務回退

Oracle不僅允許回退整個未提交的事務,還允許回退事務的一部分,這是通過一種稱爲“保存點的機制實現的。在事務的執行過程中,用戶可以通過建立保存點將較長的事務分割爲幾部分。用戶就可以有選擇性地回退到某個保存點,該保存點之後的操作都將被取消。

6.4 事務回退舉例

在SCOTT模式中的DEPT表添加兩行記錄,並且在執行第一條INSERT語句後建立一個保存點,在第二條INSERT語句後查詢當前事務對數據庫所做的操作。隨後回退事務到保存點,以撤銷第二條INSERT語句所執行的操作。

--先查看dept裏面的數據
select * from dept;

--插入第一條記錄,設置保存點。
insert into dept values (50,'COMPUTER','CHANGSHA');
savepoint s1;

--插入第二條記錄,並進行查看。
insert into dept values (60,'DRUG','SHANGHAI');
select * from dept where deptno>40;

--回退到保存點。
rollback to savepoint s1;
commit;

--再次查看結果。
select * from dept;

 

                                           

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章