標籤:style io color os ar 使用 java for sp
DML語言 &:地址符;(PrepareStament) 批處理:插入--------一次將10號部門的員工插入新的表中; 其不必書寫values語句;子查詢中的值列表應與insert中子句中的列名對應; delete與truncate的區別:1;delete逐條刪除,而truncate先摧毀表,然後在建立表; 2:主要區別是兩種不同的語言; 3;delete不會釋放空間,而truncate可以; 4:delete刪除時會產生片段,而truncate不會產生; 5:delete可以閃回,而truncate不可以閃回; set feedback off 命令:不顯示執行語言; 執行硬碟上的sql指令碼命令:如:@c:\sql.sql; 測試得出:delete操作速度快;
DCL語言 Oracle的事物是自動開啟,手動提交(顯示:commit;隱式:正常退出,ddl語句) 復原(顯示:rollback;隱式:非正常退出,斷電,宕機); 通過儲存點savepoint能夠更好控制事物;建立儲存點的命令:savepoint 儲存點名; Oracle支援的事物層級:READ COMMITED(default),SERIALIZABLE,READ ONLY;
DDL語言 對象有12個 表:建立表時需要許可權,空間;我們可以通過子查詢快速建表,可以通過add,modfiy,drop,rename實現對錶欄位的修改; Oracle的資源回收筒:show recyclebin 查看資源回收筒;purge recyclebin 清空資源回收筒;並不是每個使用者都有資源回收筒,管理員沒有資源回收筒,普通使用者才會有資源回收筒; 如何將資源回收筒的表取回?---閃回課程 表的約束:not null,unique,primary key,foreign key,check;一般建立表和建立約束分開,便於閱讀; 約束的例子:
create table student
(
pid number constraint student_PK primary key,
sname varchar2(20) constraint student_name_notnull not null,
gender varchar2(2) constraint student_gender check (gender in(‘男‘,‘女‘)),
email varchar2(20) constraint student_email_unique unique
constraint student_email_notnull not null,
deptno number constraint student_FK references dept(deptno) on delete cascade
)
視圖:從表中抽出的邏輯上相關的資料集合;目的:簡化查尋; 不建議:通過視圖對錶的修改;
序列:sequences主要作用是給表的主鍵提供值,其有兩個屬性nextval,currval; 其特點:其是個數組,存在於記憶體當中; 資料不連續:復原,系統異常--停電,多張表使用一個序列;
索引:提高查詢速度; 如:create index myindex on emp(deptno,job); 同義字:別名
Oracle的plsql
操作Oracle最快的語言是plsql; 變數的類型:基礎類型,引用性變數(%type),記錄性變數(%rowtype); 其賦值方式有兩種:“:=”和into關鍵字; set serveroutput on 命令:開啟控制台列印輸出; accept num prompt ‘請輸入‘命令是:接受鍵盤上輸入的內容; plsql的if語句必須以 if end結束;
游標:cursor用於儲存一個查詢返回的多行資料;其屬性:%isopen是否開啟;%rowcount記錄數;%notfound 沒有記錄; 使用cursor首先open和最後close;Oracle最多支援300個游標;show paremeters 查看參數設定; 案例:使用游標查詢員工的姓名和薪水,並列印;給員工漲工資,總裁1000,經理800,其它400;其也需要手動提交事物; 帶參數的游標:其定義,開啟游標時帶參數,其它用法和不帶游標的用法相同; 案例:查詢某個部門的員工姓名
例外:系統內建的例外,自訂的例外;在Java中異常是向上處理機制,而plsql不能向上拋, 在java中try。。catch。。finally 而plsql中只有try。。catch其寫法是exception when 。。then。。。 在declare中自訂例外:例外名 exception; 使用raise跑出異常,異常會幫你自動關閉游標;
執行個體一:統計每年入職的人數; 執行個體二:為員工漲工資,從最低工資調起沒人漲10%,但工資總額不能超過5萬元;請計算漲工資的人數和漲工資後的工資總額,並輸出漲工資人數和工資總額;
=====================================================預存程序(沒有返回值),儲存函數(有返回值),觸發器 Java不能直接調用plsql,而是寫成預存程序,儲存函數,讓後用Java來調用; 建立儲存過稱:create[ or replace] procedure 過程名(參數列表) as plsql子程式體;參數類型及輸入輸出要標明;不要在儲存函數,預存程序中不要提交事物; 調用預存程序的方法:exec 過程名();在另一個plsql中調用:begin 過程名();end;這兩種方法; 建立儲存函數:create[ or replace] procedure 過程名(參數列表) return 返回值類型 as plsql子程式體; 輸出參數適用out,預存程序,儲存函數都可以返回一個或者多個參數,其二者基本上沒有區別; 執行個體一:查詢某個部門中,所有員工的所有資訊 需要包頭和包體: 當返回的結果是集合,可以使用游標來實現;
Oracle資料處理