데이터 조작어(DML)
는 테이블에 새로운 데이터를 삽입하거나 기존의 데이터를 수정 및 삭제하기 위한 명령어의 집합이다.
테이블에 내용을 추가하는 INSERT문
테이블에 데이터를 입력하기 위한 명령어
--문법
INSERT INTO table_name
(column_name1,..., column_namaN) //콜럼이름은 생략 가능
VALUES(column_value1,..., column_valueN);
- 한 번에 하나의 로우만 INTO 다음에 명시한 테이블에 삽입한다.
- 테이블 명 다음에 기술한 칼럼에 VALUES 절에서 지정한 컬럼 값을 순서대로 입력한다.
- INTO 절에 칼럼을 명시하지 않으면 테이블을 생성할 때 정의한 컬럼 순서와 동일한 순서대로 VALUES 이하의 값이 입력되기 때문에 테이블에. 존재하는 모든 칼럼에 대해서 값을 모두 지정해야 한다.
- 입력되는 데이터 타입은 칼럼의 데이터 타입과 동일해야 하며 입력되는 데이터 크기는 컬럼의 크기보다 작거나 동일해야 한다.
- 삽입할 컬럼의 데이터 타입이 문자와 날짜일 경우에는 반드시 작은따옴표(' ')를 사용해야 함을 유의
**
빈테이블에 내용 추가 하기
컬럼명 명시 안 했을 때 문법
--ACCOUNTING 부서의 정보 입력하기(컬럼명 명시 안했을 때)
INSERT INTO dept_copy
VALUES(10, 'ACCOUNTING','NEW YORK');
결과
SELECT *
FROM dept_copy;
로 값을 확인해보면
순서에 맞게 값이 잘 들어갔다.
컬럼명 명시했을 때 문법
--RESEARCH 부서의 정보 입력하기(컬럼명 명시했을 때)
INSERT INTO dept_copy
(dno, dname, loc) --당연히 콜럼이름에 맞춰서 값순서, 갯수를 1대1로 맞춰줘야한다.
VALUES(20, 'RESEARCH','DALLAS');
마찬가지로
1행씩 삽입되며 삽입 후 결과를 확인해보면
값이 잘 들어갔음을 볼 수 있다.
NULL 값을 갖는 로우 삽입
데이터를 입력하는 시점에서 해당 칼럼 값을 모르거나 확정되지 않았을 경우에는 칼럼의 값으로 NULL을 입력한다.
**
--명시적으로 NULL값 사용하기
INSERT INTO dept_copy
(dno, dname, loc)
VALUES(30,'OPERATION', NULL);
--공백문자사용하기
INSERT INTO dept_copy
VALUES (50, 'COMPUTING', ''); --공백에 NULL 값이 삽입된다
COMMIT;
만약 테이블을 생성할 때 NOT NULL 값을 디폴트 값으로 설정했다면 NULL값은 입력되지 않고, 설정을 다시 해야한다.
다른 테이블에서 데이터 복사하기
INSERT INTO table[(column1,..., columnN)]
SUBquery;
INSERT 절의 칼럼수와 쿼리의 칼럼수가 일치해야 한다.
**
INSERT INTO dept_copy
SELECT *
FROM department;
테이블의 내용을 수정하는 UPDATE문
테이블에 저장된 데이터를 수정하기 위한 DML
WHERE 절을 생략하면 테이블에 있는 모든 행이 수정된다.
UPDATE table_name
SET column_name1=value1,...,column_nameN=valueN
WHERE conditions;
**
다음과 같은 결과 값을 가지고 있는 테이블에서 특정 로우면 수정하고 싶다면
--특정 로우만 수정하기
UPDATE dept_copy
SET dname='PROGRAMING'
WHERE dno=10;
라는 결과가 나오고 내용을 확인해보면
DNO=10 의 DNAME 값이 바뀐 것을 볼 수 있다.
모든 로우를 수정하고 싶다면 WHERE절을 생략하면 되고
--모든 로우 수정하기
UPDATE dept_copy
SET dname='HR';
1행이 아닌 모든 행이 다 업데이트 된 것을 확인 할 수 있다.
내용을 확인해보면
모든 DNAME 값이 수정 된 것을 볼 수 있다.
여러 값을 수정하고 싶다면 콤마(,)로 구분한다.
--여러개 한번에 수정하기
UPDATE dept_copy
SET dname='PROGRAMMING' , loc='SEOUL'
WHERE dno=10;
서브 쿼리 이용하기
--10번 부서의 지역명을 20번 부서의 지역명으로 변경하기
UPDATE dept_copy
SET loc = (
SELECT loc
FROM dept_copy
WHERE dno=20
)
WHERE dno=10;
테이블의 내용을 삭제하는 DELETE 문
테이블에서 기존에 저장되어 있던 데이터를 삭제
DELETE [FROM] table_name
WHERE conditons;
**
--특정 로우만 삭제하기
DELETE dept_copy
WHERE dno=10;
--모든 로우 삭제하기
DELETE dept_copy;
서브 쿼리 이용하기
--영업부에 근무하는 사원삭제
DELETE emp_copy
WHERE dno=(
SELECT dno
FROM department
WHERE dname='SALES'
);
[2020/04/21-화요일(28일 차)]
'DataBase' 카테고리의 다른 글
[Oracle]데이터 무결성 제약 조건 (0) | 2020.04.22 |
---|---|
[Oracle]트랜잭션(Transaction) 관리 (0) | 2020.04.22 |
[Oracle] 데이터 사전 (0) | 2020.04.21 |
[Oracle]테이블에 별칭 사용하기 (0) | 2020.04.16 |
[Oracle]다양한 함수4-공백 채우기 LPAD, RPAD 함수/ TRIM함수 (0) | 2020.04.12 |
댓글