쿼리 4-3을 실행해 봅시다. SQL Developer 창에서 쿼리를 입력하고 F5 키를 누릅니다. 오라클에서는 SQL 문장 다음에 세미콜론(;)을 입력하면 한 문장이 끝났다는 표시로, 쿼리 4-3은 총 3개의 문장으로 구성되어 있습니다. F5 키를 누르면 세 문장을 순서대로 모두 실행해 주며, 한 문장이 정상적으로 끝날 때마다 “1 행 이(가) 삽입되었습니다.”라는 메시지가 출력됩니다.
컬럼 순서와 데이터형에 맞춰 값을 제대로 입력했다면 INSERT 문장은 정상적으로 실행됩니다. 여기서 두 가지만 짚고 넘어가죠. 첫째, emp03 테이블에는 etc 컬럼이 있는데 이번에는 이 컬럼에 데이터를 넣지 않았습니다. 2장에서 설명했던 것처럼 etc 컬럼은 NULL 허용 컬럼이므로 데이터를 넣지 않아도 됩니다. 둘째, 마지막 INSERT 문장에서 ‘신사임당’의 성별을 ‘남성’으로 넣었는데, 아무런 경고 없이 데이터가 잘 들어갔습니다. ‘신사임당은 여자인데 남성으로 넣어도 데이터가 입력되나?’라는 의문이 들 것입니다. 물론 가능합니다. 오라클은 신사임당이 남성인지 여성인지 알지 못합니다. 오라클은 DBMS 측면에서 규칙에 위배되지만 않으면 아무 불평 없이 우리가 명령한 INSERT 문을 실행합니다.
그럼 오라클이 체크하는 규칙이란 무엇일까요? 여기에서는 두 가지 규칙이 적용됩니다. NOT NULL 컬럼에 데이터를 넣지 않은 경우와 기본 키가 설정된 컬럼에 중복된 데이터를 넣은 경우에는 오류를 반환하며 입력 작업을 취소합니다. emp03 테이블에서 NOT NULL이면서 유일 키가 있는 컬럼은 기본 키 컬럼인 emp_id입니다. 따라서 이 컬럼에 값을 넣지 않거나 중복된 값을 입력하면 오류가 발생합니다. 직접 확인해 보도록 하죠.
쿼리 4-4 EMP_ID 컬럼에 값을 넣지 않는 경우
INSERT INTO emp03 ( emp_name, gender, age, hire_date ) VALUES ( '세종대왕', '남성', 44, '2018-01-01' );