(Database Programming) 데이터 삽입, 수정, 삭제

soosoorim·2024년 2월 21일
0
  • INSERT, UPDATE, DELETE

테이블 데이터의 영향을 주는 QUERY
실수로 적용한 쿼리의 실행결과를 테이블로 바로 적용되지 않도록 방어해주는 최소한의 방어기재.

  • MANUAL TRANSACTION
    TRANSACTION - COMMIT, ROLLBACK
    -- COMMIT: INSERT, UPDATE, DELETE 쿼리의 결과를
    -- ROLLBACK: INSERT, UPDATE, DELETE 쿼리의 결과를 취소
    -- MANUAL TRANSACTION이 적용된 상태에서,
    INSERT, UPDATE, DELETE를 수행하면 COMMIT을 하기 전까지는 테이블에 적용되지 않는다.
    -- AUTO TRANSACTION : INSERT, UPDATE, DELETE를 수행하면 즉시 테이블에 적용.

데이터 삽입

기본 문법

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; 을 꼭 해줘야 테이블에 반영된다.

  • WHERE절을 입력하지 않으면 모든 데이터가 수정될 수 있다.
  • Constraint(관계형성)가 있는 컬럼을 수정할 때는 때에 따라 변경이 되지 않을 수 있다.

데이터 삭제

기본문법

DELETE
 FROM [TABLE NAME]
WHERE [CONDITIONS]
-- DELETE --
DELETE 
  FROM EMPLOYEES
 WHERE EMPLOYEE_ID = 207
;

DELETE 
  FROM DEPARTMENTS 
 WHERE DEPARTMENT_ID = 300
;

COMMIT;

COMMIT; 을 꼭 해줘야 테이블에 반영된다.

  • WHERE절을 입력하지 않으면 모든 데이터가 수정될 수 있다.
  • Constraint(관계형성)가 있는 컬럼을 수정할 때는 때에 따라 변경이 되지 않을 수 있다.

0개의 댓글

관련 채용 정보