PL/SQL學(xué)習(xí)筆記(四)
2024-07-21 02:33:33
供稿:網(wǎng)友
數(shù)據(jù)操作語(yǔ)句:插入:INSERT INTO TABLE(字段1,字段2....)VALUES(值1,值2....)
一次插入只插入一行。字符和日期值需要單引號(hào)擴(kuò)起。
插入空值:
方法一:隱示插入,插入時(shí)省略列名系統(tǒng)就會(huì)默認(rèn)省略的列為NULL。
方法二:顯示插入,在插入時(shí)指定列的值為空。 注:(1)值的個(gè)數(shù)不能少于列名的個(gè)數(shù)。
(2)注重非空屬性的列,不能插入空值。
WITH CHECK OPTION 視圖約束。
UID 當(dāng)前數(shù)據(jù)庫(kù)用戶ID
在插入日期的時(shí)候最好用TO_DATE來(lái)控制輸入格式??梢詣?chuàng)建一個(gè)腳本用 &變量名 的形式來(lái)用一個(gè)插入語(yǔ)句實(shí)現(xiàn)多行的插入(在值列表里用 &變量名)。插入中的子查詢:將另一個(gè)表中的內(nèi)容都插入被插入的表中。
insert into sales_reps(id,name,salary)
select employee_id,last_name,salary from employees where employee_id>100;
可以在子查詢中做運(yùn)算后插入到被插入表中。
不要使用VALUES子句。
在子查詢中的列數(shù)必須匹配 INSERT 語(yǔ)句中的列數(shù)。
刪除DELERT FROM TABLE WHERE 條件;
刪除所有符合 WHERE 條件的行?;谧硬樵兊膭h除。注重及聯(lián)刪除。
更新:
UPDATE TABLE SET 列名1=值1,列名2=值2.....WHERE 條件;
假如更新錯(cuò)誤,要用ROLLBACK回滾。利用子查詢更新另外表中的數(shù)據(jù),在 SET 后和 WHERE 后都可以利用子查詢語(yǔ)句。更新的時(shí)候要注重參照完整性約束。
子表的外鍵字段值必須是父表主鍵字段值的真子集。
DEFAULT+‘’ 默認(rèn)值
在創(chuàng)建表的時(shí)候用,在第三個(gè)參數(shù)的位置上。
例:
CREATE TABLE A
(
C1 CHAR(10) DEFAULT
.
.
.
)
在修改的時(shí)候,假如先給DEFAULT賦值的話,
可以直接用 列名=DEFAULT,使列名回復(fù)為默認(rèn)值。
MERGE語(yǔ)句提供了對(duì)表根據(jù)條件進(jìn)行插入或者更新的能力。
假如行存在則執(zhí)行UPDATE,假如不存在則執(zhí)行INSERT。避免了單獨(dú)的修改。
提高了性能,更便于使用。
對(duì)于數(shù)據(jù)庫(kù)應(yīng)用很有益。語(yǔ)法:別名AL
MERGE INTO table_name(目的表) table_alias USING (table/view/sub_query)//數(shù)據(jù)來(lái)源(可以用子查詢) alias(別名)
on(連接條件)
WHEN MATCHED THEN UPDATE SET(要害字) (修改目的表)
目的表AL.col1=原表AL.col_var1
目的表AL.col2=原表AL.col2_var2
WHEN NOT MATCHEN THEN(要害字)
INSERT (目的表AL.COL_LIST)
VALUES(原表AL.COL_VARS);(插入原表)create table newtable_name(新表) as select * from oldtable_name(原表) where 1=0;
將原表中的結(jié)構(gòu)復(fù)制到新表中,但具體的數(shù)據(jù)項(xiàng)不進(jìn)行復(fù)制。 事務(wù)(transaction):由被邏輯組織在一起的多個(gè)DML語(yǔ)句的構(gòu)成。
COMMIT:提交。
ROLLBACK:回滾。
SAVEPOINT:存儲(chǔ)點(diǎn),只在事務(wù)執(zhí)行過(guò)程中有效,事務(wù)結(jié)束即被釋放。事務(wù)的組成:
一組相同改變特性的DML語(yǔ)句;
一個(gè)DDL:數(shù)據(jù)定義語(yǔ)句;
一個(gè)DCL:權(quán)限控制語(yǔ)句;
建立存儲(chǔ)點(diǎn):
例:SAVEPOINT A;
.
.
.
ROLLBACK TO A; 事務(wù)的開(kāi)始:
開(kāi)始于第一個(gè)DML SQL語(yǔ)句執(zhí)行時(shí)開(kāi)始結(jié)束的時(shí)候是在:
*、一個(gè)COMMIT或ROLLBACK被執(zhí)行的時(shí)候。
*、一個(gè)DDL或DCL語(yǔ)句被執(zhí)行(自動(dòng)提交)注重*&*!(隱式)
*、用戶退出SQLPLUS(隱式)
*、系統(tǒng)崩潰(隱式)語(yǔ)句級(jí)回滾:Oracle 服務(wù)器執(zhí)行隱式的存儲(chǔ)點(diǎn)。