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連線:
等值連線:
非等值連線:
外連線:
自連線: