1. 程式人生 > >Oracle資料庫學習第一天

Oracle資料庫學習第一天

Oracle資料庫學習第一天

目錄:

基本概念:

  • PGA與SGA的概念

  • Oracle Database的基本概念

  • Oracle伺服器的概念

  • Oracle 資料庫和Oracle 例項

  • Oracle例項的理解

  • Oracle叢集的概念

基礎知識:

  • 基本命令

  • SELECT語句

  • WHERE語句

  • LIKE模糊查詢

  • ORDER BY語句

  • 別名

  • DUAL關鍵字

  • NULL問題

  • 運算子/操作符

  • 連線符

  • 字串

  • DISTINCT關鍵字

  • SQL 和 SQL*Plus

  • 單行函式概念

  • 字元函式

  • 數字函式

  • 日期

  • 轉換函式

  • 通用函式

  • GROUP BY語句

  • HAVING語句

  • 笛卡爾集

  • Oracle連線

  • 等值連線

  • 非等值連線

  • 外連線

  • 自連線

 

Oracle資料庫學習第一天對應練習題

 

 

PGA與SGA的概念:

SGA是系統全域性區

PGA是程序全域性區,也有叫使用者全域性區

oracle在跑,SGA就是oracle的記憶體結構,比如放databuf,share pool,oracle啟動時分配,oracle關閉時回收.

PGA是有使用者連oracle時,oracle給開闢的一個記憶體區, 只供該使用者使用,該使用者斷開後oracle就會將這塊記憶體回收

Oracle Database的基本概念:

Oracle伺服器的概念:

oracle伺服器是一個數據管理系統(RDBMS),它提供開放的、全面的,近乎完整的資訊管理。由oracle例項和oracle資料庫組成。

Oracle 資料庫和Oracle 例項:

Oracle 資料庫: 位於硬碟上實際存放資料的檔案, 這些檔案組織在一起, 成為一個邏輯整體, 即為 Oracle 資料庫. 因此在 Oracle 看來, “資料庫” 是指硬碟上檔案的邏輯集合, 必須要與記憶體裡實例合作, 才能對外提供資料管理服務。

oracle 資料庫: 磁碟上物理檔案的集合

Oracle 例項: 位於實體記憶體裡的資料結構. 它由一個共享的記憶體池和多個後臺程序所組成, 共享的記憶體池可以被所有程序訪問. 使用者如果要存取資料庫(也就是硬碟上的檔案) 裡的資料, 必須通過例項才能實現, 不能直接讀取硬碟上的檔案。

oracle例項: 抽象的物理檔案的記憶體影像,要被讀到記憶體中。

區別: 例項可以操作資料庫; 在任何時刻一個例項只能與一個數據庫關聯; 大多數情況下, 一個數據庫上只有一個例項對其進行操作。

Oracle例項的理解:

當應用程式app1提交資料的時候,通過兩階段提交原理進行提交:

第一步提交:將app1的資料通過網路sql語言,提交到PGA區。

第二部提交:PGA的資料再由oracle機制提交到SGA區。

提交且滿足規則後,再寫資料庫。

Oracle叢集的概念:

cluster oracle:一個oracle資料庫可以被對映多個例項。 

基本命令:

Oracle可以通過Desc加表名來查詢表的結構:


set linesize 150 設定行寬

set pagesize 140 設定頁大小

select * from emp;

結果:


設定列寬:

數字:col empno for 99999999999999999999

字元:col ename for a20


清屏:host cls


修改程式碼命令:SQL> ed

SELECT語句:

檢視使用者下有什麼表:select * from tab;  (tab是資料字典,Oracle超級管理員分配給普通使用者的資源,tab是一個關鍵字)


查詢表的所有記錄:


選擇特定的列:


注意內容:

SELECT 標識選擇哪些列

FROM 標識從哪個表中選擇

SQL 語言大小寫不敏感。

SQL 可以寫在一行或者多行

關鍵字不能被縮寫也不能分行

各子句一般要分行寫。

使用縮排提高語句的可讀性。

WHERE語句:

WHERE需要注意的地方:

1、WHERE 子句緊隨 FROM 子句。

2、WHERE後的第一個字元肯定是列名。


WHERE語句的三種格式:

(1)where col > 30:

oracle支援隱式型別轉換 eg:char ====>date(自動把char型別轉換為data型別)


(2)where col in ()--->某一個集合 :

--in 中是一個集合 eg:null

select * from emp

   where DEPTNO in (10, 20, null)

   select * from emp

   where DEPTNO not in (10, 20,null)

   ======> in集合中遇見null  (in集合和空值在一起...)

   =====>in (集合中含有空值 ) 查詢結果不受影響

   ======>not in (集合中含有空值 ) 查詢結果受影響


(3)where col between a and b  a要小於b且此區間為閉區間[]:

LIKE模糊查詢:

% 代表零個或多個字元(任意個字元)。

_ 代表一個字元。

ORDER BY語句:

order by 預設按照升序排序 從小到大




當ORDER BY遇見NULL(空值)時:


當ORDER BY後面有多個列時:


ORDER BY排序的規則:

可以按照select語句中的列名排序

可以按照別名列名排序

可以按照select語句中的列名的順序值(數字)排序

如果要按照多列進行排序,則規則是先按照第一列排序,如果相同,則按照第二列排序;以此類推

別名:

1、重新命名一個列。

2、便於計算。

3、緊跟列名,也可以在列名和別名之間加入關鍵字‘AS’,別名使用雙引號,以便在別名中包含空格或特殊的字元並區分大小寫。

4、可以省掉""與as

5、別名有空格時, 不能省掉""

例:

 DUAL關鍵字:

DUAL 是一個‘偽表’,可以用來測試函式和表示式

dual是資料字典 (oracle超級管理員分配給普通使用者的資源,dual關鍵字)

SQL> select sysdate from dual;

SYSDATE

--------------

07-10月-14

 

NULL問題:

1、空值是無效的,未指定的,未知的或不可預知的值

2、空值不是空格或者0。

3、任何數和null運算都為null    (null無窮大)

4、空值不是空  null != null

5、null濾空函式:nvl (a, b)

--當a是空的時候,返回b( 其中b可以是數字/字串)



運算子/操作符:



連線符:

把列與列,列與字元連線在一起。

用 ‘||’表示。

可以用來‘合成’列。

字串:

1、字串可以是 SELECT 列表中的一個字元,數字,日期。

2、字串和日期在sql語言用單引號括起來

3、每當返回一行時,字串被輸出一次。

DISTINCT關鍵字:

預設情況下,查詢會返回全部行,包括重複行。在 SELECT 子句中使用關鍵字 ‘DISTINCT’ 刪除重複行。


當DISTINCT修飾多個欄位的時, 當部門編號和工種都一樣的時候,才認為是重複的 否則就認為不是重複的,就不會去除。也就是說DISTINCT可以用來修飾多個欄位。

select DISTINCT deptno, job from emp;

SQL 和 SQL*Plus:

單行函式概念:

單行函式:

操作資料物件

接受引數返回一個結果

只對一行進行變換

每行返回一個結果

可以轉換資料型別

可以巢狀

引數可以是一列或一個值

字元函式:


大小寫控制函式:


CONCAT:


SUBSTR:


LENGTH與LENGTHB:


INSTR:


LPAD與RPAD:


TRIM:

數字函式:


ROUND:


TRUNC:


MOD:

 日期:

有關日期格式屬性修改:

SQL> select * from v$nls_parameters;

alter session set NLS_DATE_FORMAT='DD-MON-RR';

alter  session set NLS_DATE_FORMAT='yyyy-mm-dd';

字元和日期要包含在單引號中。

字元大小寫敏感,日期格式敏感。

預設的日期格式是 DD-MON-RR。



 

 


 


改變日期的格式:

 轉換函式:

資料型別轉換分為隱式轉換與顯式轉換。




通用函式:

GROUP BY語句:


HAVING語句:


笛卡爾集:

Oracle連線:

等值連線:

非等值連線:

外連線:


自連線: