- INSERT, UPDATE, DELETE
테이블 데이터의 영향을 주는 QUERY
실수로 적용한 쿼리의 실행결과를 테이블로 바로 적용되지 않도록 방어해주는 최소한의 방어기재.
데이터 삽입
기본 문법
INSERT INTO [TABLE NAME] (
[COLUMN NAME],
[COLUMN NAME],[…]
) VALUES (
[DATA],
[DATA],
[…] // 각 컬럼 생략가능. 단, NULL을 지원하는 컬럼만 생략가능, 생략 안하는게 좋음
// PK 값은 중복되면 안된다.
// 타입에 맞게 넣어야한다.
)
간단 예시
-----------------INSERT 시작 -----------------
-- HR 회사에 신규 인력이 입사하였다.
-- 이름은 고미
-- 성은 홍
-- 이메일은 GOMIHONG
-- 연락처는 010-1111-2222
-- 입사일은 현재날짜(오늘)
-- 직무아이디 IT_PROG
-- 연봉 100000
-- 인센티브 : NULL
-- 상사의 사원 번호 : 100
-- 부서 번호 : 60
-- 위 인력을 EMPLOYEES 테이블에 넣어야 한다.
INSERT INTO EMPLOYEES (
EMPLOYEE_ID
, FIRST_NAME
, LAST_NAME
, EMAIL
, PHONE_NUMBER
, HIRE_DATE
, JOB_ID
, SALARY
, COMMISSION_PCT
, MANAGER_ID
, DEPARTMENT_ID)
VALUES (
208-- EMPLOYEE_ID --> PK값, 기존 데이터 값은 중복 안되기 때문에 없는 EMPLOYEE_ID로 적어줌
-- Oracle은 타입의 크기를 바이트로 계산
-- 영어, 숫자, 공백을 포함한 특수기호 1byte
-- 위의 케이스가 아닌 모든 문자들 : 3byte
, '고미'--, FIRST_NAME --> VARCHAR2(20) 20바이트
, '홍'--, LAST_NAME
, 'GOMIHONG'--, EMAIL
, '010-1111-2222'--, PHONE_NUMBER
, SYSDATE--, HIRE_DATE --> DATE 타입이지만 문자열로(DATE 타입만 2024-02-21)로 써도 가능함 Oracle Query Optimizer 가 해줌
, 'IT_PROG'--, JOB_ID
, 100000--, SALARY
, NULL--, COMMISSION_PCT
, 100--, MANAGER_ID
, 60)--, DEPARTMENT_ID
;
-- Oracle Query Optimizer 가
-- 값을 타입에 맞추어서 보정을 해준다. -> 하지만 성능 떨어지니 타입 맞춰서 적어주는게 좋음
-- '208'-- EMPLOYEE_ID 숫자타입인데 문자로 넣었을때 값이 숫자로 나옴
-- '208aa' 이건 문자타입이기 때문에 에러 남
체크되어있는 NOT NULL은 NULL값을 넣을 수 없다.
필수 입력값임
데이터 수정
기본 문법
UPDATE [TABLE NAME]
SET [CULUMN NAME] = [VALUE]
WHERE [CONDITIONS]
-- 103번 사원의 연봉을 10만으로 변경하고
-- 인센티브를 2.0으로 변경한다. --> 원래연봉 9000, 원래 인센티브 NULL
UPDATE EMPLOYEES
SET SALARY = 100000
, COMMISSION_PCT = 0.9
WHERE EMPLOYEE_ID = 103
;
commit;
COMMIT; 을 꼭 해줘야 테이블에 반영된다.
데이터 삭제
기본문법
DELETE
FROM [TABLE NAME]
WHERE [CONDITIONS]
-- DELETE --
DELETE
FROM EMPLOYEES
WHERE EMPLOYEE_ID = 207
;
DELETE
FROM DEPARTMENTS
WHERE DEPARTMENT_ID = 300
;
COMMIT;
COMMIT; 을 꼭 해줘야 테이블에 반영된다.