關於資料處理語言 (DML) 敘述句
資料處理語言 (DML) 陳述式存取並處理現有表格中的資料。
在 SQL*Plus 環境中,您可以在 SQL> 提示之後輸入 DML 敘述句。
在 SQL Developer 環境中,您可以在「工作表」中輸入 DML 敘述句。或者,您也可以使用 SQL Developer Connections 框架和工具來存取和操作資料。
若要在 SQL Developer 中查看 DML 陳述式的效果,您可能需要在「連線」框架中選取變更物件的結構描述物件類型,然後按一下「重新整理」圖示。
DML 敘述句的效果要到您確認包括它的交易之後才會變成永久。交易是 Oracle Database 視為一個單位的一系列 SQL 敘述句 (可以是單一 DML 敘述句)。交易要確認之後才可以倒回 (還原)。如需有關交易的詳細資訊,請參閱「關於交易控制對帳單」。
另請參閱:Oracle Database SQL Language Reference,瞭解 DML 敘述句的詳細資訊
關於 INSERT 敘述句
INSERT 陳述式會將列插入現有的表格。
INSERT 敘述句建議的最簡單格式具有下列語法:
INSERT INTO table_name (list_of_columns)
VALUES (list_of_values);
list_of_columns 中的每個資料欄在 list_of_values 的對應位置中都必須有一個有效值。因此,在您將資料列插入表格之前,必須知道表格有什麼資料欄,以及有效值為何。要使用 SQL Developer 取得此資訊,請參見「教學課程:檢視 EMPLOYEES 表格屬性與資料 (SQL Developer) 」。若要使用 SQL*Plus 取得此資訊,請使用 DESCRIBE 敘述句。舉例而言:
DESCRIBE EMPLOYEES;
結果:
Name Null? Type
----------------------------------------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
範例 3-1 中的 INSERT 陳述式會為已知所有欄值的員工,將列插入 EMPLOYEES 表。
您不需知道所有欄值,才能將列插入表格中,但必須知道所有「非空值」欄的值。如果您不知道可以為空值的資料欄值,可以從 list_of_columns 省略該資料欄。其值預設為 NULL。
範例 3-2 中的 INSERT 敘述句會將一列插入員工的 EMPLOYEES 表格中,除了 SALARY 之外,所有資料欄值都是已知的。現在,SALARY 的值可以是 NULL。當您知道薪資時,可以使用 UPDATE 陳述式來變更薪資 (請參閱範例 3-4)。
範例 3-3 中的 INSERT 敘述句會嘗試將一列插入員工的 EMPLOYEES 表格中,其中 LAST_NAME 不明。
範例 3-1 當所有資訊都可用時使用 INSERT 陳述式
INSERT INTO EMPLOYEES (
EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
EMAIL,
PHONE_NUMBER,
HIRE_DATE,
JOB_ID,
SALARY,
COMMISSION_PCT,
MANAGER_ID,
DEPARTMENT_ID
)
VALUES (
10, -- EMPLOYEE_ID
'George', -- FIRST_NAME
'Gordon', -- LAST_NAME
'GGORDON', -- EMAIL
'650.506.2222', -- PHONE_NUMBER
'01-JAN-07', -- HIRE_DATE
'SA_REP', -- JOB_ID
9000, -- SALARY
.1, -- COMMISSION_PCT
148, -- MANAGER_ID
80 -- DEPARTMENT_ID
);
結果:
1 row created.
範例 3-2 當非所有資訊皆可用時使用 INSERT 陳述式
INSERT INTO EMPLOYEES (
EMPLOYEE_ID,
FIRST_NAME,
LAST_NAME,
EMAIL,
PHONE_NUMBER,
HIRE_DATE,
JOB_ID, -- Omit SALARY; its value defaults to NULL.
COMMISSION_PCT,
MANAGER_ID,
DEPARTMENT_ID
)
VALUES (
20, -- EMPLOYEE_ID
'John', -- FIRST_NAME
'Keats', -- LAST_NAME
'JKEATS', -- EMAIL
'650.506.3333', -- PHONE_NUMBER
'01-JAN-07', -- HIRE_DATE
'SA_REP', -- JOB_ID
.1, -- COMMISSION_PCT
148, -- MANAGER_ID
80 -- DEPARTMENT_ID
);
結果:
1 row created.
範例 3-3 使用不正確的 INSERT 陳述式
INSERT INTO EMPLOYEES (
EMPLOYEE_ID,
FIRST_NAME, -- Omit LAST_NAME (error)
EMAIL,
PHONE_NUMBER,
HIRE_DATE,
JOB_ID,
COMMISSION_PCT,
MANAGER_ID,
DEPARTMENT_ID
)
VALUES (
20, -- EMPLOYEE_ID
'John', -- FIRST_NAME
'JOHN', -- EMAIL
'650.506.3333', -- PHONE_NUMBER
'01-JAN-07', -- HIRE_DATE
'SA_REP', -- JOB_ID
.1, -- COMMISSION_PCT
148, -- MANAGER_ID
80 -- DEPARTMENT_ID
);
結果:
ORA-01400: cannot insert NULL into ("HR"."EMPLOYEES"."LAST_NAME")
另請參閱:
-
Oracle Database SQL Language Reference,瞭解 INSERT 敘述句的相關資訊
-
Oracle Database SQL Language Reference,瞭解資料類型的相關資訊
關於 UPDATE 敘述句
UPDATE 陳述式會更新 (變更現有表格列集合的值)。
UPDATE 陳述式的簡單形式具有下列語法:
UPDATE table_name
SET column_name = value [, column_name = value]...
[ WHERE condition ];
每個值必須對其 column_name 有效。如果包含 WHERE 子句,敘述句只會更新滿足條件之列中的欄值。
範例 3-4 中的 UPDATE 敘述句會在已知員工薪資之前,更新插入範例 3-2 中 EMPLOYEES 表格之資料列中 SALARY 資料欄的值。
範例 3-5 中的 UPDATE 陳述式會更新部門 80 中每位員工的佣金百分比。
範例 3-4 使用 UPDATE 陳述式來新增資料
UPDATE EMPLOYEES
SET SALARY = 8500
WHERE LAST_NAME = 'Keats';
結果:
1 row updated.
範例 3-5 使用 UPDATE 陳述式來更新多個列
UPDATE EMPLOYEES
SET COMMISSION_PCT = COMMISSION_PCT + 0.05
WHERE DEPARTMENT_ID = 80;
結果:
34 rows updated.
另請參閱:
-
Oracle Database SQL Language Reference,瞭解 UPDATE 敘述句的相關資訊
-
Oracle Database SQL Language Reference,瞭解資料類型的相關資訊
關於 DELETE 敘述句
DELETE 陳述式會刪除表格中的列。
DELETE 陳述式的簡單格式具有下列語法:
DELETE FROM table_name [ WHERE condition ];
如果包含 WHERE 子句,陳述式只會刪除滿足條件的列。如果您省略 WHERE 子句,該敘述句就會刪除表格中的所有資料列,但空白表格仍然存在。若要刪除表格,請使用 DROP TABLE 陳述式。
範例 3-6 中的 DELETE 敘述句會刪除範例 3-1 和範例 3-2 中插入的資料列。
使用 DELETE 敘述句的範例 3-6
DELETE FROM EMPLOYEES
WHERE HIRE_DATE = TO_DATE('01-JAN-07', 'dd-mon-yy');
結果:
2 rows deleted.
另請參閱:
-
Oracle Database SQL 語言參照,瞭解 DELETE 敘述句的相關資訊
-
Oracle Database SQL Language Reference,瞭解 DROP TABLE 敘述句的相關資訊