需要執行的SQL語句:
數據庫中對數據進行的添加、修改和刪除操作均屬於數據庫操縱語言(DML),這類類型的SQL語句只有執行數據控制語言(DCL)中的commit才能使之起作用,DCL語言中的rollback用於撤銷DML語言操作:
添加數據:
數據添加的方式有兩種:
第一種:
語法:
insert into table_name [(column_name1,column_name2,...,column_namen)] values (value1,value2,...valuen)
e.g
注意:
1、字段列表的順序可以不按照表中字段的順序列出來,但對應值列表必須和字段名列表對應;
e.g
2、對應值列表中的值如果是字符類型或日期類型,則需使用單引號引起來;
3、如果沒有字段列表,則值列表中值的順序必須按照實際表中字段的默認順序進行排列;
e.g
第二種:
語法:
insert into to_table_name [(column_name1,column_name2,...,column_namen)]
select column_name1,column_name2,...,column_namen from from_table_name
e.g
注意:
1、insert子句中字段名列表的數目和數據類型必須和select子句中選擇的字段列表的數目和數據類型相匹配。數據類型不考慮長度,但是須比查出來的對應列的長度長或相等。
2、select查詢字段名可以和insert插入表對應字段名不一致。
修改數據:
語法:
update table_name
set column1=value1, column2=value2……
[where ……]
e.g
刪除數據:
語法:
delete [from] table_name
[where……]
e.g
注意:from關鍵字在Oracle數據庫中可以沒有,但是在MySQL數據庫中必須要有
事務操作:
當執行一組DML操作時,為了確保數據的一致性,避免數據庫產生錯誤數據,就需要通過事務(Transaction)使該組DML操作同時成功或失敗,例如:
當執行第一個DML SQL語句時,事務開始,當出現以下情況時事務結束:
1、執行了commit或rollback語句;
2、執行了DDL語句(如建表語句)或DCL語句(如給用戶授權),如下:
3、數據庫客戶端程序退出或數據庫崩潰時,為了保持數據一致性,也會結束事務。
事務控制語句:
1、commit:提交事務,使之前做的改變永久作用於數據庫;
2、rollback:回滾當前事務,丟棄所有未決的數據改變;
3、savepoint name:在當前事務中標記保存點(非ANSL SQL標准);
4、rollback to name:回滾當前事務到指定的保存點,從而丟棄保存點后對數據庫的任何改變;
e.g
注意:
1、執行DML語句且沒有結束事務時,如果需要查詢數據庫的真實改變情況,則要求在一個新的SQL Window窗口中執行查詢語句:因為事務中所做的每一個操作在事務被提交之前都是臨時的,在commit或rollback語句執行之前,DML語句首先影響該用戶的數據庫緩沖區,因為這些操作可以被恢復,而且因為是在該用戶的數據緩沖區,所以在原SQL窗口中查詢得到的是數據緩沖區的結果,不是數據庫真實的數據;要想拿到數據庫真實的數據,需要在新SQL窗口中執行查詢語句,這樣針對不同的用戶,Oracle服務器用讀一致性來確保每個用戶看到的數據和上次提交時的數據相同。
2、當一個用戶執行DML語句時,如果其事物沒有結束,則受影響的行被鎖定,此時其它用戶不能改變受影響行中的數據,后面用戶所執行的DML語句會一直處於執行狀態,直至前一個用戶所執行DML語句事務結束,例如:
a、在一個SQL Window中執行如下SQL語句,並且不執行事務結束語句
b、然后再在一個新的SQL Window中執行如下SQL語句
修改SQL語句執行后,PL/SQL Developer顯示該語句已知處於執行狀態,如下所示:
當上面修改數據的事務結束,則下面刪除數據SQL語句結束執行狀態。