본문 바로가기

데이터베이스/ORACLE

2. INSERT / DROP/ DELETE

1. 자료입력

  • 생성된 테이블에 새로운 자료를 삽입하는 명령

(사용형식)

INSERT INTO 테이블명[(컬럼명1,컬럼명2,...)]
  VALUES(값1, 값2,...);

⇒ '컬럼명'과 '값'의 갯수와 순서, 데이터 타입이 일치해야 한다
⇒ '(컬럼명1,컬럼명2,...)'을 기술하는 경우 컬럼속성이 'NOT NULL'인 경우 '컬럼명'을 생략할 수 없다
    (컬럼속성이 'NOT NULL'이 아닌 경우 '컬럼명'을 생략할 수 있으며 해당 컬럼에 배정되는 '값'도 생략해야 한다.
⇒ '(컬럼명1,컬럼명2,...)'이 생략되면 테이블에 기술된 컬럼 순서와 갯수만큼 '값'을 기술해야한다.

 

예제) 사원테이블에 다음 자료를 입력하시오

[자료]
사원ID  201703010003              200908050012              202001050001
사원명   홍길동                     이미나                     강감찬
주소    대전시 중구 대흥동           대전시 유성구 봉명동          서울시 성북구 장위동
전화번호 010-1234-5678             042-234-6789              010-0987-1234
직무명   구매                       관리                      설계
부서명   총무부                     인사부                     개발부
INSERT INTO EMP
 VALUES('201703010003','홍길동','대전시 중구 대흥동',
        '010-1234-5678','구매','총무부');
        
INSERT INTO EMP(EMP_ID,ADDRESS,EMP_NAME,JOB_TITLE)
 VALUES('200908050012','대전시 유성구 봉명동','이미나','관리');       
 
INSERT INTO EMP (EMP_ID,EMP_NAME,ADDRESS,TEL_NUM,JOB_TITLE,DEPT_NAME)
 VALUES('202001050001','강감찬','서울시 성북구 장위동',
        '010-0987-1234','설계','개발부');
 
UPDATE EMP
   SET TEL_NUM='042-234-6789',
       DEPT_NAME='인사부'
 WHERE EMP_ID='200908050012';
 
 
 SELECT * FROM EMP; 
 COMMIT;
 ROLLBACK;

 

2. INSERT 문 (CONT....)

예제 ) 사업장테이블(CONST_SITE)에 다음자료를 삽입하시오

[자료]
사업장번호 : W1001
사업장명 : 다살아신축아파트 공사
사업장주소 : 대전시 대덕구 법동 345-10
사업장전화번호 : 042-6667-8889
공사금액 : 
투입인원 : 3,456명
시공일자 : 오늘날짜
예상완공일 : 
완공일자 : 
비고 : 공사중
INSERT INTO CONST_SITE(SITE_ID,SITE_NAME,SITE_ADDRESS,SITE_TEL_NUM,
                       INPUT_PERSON_AMT,REMARKS)
       VALUES('W1001', '다살아아파트','대전시 대덕구 법동 345-10','042-6667-8889', 3456, '0');

⇒ NOT NULL 인것은 반드시 들어가야한다. 컬럼명을 쓸때 생략되어질수 없다.
⇒ 나머지는 NULLALB 이기때문에 생략되어질수있다. 컬럼명을 기술하지 않아도된다.
⇒ 테이블 설계시의 컬럼과 이름이 똑같이 해야한다.

⇒ STIE_NAME을 20BYTE로 잡아놧는데 크기가 넘어가면 변경해줘야한다.
⇒ 한글은 글자당 3BYTE
⇒ VARCHAR(50)한것을 30만썻다하면 VARCHAR2는 20은 반납하게된다.

⇒ NUMBER(정수자리수, 소수자리수)
⇒ 숫자는 ' '를 붙이지 않는다.
⇒ 비고는 0으로 공사중표현

⇒ 순서를 확인한다.

⇒ DEFAULT가 SYSDATE라서 넣지않아도 오늘날자가 들어간다.
⇒ NULLABLE 인데 DEFAULT 값을 정의하지않으면 무조건 NULL이들어간다
⇒ 공사금액은 DEFAULT값이 0으로되어있어 입력하지않으면 0으로저장된다.

 

