Oracle 4강 - INSERT문

Whatever·2021년 9월 9일
0

기초 ORACLE

목록 보기
3/27

테이블

외래키 설정할 때 부모테이블은 이미 만들어져 있어야 함.
외래키가 없다 = 부모테이블이 없다.
기본키만 있고 외래키가 없는 엔터티 : 핵심 엔터티(부모가 없이 태어나는 엔터티, key entity)
다른 엔터티에 의해 생성되는 엔터티 : 종속 엔터티

Import : 엑셀에서 오라클로 데이터를 가져올 때 쓰는 명령어

2021-0909-01)
사용예)사업장 테이블을 생성하시오
테이블명:CONST_SITE(사업장)

   --------------------------------------------------------------
   컬럼명         데이터타입       크기     NULLABLE     PK/FK
   --------------------------------------------------------------
   CONST_ID       CHAR             8          N.N     PK  ==> 기본키라서 N.N은 생략가능
   CONST_NAME     VARCHAR2        50          N.N          
   CONST_ADDR     VARCHAR2       100
   CONST_TEL_NUM  VARCHAR2        20
   REMARKS        VARCHAR2       200
   --------------------------------------------------------------
  

답)

CREATE TABLE CONST_SITE(
CONST_ID CHAR(8) NOT NULL,(생략가능 - 기본키니까)
CONST_NAME VARCHAR2(50) NOT NULL,
CONST_ADDR VARCHAR2(100),
CONST_TEL_NUM VARCHAR2(20),
REMARKS VARCHAR2(200),

 CONSTRAINT pk_const_site PRIMARY KEY(CONST_ID)
)

사용예)사업장 테이블을 생성하시오
테이블명:TBL_WORKS(근무)

   ----------------------------------------------------------
   컬럼명         데이터타입       크기     NULLABLE     PK/FK
   ----------------------------------------------------------
   EMP_ID         CHAR            5                   PK&FK
   CONST_ID       CHAR            8                   PK&FK
   SDATE          DATE        Default SYSDATE   
   --투입일자, DATE타입은 길이를 갖지 않음. / SYSDATE : 시스템에서 제공해주는 날짜
   EDATE          DATE        
   -----------------------------------------------------------
   

답)

CREATE TABLE TBL_WORKS(
EMP_ID CHAR(5),
CONST_ID CHAR(8),
SDATE DATE SYSDATE,
EDATE DATE,

 CONSTRAINT pk_tbl_works PRIMARY KEY(EMP_ID, CONST_ID), ---기본키는 두 개 동시 기술 가능
 CONSTRAINT fk_tbl_emp FOREIGN KEY(EMP_ID) ---emp 테이블을 참조한 work 테이블의 외래키
  REFERENCES EMPLOYEE(EMP_ID),
 CONSTRAINT fk_tbl_site FOREIGN KEY(CONST_ID)  -- 자기테이블에서 사용되는 컬럼명 기재
  REFERENCES CONST_SITE(CONST_ID)  ---- 부모테이블에서 사용되는 컬럼명 기재

)
  1. INSERT문
  • 생성된 테이블에 새로운 자료를 삽입

(사용형식)

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

. '(컬럼명1, 컬럼명2,...)' : 컬럼명을 생략하면 테이블 생성 시 기술한 순서와 모든 컬럼에 배정될 값(데이터)을 VALUES절에 기술해야 한다.
=> 값을 입력할 때 값이 없으면 null을 입력하면 됨.
** 오라클에서 null값은 = ''(따옴표 두 개, 화이트 스페이스)로 대체 가능하다.
. '(컬럼명1, 컬럼명2,...)' : 필요한 컬럼에만 값을 배정하기 위해 사용되며 컬럼 제약사항이 NOT NULL인 컬럼은 생략할 수 없음(NOT NULL로 설정한 컬럼은 컬럼명을 꼭 써야함.)
** 오라클에서 공백은 자료를 구분하는 기호가 됨, 문자열은 ' ' (따옴표)로 묶어줘야 한다.

사용예)사원테이블(EMPLOYEE)에 다음 자료를 입력하시오
[자료]

  --------------------------------------------------
  사원번호 사원명  주소                       부서명
  --------------------------------------------------
   18021  홍길동  대전시 중구 중앙로 76        설계부
   20002  홍길순                             토목
   17113  강감찬                             총무부
   19007  이성계  
  --------------------------------------------------

