06-1. 테이블에 데이터 추가하기
- 테이블 생성하기
CREATE TABLE DEPT_TEMP AS SELECT * FROM TEMP;
CREATE문은 오라클의 구성 요소, 즉 오브젝트를 만드는 데 사용하는 명령어이다.
AS SELECT를 통하여 기존 TEMP 테이블의 모든 열과 데이터를 복사해서 생성했다. - INSERT문 실습 전 유이점
DROP TABLE 테이블 이름;
테이블을 잘못 만들었을 때 삭제하는 명령어이다.
만약 실습 중 프로그램을 종료한다면 경고 창이 뜨는데 [Commit] 버튼을 클릭하고 끝내면 된다. - 테이블에 데이터를 추가하는 INSERT문
INSERT INTO 테이블이름 [(열1, 열2, ... , 열N)] VALUES(열1에 들어갈 데이터, 열2에 들어갈 데이터, ... , 열N에 들어갈 데이터);
< INSERT INTO와 VALUES의 정의 >
키워드 필수 요소 선택 요소 설명 INSERT INTO 테이블 이름 테이블의 열 새로운 데이터를 입력할 대상 테이블과 열을 입력한다. VALUES 입력할 데이터 - INSERT INTO에서 지정한 테이블의 열 순서와 자료형에 맞는 입력 데이터를 지정한다.
만약 INSERT문에서 지정한 열 개수와 각 열에 입력할 데이터 개수가 일치하지 않거나 자료형이 맞지 않는 경우
또는 열 길이를 초과하는 데이터를 지정하는 경우에는 INSERT문에 오류가 발생하여 실행되지 않는다. - 테이블에 NULL 데이터 입력하기
INSERT문으로 새로운 데이터를 추가할 때 특정 열에 들어갈 데이터가 확정되지 않았거나
굳이 넣을 필요가 없을 때 NULL을 사용한다.
공백 문자열을 사용해도 NULL값을 입력할 수 있다.
INSERT INTO DEPT_TEMP(DEPTNO, DNAME, LOC) VALUES(70, 'WEB', NULL); INSERT INTO DEPT_TEMP(DEPTNO, DNAME, LOC) VALUES(70, 'WEB', '');
그러므로 위 두 코드는 같은 값이 입력된다. - 테이블에 날짜 데이터 입력하기
INSERT문에서는 YYYY / MM / DD 또는 YYYY-MM-DD형식으로 날짜데이터를 입력할 수 있다.
INSERT INTO EMP_TEMP(EMPNO, ENAME, HIREDATE) VALUES(1111, 홍길동, '2001/01/05'); INSERT INTO EMP_TEMP(EMPNO, ENAME, HIREDATE) VALUES(1111, 홍길동, '2001-01-05');
이 또한 두 코드는 같은 값이 입력된다.
TO_DATE 함수를 사용하면 일/월/연도 순으로 넣을 수 있고,
SYSDATE를 사용한다면 현재 날짜와 시간을 함께 출력할 수 있다. - 서브 쿼리를 사용하여 한번에 여러 데이터 추가하기
INSERT INTO EMP_TEMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, E.HIREDATE, E.SAL, E.COMM, E.DEPTNO FROM EMP E, SALGRADE S WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL AND S.GRADE=1;
EMP테이블에서 SALGRADE 테이블을 참조하여 S.GRADE가 1인 데이터만 테이블에 넣고 싶다면
다음과 같이 사용하면 된다.
06-2. 테이블에 있는 데이터 수정하기
- UPDATE문의 기본 사용법
UPDATE문은 키워드 이후에 변경할 테이블 이름을 지정하고 SET절에 '변경할 열이름=변경할 데이터'를 지정한다.
UPDATE [변경할 테이블] SET [변경할 열1]=[데이터], [변경할 열2]=[데이터], ... , [변경할 열N]=[데이터] [WHERE 데이터를 변경할 대상 행을 선별하기 위한 조건];
< UPDATE문의 정의 >
키워드 필수 요소 선택 요소 설명 UPDATE 테이블 이름 - 데이터를 수정할 테이블을 지정합니다. SET 변경할 열의 이름과 데이터 - 변경할 열을 선택하고 변경할 데이터를 입력합니다. WHERE - 변경 데이터를 선별하기 위한 조건식 테이블의 변경할 데이터 선별 조건식을 지정한다.
생략할 경우 테이블 내 지정된 모든열의 데이터가 변경된다. - 데이터 전체 수정하기
UPDATE DEPT_TEMP2 SET LOC='SEOUL';
위 코드를 통해 DEPT_TEMP2 테이블의 LOC열을 모두 'SEOUL'로 바꿀 수 있다. - 수정한 내용을 되돌리고 싶을 때
ROLLBACK;
ROLLBACK 명령문을 사용한다면 실수로 UPDATE문을 실행했을 때
UPDATE 명령어를 실행한 이전 상태로 돌아간다. - 데이터 일부분만 수정하기
UPDATE DEPT_TEMP2 SET DNAME = 'DATABASE', LOC='SEOUL' WERE DEPTNO=40;
수정 대상 행을 선별하기 위해 WHERE절과 조건식을 사용해서
DEPTNO열이 40인 값들만 SET 이후의 값으로 변경할 수 있다. - 서브쿼리를 사용하여 데이터 수정하기
UPDATE DEPT_TEMP2 SET (DNAME, LOC) = (SELECT DNAME, LOC FROM DEPT WHERE DEPTNO=40) WHERE DEPTNO=40;
위 코드를 통해 DEPT테이블의 DEPTNO가 40인 행들을 조회하고 DEPT_TEMP2에 반영시킨다. - UPDATE를 사용할 때 유의점
UPDATE문과 DELETE문은 테이블에 이미 존재하는 데이터를 수정하거나 삭제하는 기능을 수행한다.
그러므로 수정 혹은 삭제되면 안되는 데이터가 처할 위험성이 크다고 볼 수 있다.
따라서 실행전에 UPDATE문의 WHERE절을 검증하는 작업이 반드시 필요하다.
이를 위해 해당 WHERE절을 SELECT문에서 먼저 사용해 보는 것으로 방지한다.
06-3. 테이블에 있는 데이터 삭제하기
DELETE문은 테이블에 있는 데이터를 삭제할 때 사용한다.
DELETE FROM [테이블 이름]
[WHERE 삭제할 대상 행을 선별하기 위한 조건식];
< DELETE문의 정의 >
| 키워드 | 필수 요소 | 선택 요소 | 설명 |
| DELETE | 테이블 이름 | FROM | 데이터를 삭제할 테이블을 지정한다. |
| WHERE | - | 삭제 데이터를 선별하는 조건식 | 테이블의 삭제할 데이터를 선별하는 조건식을 지정한다. 생략할 경우 테이블의 모든 데이터를 삭제한다. |
- 데이터 일부분만 삭제하기
DELETE FROM EMP_TEMP2 WHERE JOB='MANAGER';
위 코드를 통해 JOB열이 'MANAGER'인 행만 삭제할 수 있다. - 서브쿼리를 사용하여 데이터 삭제하기
DELETE FROM EMP_TEMP2 WHERE EMPNO IN (SELECT E.EMPNO FROM EMP_TEMP2 E, SALGRADE S WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL AND S.GRADE=3 AND DEPTNO=30);
S.GRADE가 3등급이고 DEPTNO가 30인 행들만 삭제해야한다면 위 서브쿼리를 사용한 코드를 통해
일부만 삭제할 수 있다. - 데이터 전체 삭제하기
DELETE FROM EMP_TEMP2;
위 코드처럼 삭제 대상 데이터를 특정 짓지 않게 되면 해당 테이블의 모든 데이터를 지울 수 있다.
DELETE문 또한 WHERE절을 먼저 SELECT문에서 사용하여 검증을 거친 후에 실행하는 것이 좋다.
2024.07.30
'SQL(Oracle) > Oracle기초정리(오라클로 배우는 데이터베이스 입문)' 카테고리의 다른 글
| [Oracle기초정리] 05. 데이터 처리와 가공을 위한 오라클 함수 (0) | 2024.07.29 |
|---|---|
| [Oracle기초정리] 04. 더 정확하고 다양하게 결과를 출력하는 WHERE절과 연산자 (0) | 2024.07.28 |
| [Oracle기초정리] 03. SELECT문의 기본 형식 (0) | 2024.07.28 |
| [Oracle기초정리] 02. 관계형 데이터베이스와 오라클 데이터베이 (5) | 2024.07.27 |
| [Oracle기초정리] 01. 데이터베이스 (0) | 2024.07.27 |