예제) 근무테이블(WORK) '이미니'사원정보를 입력하시오

사원번호 : '200908050012'
사업장ID : 'W1001'
근무시작일 : 오늘
근무종료일 : 모름
직무 : 관리

⇒ JOB_TITLE이 여러 테이블에 걸쳐있다.
   한곳에서만 변경되면 업데이트어노말리가 발생 데이터의 일관성이 파괴될수있다.
⇒ 칼럼은 다쓸꺼라 바로 VALUES. 테이블생성시 입력한 컬럼의 순서대로 데이터를 입력해준다.
⇒ 모르는값은 ' '로 입력한다 WHITE SPACE = NULL값으로 처리된다. 오라클에서만

INSERT INTO WORK VALUES('W1001','200908050012',SYSDATE,'관리','');

 

3. DROP ( 개체삭제 )

  • 오라클 개체 삭제 명령
  • ROLLBACK의 대상이 아님 (삭제는 ROLLBACK의 대상이 아니다)

(사용형식)

DROP 개체종류 개체명;

 

예제) EMP 테이블을 제거하시오

DROP TABLE EMP;

⇒ 실행하면 삭제가 되지않는다.

⇒ 오류 : An attempt was made to drop a table with unique or primary keys referenced by foreign keys in another table.

⇒ 방법1. 연관되어있는 하위 테이블부터 드롭시키고 관계가 모두 짤린다음에 드롭시킬수있다
⇒ 방법2. 드롭으로 왜래키설정을 지워서 관계를 자르고 드롭시킬수있다.
⇒ 방법3. 리커시블, 관계를 맺고있는 하위의 테이블 부터 모두 지워버린다. (쓰지말아야함)

⇒ 같은 컬럼은 DATA_TYPE 과 수까지 같아야한다. 공백도 안됨.

 

4. DELETE ( 테이블 내의 자료 삭제 )

  • DELETE 문 사용
  • 외부테이블에서 참조된 행을 삭제 불가
  • ROLLBACK이 적용됨 ⇒ 직전의 COMMIT 상태로 돌아감

⇒ WORK 테이블에서 이미나는 삭제가능 EMP 에서 이미나는 삭제불가능 WORK테이블에 참조되고있어서
⇒ 부모테이블의 참조되어지는 행은 삭제가 불가능하다.

(사용형식)

DELETE 테이블명 
 [WHERE 조건];
 . WHERE 절이 생략되면 '테이블'의 모든자료 삭제

 

예제) 사원테이블에서 '이미나'사원정보를 제거하시오

DELETE EMP
 WHERE EMP_NAME='이미나';

⇒ 삭제되지 않는다 integrity constraint (HJG.FK_WORK_EMP) violated - child record found
⇒ WORK에서 참조하고 있기 때문에 삭제되지 않는다.

예제) 사원테이블에서 '강감찬'사원정보를 제거하시오

DELETE EMP
 WHERE EMP_NAME='강감찬';

⇒ 삭제가 된다.

SELECT * FROM EMP;

⇒ 강감찬이 삭제된것을 확인할 수 있다.

ROLLBACK;

⇒ 삭제되었던 것을 다시 되돌린다.
⇒ DROP, CREATE 는 롤백적용이안된다.

DROP TABLE WORK;

⇒ WORK TABLE이 삭제됨

ROLLBACK;

⇒ 롤백이 되지않는다.
⇒ WORK TABLE을 삭제했기때문에 EMP CONST_SITE 모두 삭제할수 있다.
⇒ 참조중인것을 삭제했기 때문에

 

insert_into.sql
0.00MB
1._insert_delete.sql
0.00MB

'데이터베이스 > ORACLE' 카테고리의 다른 글

6. 숫자형 ( NUMBER )  (0) 2021.03.15
5. 문자열 ( VARCHAR, CLOB )  (0) 2021.03.15
4. SQL명령 / 자료형 ( CHAR )  (0) 2021.03.15
3. ALTER  (0) 2021.03.15
1. CREATE TABLE  (0) 2021.03.15