답)

INSERT INTO EMPLOYEE
 VALUES('18021','홍길동','대전시 중구 중앙로 76','설계부');
INSERT INTO EMPLOYEE
 VALUES('20002','홍길순','','토목')

확인하려면 : 
SELECT * FROM EMPLOYEE

  ----------------------------------------------------------------
    사업장번호    사업장명       주소              전화번호      비고
  ----------------------------------------------------------------
   A1010120    도로신설공사    충남 예산군 예산읍  123-5678     공사중
   C2103002    새여울초등학교   대전시 대덕구       876-0987    공사완료
  ----------------------------------------------------------------

답)

 INSERT INTO CONST_SITE
   VALUES('A1010120','도로신설공사','충남 예산군 예산읍','123-5678','공사중')
INSERT INTO CONST_SITE
   VALUES('C2103002','새여울초등학교','대전시 대덕구','876-0987','공사완료')

사용예)다음 자료를 근무테이블에 저장하시오
1) 홍길동사원이 '도로신설공사' 공사장에 '2021-08-25'일자로 배속됨

답)

INSERT INTO TBL_WORKS(EMP_ID,CONST_ID)
	VALUES('18021','A1010120')
     

2) 강감찬직원이 '새여울초등학교' 공사장에 2020년 2월1일 배속되어 2020년 12월
30일까지 근무했음

답)

INSERT INTO TBL_WORKS
	VALUES('17113','C2103002',TO_DATE('20200201'),TO_DATE('20201230'))
    => TO_DATE는 문자열을 날짜로 바꿔주는 함수

SYSDATE : 사용자가 날짜를 입력하지 않았을 때 오늘 날짜로 저장됨, null값을 입력하면 null이 됨.

기본키가 두 개일 때는 그 기본키의 값의 묶음이 중복되지 않으면 됨.

데이터 타입

  • 오라클에 사용되는 데이터 타입은 문자열, 숫자, 날짜, 이진데이터 타입으로 구분
  1. 문자열 데이터 타입
    . 오라클은 문자타입은 존재하지 않음(자바에서의 Char 타입이 오라클는 없음)
    . 모든 문자열은 ' '안에 기술되어야 함(" "는 잘 사용되지 않음)
    . ' '에 기술되는 문자열은 대소문자 구별됨
    . 문자열 데이터 타입은 CHAR, VARCHAR, VARCHAR2, NCARCHAR, LONG, CLOB, NCLOB 등이 있음

    1) CHAR (고정길이 - 사용자가 칸을 잡으면 그 칸은 다른 곳에 사용 못함.)

  • 고정길이 데이터를 저장

  • 최대 2000byte 저장 가능

  • 기억공간이 남으면 오른쪽에 남는 공간에 공백이 채워짐

  • 기본키 설정이나 확정된 길이를 나타내는 컬럼(주민번호 등) - 그 외에는 잘 안 씀.

    (사용형식)
    컬럼명 CHAR(크기[BYTE|CHAR])
    . '크기[BYTE|CHAR]' : 크기가 byte인지 글자의 개수(CHAR)인지 설정, 기본은 BYTE
    . 한글 한 글자는 3 byte(최대 666글자 저장)

사용예)

CREATE TABLE TEMP01(
    COL1 CHAR(50),
    COL2 CHAR(50 BYTE),
    COL3 CHAR(50 CHAR));

  INSERT INTO TEMP01
    VALUES('IL POSTINO','IL POSTINO','일 포스티노');
  
SELECT * FROM TEMP01;
  
  SELECT LENGTHB(COL1),     --- 값 : 50
         LENGTHB(COL2),        --- 값 : 50
         LENGTHB(COL3),        --- 값 : 60

LENGTH - 글자 수
LENGTHB - 기억장소의 바이트단위의 길이를 나타낼 때 사용

오늘의 리뷰 : 오늘은 Oracle에서의 명령문들을 배웠다.
Insert into 와 values,
테이블을 직접 만들고 기본키, 외래키를 설정했다.
생각보다 재미있다.
액세스 만들 때도 재미있었는데 명령문에 따라 내가 하고싶은 대로 되니까 재미있는 것 같다.
이론을 많이 배웠을 때는 지루했는데 직접 명령문을 치고 따라하고 만들어보니 좋았다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN