程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> OraclePL/SQL

OraclePL/SQL

編輯:Oracle教程

SQL

Distinct

NULL

||連接符

Oracle數據庫中大小寫敏感

要求找出含有%的記錄

這需要使用ESCAPE標識轉義字符

select * from t_charwhere a like ‘%\%%' escape '\';

select * fromt_char where a like ‘%K%%' escape ‘K';

PLSQL中日期比較

1.格式需要一致,可以通過字符串比較。

2.TO_CHAR(CREATE_DATE,'yyyy-mm-dd')>=NVL(P_CREATE_FROMDATE,TO_CHAR(CREATE_DATE,'yyyy-mm-dd'))

2. START_DATE <= TO_date(p_trans_date,'YYYY-MM-DD')

--不易發現的錯誤

select * from test1where column1 = '1234';--將所有行轉換為字符串

select * from test1where column1 = 1234;--將所有行轉換為數字,包含字符的行出錯

--連接

-oracle全外外連接

select e.last_name,e.department_id,d.department_namefrom employees e,departments dwhere e.department_id=d.department_id(+)union

select e.last_name,e.department_id,d.department_namefrom employees e,departments dwhere e.department_id(+)=d.department_id;

--sql1999標准

SELECT e.last_name, e.department_id, d.department_name

FROM employees e

FULLOUTERJOIN departments d

ON (e.department_id =d.department_id) ;

分組計算函數和group by子句

備注:MIN, MAX 可用於任何數據類型,但AVG, SUM,STDDEV,VARIANCE僅適用於數值型字段。

使用GROUP BY 子句進行分組:

l 可以按照某一個字段分組,也可以按照多個字段的組合進行分組

l SELECT查詢語句中同時選擇分組計算函數表達式和其他獨立字段時,其他字段必須出現在Group By子句中,否則不合法。

l 不能在Where條件中使用分組計算函數表達式,當出現這樣的需求的時候,使用Having 子句。

l 分組計算函數也可嵌套使用。

事務控制

隱式的事務提交或回滾動作:

Commit,rollback 是顯式的提交和回滾語句,還有一些隱式的提交和回滾是大家需要知道並引起注意的:

當如下事件發生是,會隱式的執行Commit動作:

1、數據定義語句被執行的時候,比如新建一張表:Create Table …

2、數據控制語句被執行的時候,比如賦權GRANT …( 或者DENY)

3、正常退出iSQL*Plus 或者PLSQLDEVELOPER, 而沒有顯式的執行COMMIT 或者ROLLBACK 語句。

當如下事件發生時,會隱式執行Rollback 動作:

1、非正常退出iSQL*Plus, PLSQL DEVELOPER, 或者發生系統錯誤。

在Commit 或者Rollback前後數據的狀態:

1、在數據已經被更改,但沒有Commit前,被更改記錄處於被鎖定狀態,其他用戶無法進行更改;

2、在數據已經被更改,但沒有Commit前,只有當前Session的用戶可以看到這種變更,其他Session的用戶

看不到數據的變化。

3、在數據已經被更改,並且被Commit後,被更改記錄自動解鎖,其他用戶可以進行更改;

4、在數據已經被更改,並且被Commit後,其他Session的用戶再次訪問這些數據時,看到的是變化後的數據。

那麼同理可知Rollback前後數據的狀態及鎖的變化。

表的命名要求和表中列的命名要求:

1、必須以字母開頭

2、長度不能超過30個字符

3、只能包含A–Z,a–z, 0–9,_, $, and #

4、不能與數據庫中的已有對象重名

5、不能使用Oracle 數據庫的保留字

注意TRUNCATE 與DELETE FROM table 的區別: 1)沒有Rollback機會2)HWM標記復位(HWM高水位線)都不會刪除表結構

約束

更改表的語法:

添加列:

ALTERTABLE table

ADD(column datatype [DEFAULT expr]

[, columndatatype]...);

更改列:

ALTERTABLE table

MODIFY(column datatype [DEFAULT expr]

[, columndatatype]...);

刪除列:

ALTERTABLE table

DROP(column);

ALTER TABLE tablenameADD CONSTRAINT constraintname

constrainttype(column1,…);

CONSTRAINT emp_email_ukUNIQUE(email))

CONSTRAINT dept_id_pk PRIMARYKEY(department_id))

CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)

REFERENCESdepartments(department_id)

CONSTRAINT emp_salary_min CHECK (salary > 0)

索引、序列、同義詞

函數索引

CREATE INDEX upper_dept_name_idx

ON departments(UPPER(department_name));

控制用戶權限

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved