語句 | 用途 |
INSERT | 向表中添加行 |
UPDATE | 更新存儲在表中的數(shù)據(jù) |
DELETE | 刪除行 |
SELECT FOR UPDATE | 禁止其他用戶訪問DML語句正在處理的行。 |
LOCK TABLE | 禁止其他用戶在表中使用DML語句 |
插入數(shù)據(jù)
INSERT語句常常用于向表中插入行,行中可以有特殊數(shù)據(jù)字段,或者可以用子查詢從已存在的數(shù)據(jù)中建立新行。
列目錄是可選的,缺省的列的目錄是所有的列名,包括comlumn_id,comlumn_id可以在數(shù)據(jù)字典視圖ALL_TAB_COLUMNS,USER_TAB_COLUMNS,或者DBA_TAB_COLUMNS中找到。
插入行的數(shù)據(jù)的數(shù)量和數(shù)據(jù)類型必須和列的數(shù)量和數(shù)據(jù)類型相匹配。不符合列定義的數(shù)據(jù)類型將對插入值實行隱式數(shù)據(jù)轉(zhuǎn)換。NULL字符串將一個NULL值插入適當?shù)牧兄?。關(guān)鍵字NULL常常用于表示將某列定義為NULL值。
下面的兩個例子是等價的。
INSERT INTO customers(cust_id,state,post_code) VALUE(‘Ariel‘,NULL,‘94501‘); |
INSERT INTO customers(cust_id,state,post_code) VALUE(‘Ariel‘,,‘94501‘); |
UPDATE order_rollup SET(qty,price)=(SELECT SUM(qty),SUM(price) FROM order_lines WHERE customer_id=‘KOHL‘ WHERE cust_id=‘KOHL‘ AND order_period=TO_DATE(‘01-Oct-2000‘) |
DELETE FROM po_lines WHERE ship_to_state IN (‘TX‘,‘NY‘,‘IL‘) AND order_date <>< td=""> |
TRUNCATE TABLE (schema)table DROP(REUSE) STORAGE |
LOCK schema table IN lock_mode |
LOCK TABLE intentory IN EXCLUSIVE MODE |
語句 | 用途 |
Commit | 完成事務(wù),數(shù)據(jù)修改成功并對其他用戶開放 |
Rollback | 撤銷事務(wù),撤銷所有操作 |
rollback to savepoint | 撤銷在設(shè)置的回滾點以后的操作 |
set transaction | 響應事務(wù)或語句的一致性;特別對于事務(wù)使用回滾段 |
BEGIN UPDATE checking SET balance=balance-5000 WHERE account=‘Kieesha‘; INSERT INTO checking_log(action_date,action,amount) VALUES (SYSDATE,‘Transfer to brokerage‘,-5000); UPDATE brokerage SET cash_balance=cash_balance+5000 WHERE account=‘Kiesha‘; INSERT INTO brokerage_log(action_date,action,amount) VALUES (SYSDATE,‘Tracfer from checking‘,5000) COMMIT EXCEPTION WHEN OTHERS ROLLBACK END |
BEGIN INSERT INTO ATM_LOG(who,when,what,where) VALUES (‘Kiesha‘,SYSDATE,‘Withdrawal of $100‘,‘ATM54‘) SAVEPOINT ATM_LOGGED; UPDATE checking SET balance=balance-100 RETURN balance INTO new_balance; IF new_balance<0 THEN ROLLBACK TO ATM_LOGGED; COMMIT RAISE insufficient_funda; END IF END |
ROLLBACK TO ATM_LOGGED; ROLLBACK TO SAVEPOINT ATM_LOGGED; |
SET TRANSACTION ISOLATION LEVEL READ COMMIT; SET TRANSACTION ISOLATION LEVEL READ COMMIT |
SET TRANSCATION READ ONLY |
SELECT(沒有FOR UPDATE子句) LOCK TABLE SET ROLE ALTER SYSTEM ALTER ALARM |
SET TRANSACTION USE ROLLBACK SEGMENT rb_large; |
rb_large(initial 100M minextenta 2) rb1 (initial 1M next minextents 5) rb2 (initial 1M next minextents 5) rb3 (initial 1M next minextents 5) rb4 (initial 1M next minextents 5) rb5 (initial 1M next minextents 5) rb6 (initial 1M next minextents 5) rb7 (initial 1M next minextents 5) rb8 (initial 1M next minextents 5) rb9 (initial 1M next minextents 5) rb10 (initial 1M next minextents 5) |
SET TRANSACTION USE ROLLBACK SEGMENT rb_large |
CREATE USE piyush IDENTIFIED BY welcome |
ALTER USER piyush IDENTIFIED BY saraswati; |
CREATE USER ops$appl IDENTIFIED EATERNALLY |
CREATE USER appl IDENTIFIED EATERNALLY |
CREATE USER scott IDENTIFIED GLOBALLY AS "CN=scott,OU=divisional,O=sybex,C=US" |
CREATE USER piyush IDENTIFIED BY saraswati DEFAULTE TABLESPACE user_data; ALTER USER manoj DEFAULTE TABLESPACE dev1_data; |
CREATE USER piyush IDENTIFIED BY saraswati Temporary TABLESPACE user_data; ALTER USER manoj Temporary TABLESPACE dev1_data; |
CREATE USER piyush IDENTIFIED BY saraswati DEFAULT TABLESPACE user_data QUOTA UNLIMITED ON user_data QUOTA 20M ON tools; ALTER USER manoj QUOTA 2500K ON tools; |
CREATE USER piyush IDENTIFIED BY saraswati PROFILE TABLESPACE user_data; ALTER USER manoj Temporary TABLESPACE dev1_data; |
ALTER USER manoj DEFAULT ROLE ALL EXCEPT salary_adm; |
ALTER USER manoj IDENTIFIED BY welcome; ALTER USER manoj PASSWORD EXPIRE; |
ALTER USER ql AC COUNT LOCK |
ALTER USER ql ACCOUNT UNLOCK |
CREATE ROLE role_name IDENTIFIED BY password CREATE ROLE role_name IDENTIFIED EXTERNALLY CREATE ROLE role_name IDENTIFIED GLOBALLY |
SET ROLE role_name IDENTIFIED BY password |
權(quán)限 | ALTER | DELETE | EXECUTE | INDEX | INSERT | READ | REFERENCE | SELECT | UPDATE |
Directory | no | no | no | no | no | yes | no | no | no |
function | no | no | yes | no | no | no | no | no | no |
procedure | no | no | yes | no | no | no | no | no | no |
package | no | no | yes | no | no | no | no | no | no |
DB Object | no | no | yes | no | no | no | no | no | no |
Libary | no | no | yes | no | no | no | no | no | no |
Operation | no | no | yes | no | no | no | no | no | no |
Sequence | yes | no | no | no | no | no | no | no | no |
Table | yes | yes | no | yes | yes | no | yes | yes | yes |
Type | no | no | yes | no | no | no | no | no | no |
View | no | yes | no | no | yes | no | no | yes | yes |
GRANT ROLE(或system privilege) TO user(role,Public) WITH ADMIN OPTION(可選) |
視圖 | 作用 |
ALL_COL_PRIVS | 表示列上的授權(quán),用戶和PUBLIC是被授予者 |
ALL_COL_PRIVS_MADE | 表示列上的授權(quán),用戶是屬主和被授予者 |
ALL_COL_RECD | 表示列上的授權(quán),用戶和PUBLIC是被授予者 |
ALL_TAB_PRIVS | 表示對象上的授權(quán),用戶是PUBLIC或被授予者或用戶是屬主 |
ALL_TAB_PRIVS_MADE | 表示對象上的權(quán)限,用戶是屬主或授予者 |
ALL_TAB_PRIVS_RECD | 表示對象上的權(quán)限, 用戶是PUBLIC或被授予者 |
DBA_COL_PRIVS | 數(shù)據(jù)庫列上的所有授權(quán) |
DBA_ROLE_PRIVS | 顯示已授予用戶或其他角色的角色 |
DBA_SYS_PRIVS | 已授予用戶或角色的系統(tǒng)權(quán)限 |
DBA_TAB_PRIVS | 數(shù)據(jù)庫對象上的所有權(quán)限 |
ROLE_ROLE_PRIVS | 顯示已授予用戶的角色 |
ROLE_SYS_PRIVS | 顯示通過角色授予用戶的系統(tǒng)權(quán)限 |
ROLE_TAB_PRIVS | 顯示通過角色授予用戶的對象權(quán)限 |
SESSION_PRIVS | 顯示用戶現(xiàn)在可利用的所有系統(tǒng)權(quán)限 |
USER_COL_PRIVS | 顯示列上的權(quán)限,用戶是屬主、授予者或被授予者 |
USER_COL_PRIVS_MADE | 顯示列上已授予的權(quán)限,用戶是屬主或授予者 |
USER_COL_PRIVS_RECD | 顯示列上已授予的權(quán)限,用戶是屬主或被授予者 |
USER_ROLE_PRIVS | 顯示已授予給用戶的所有角色 |
USER_SYS_PRIVS | 顯示已授予給用戶的所有系統(tǒng)權(quán)限 |
USER_TAB_PRIVS | 顯示已授予給用戶的所有對象權(quán)限 |
USER_TAB_PRIVS_MADE | 顯示已授予給其他用戶的對象權(quán)限,用戶是屬主 |
USER_TAB_PRIVS_RECD | 顯示已授予給其他用戶的對象權(quán)限,用戶是被授予者 |