DML(데이터 조작어) 문 정보
DML(데이터 조작어) 문은 기존 테이블의 데이터에 액세스하여 데이터를 조작합니다.
SQL*Plus 환경에서는 SQL> 프롬프트 뒤에 DML 문을 입력할 수 있습니다.
SQL Developer 환경에서, 워크시트에 DML 문을 입력할 수 있습니다. 또는 SQL Developer Connections 프레임 및 툴을 사용하여 데이터에 액세스하고 조작할 수 있습니다.
SQL Developer에서 DML 문의 효과를 보려면 Connections 프레임에서 변경된 객체의 스키마 객체 유형을 선택한 다음 Refresh 아이콘을 눌러야 할 수 있습니다.
DML 문이 포함되어 있는 트랜잭션을 커밋해야 DML 문이 영구적으로 적용됩니다. 트랜잭션은 Oracle Database에서 하나의 단위(단일 DML 문이 될 수 있음)로 취급되는 SQL 문 시퀀스입니다. 트랜잭션이 커밋되기 전까지는 트랜잭션을 롤백(실행 취소)할 수 있습니다. 트랜잭션에 대한 자세한 내용은 "트랜잭션 제어 명령문 정보"를 참조하십시오.
참조: DML 문에 대한 자세한 내용은 Oracle Database SQL Language Reference를 참조하십시오.
INSERT 문 정보
INSERT 문은 기존 테이블에 행을 삽입합니다.
INSERT 문의 간단한 권장 양식에는 다음과 같은 구문이 있습니다.
INSERT INTO table_name (list_of_columns)
VALUES (list_of_values);
list_of_columns의 모든 열에는 list_of_values의 해당 위치에 적합한 값이 있어야 합니다. 따라서 테이블에 행을 삽입하기 전에 테이블에 어떤 열이 있으며 적합한 값이 무엇인지 알아야 합니다. SQL Developer를 사용하여 이 정보를 가져오려면 "자습서: SQL Developer를 사용하여 EMPLOYEES 테이블 속성 및 데이터 보기"를 참조하십시오. 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)
Example 3-1의 INSERT 문은 모든 열 값이 제공되고 있는 직원의 EMPLOYEES 테이블에 행을 삽입합니다.
테이블에 행을 삽입하기 위해 모든 열 값을 알 필요는 없지만 모든 NOT NULL 열의 값을 알아야 합니다. NULL이 될 수 있는 열의 값을 모르는 경우 list_of_columns에서 이 열을 생략할 수 있습니다. 기본값은 NULL입니다.
Example 3-2의 INSERT 문은 SALARY를 제외한 모든 열 값이 제공된 직원의 EMPLOYEES 테이블에 행을 삽입합니다. 현재로서는 SALARY의 값이 NULL일 수 있습니다. 급여를 알게 되면 UPDATE 문을 사용하여 변경할 수 있습니다(예제 3-4 참조).
Example 3-3의 INSERT 문은 LAST_NAME이 제공되지 않은 직원의 EMPLOYEES 테이블에 행을 삽입합니다.
예제 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")
참조:
-
INSERT 문에 대한 자세한 내용은 Oracle Database SQL Language Reference를 참조하십시오
-
데이터 유형에 대한 자세한 내용은 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.
참조:
-
UPDATE 문에 대한 자세한 내용은 Oracle Database SQL Language Reference를 참조하십시오
-
데이터 유형에 대한 자세한 내용은 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에 삽입된 행을 삭제합니다.
예제 3-6: DELETE 문 사용
DELETE FROM EMPLOYEES
WHERE HIRE_DATE = TO_DATE('01-JAN-07', 'dd-mon-yy');
결과:
2 rows deleted.
참조:
-
DELETE 문에 대한 자세한 내용은 Oracle Database SQL Language Reference를 참조하십시오
-
Oracle Database SQL Language Reference - DROP TABLE 문에 대한 자세한 내용