본문 바로가기
Oracle

[Oracle] 테이블 생성 후 DATA 자료 INSERT 하기

by moveho 2022. 10. 18.

오늘은 오라클을 이용하여 TABLE을 만든 후 DATA 자료를 INSERT 하는것을 해봤다.

직접 입력해본 코드내용이다.

 

학생등록시스템 DB,  인사관리시스템 DB를 가정하여 자료들을 만들었다.

-- 등록시스템 DB

drop table enrol;
drop table student;
drop table subject;

create table STUDENT( 
    STU_NO char(9),     
    STU_NAME varchar2(12),
    STU_DEPT varchar2(20),
    STU_GRADE number(1),
    STU_CLASS char(1),
    STU_GENDER char(1),
    STU_HEIGHT number(5,2),
    STU_WEIGHT number(5,2),
    constraint pk_stu_no primary key(STU_NO));

create table SUBJECT(
    SUB_NO char(3),
    SUB_NAME varchar2(30),
    SUB_PROF varchar2(12),
    SUB_GRADE number(1),
    SUB_DEPT varchar2(20),
    constraint pk_sub_no primary key(SUB_NO));
    
create table ENROL(
    SUB_NO char(3),
    STU_NO char(9),
    ENR_GRADE number(3),
    constraint pk_enrol primary key(SUB_NO, STU_NO));

-- 학생테이블 데이터 입력
insert into student values(20153075, '옥한빛', '기계', 1, 'C', 'M', 177, 80);
insert into student values(20153088, '이태연', '기계', 1, 'C', 'F', 162, 50);
insert into student values(20143054, '유가인', '기계', 2, 'C', 'F', 154, 47);
insert into student values(20152088, '조민우', '전기전자', 1, 'C', 'M', 188, 90);
insert into student values(20142021, '심수정', '전기전자', 2, 'A', 'F', 168, 45);
insert into student values(20132003, '박희철', '전기전자', 3, 'B', 'M', NULL, 63);
insert into student values(20151062, '김인중', '컴퓨터정보', 1, 'B', 'M', 166, 67);
insert into student values(20141007, '진현무', '컴퓨터정보', 2, 'A', 'M', 174, 64);
insert into student values(20131001, '김종헌', '컴퓨터정보', 3, 'C', 'M', NULL, 72);
insert into student values(20131025, '옥성우', '컴퓨터정보', 3, 'A', 'F', 172, 63);

-- 과목테이블 데이터 입력
insert into subject values('111', '데이터베이스', '이재영', 2, '컴퓨터정보');
insert into subject values('110', '자동제어', '정순정', 2, '전기전자');
insert into subject values('109', '자동차설계', '박민영', 3, '기계');
insert into subject values('101', '컴퓨터개론', '강종영', 3, '컴퓨터정보');
insert into subject values('102', '기계공작법', '김태영', 1, '기계');
insert into subject values('103', '기초전자실험', '김유석', 1, '전기전자');
insert into subject values('104', '시스템분석설계', '강석현', 3, '컴퓨터정보');
insert into subject values('105', '기계요소설계', '김명성', 1, '기계');
insert into subject values('106', '전자회로실험', '최영민', 3, '전기전자');
insert into subject values('107', 'CAD응용실습', '구봉규', 2, '기계');
insert into subject values('108', '소프트웨어공학', '권민성', 1, '컴퓨터정보');

-- 등록테이블 데이터 입력
insert into enrol values('101', '20131001', 80);
insert into enrol values('104', '20131001', 56);
insert into enrol values('106', '20132003', 72);
insert into enrol values('103', '20152088', 45);
insert into enrol values('101', '20131025', 65);
insert into enrol values('104', '20131025', 65);
insert into enrol values('108', '20151062', 81);
insert into enrol values('107', '20153054', 41);
insert into enrol values('102', '20153075', 66);
insert into enrol values('105', '20153075', 56);
insert into enrol values('102', '20153088', 61);
insert into enrol values('105', '20153088', 78);

-- 인사관리시스템 DB
drop table emp; --JUNCTION 테이블 먼저 drop
drop table dept;
drop table salgrade;

create table DEPT(
    DEPTNO number(2), -- 숫자로 변경
    DNAME varchar2(14),
    LOC varchar2(20), -- 사이즈 조정
    constraint pk_deptno primary key(DEPTNO));

create table EMP(
    EMPNO number(4),
    ENAME varchar2(10),
    JOB varchar2(9),
    MGR number(4),
    HIREDATE date,
    SAL number(7,2),
    COMM number(7,2),
    DEPTNO number(2),
    constraint pk_empno primary key(EMPNO),
    constraint fk_mgr foreign key(MGR) references EMP(EMPNO),
    constraint fk_deptno foreign key(DEPTNO) references DEPT(DEPTNO)); --외래키 지정

create table SALGRADE(
    GRADE number(7,2),
    LOSAL number(7,2),
    HISAL number(7,2),
    constraint pk_grade primary key(GRADE));

insert into emp values(7839, 'KING', 'PRESIDENT', NULL, to_date('17-11-1981', 'dd-mm-yyyy'), 5000, NULL, 10);
insert into emp values(7566, 'JONES', 'MANAGER', 7839, to_date('02-04-1981', 'dd-mm-yyyy'), 2975, NULL, 20);
insert into emp values(7698, 'BLAKE', 'MANAGER', 7839, to_date('01-05-1981', 'dd-mm-yyyy'), 2850, NULL, 30);
insert into emp values(7782, 'CLARK', 'MANAGER', 7839, to_date('09-06-1981', 'dd-mm-yyyy'), 2450, NULL, 10);
insert into emp values(7788, 'SCOTT', 'ANALYST', 7566, to_date('13-07-1987', 'dd-mm-yyyy'), 3000, NULL, 20);
insert into emp values(7902, 'FORD', 'ANALYST', 7566, to_date('03-12-1981', 'dd-mm-yyyy'), 3000, NULL, 20);
insert into emp values(7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600, 300, 30);
insert into emp values(7521, 'WARD', 'SALESMAN', 7698, to_date('22-02-1981', 'dd-mm-yyyy'), 1250, 500, 30);
insert into emp values(7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-09-1981', 'dd-mm-yyyy'), 1250, 1400, 30);
insert into emp values(7844, 'TURNER', 'SALESMAN', 7698, to_date('08-09-1981', 'dd-mm-yyyy'), 1500, 0, 30);
insert into emp values(7900, 'JAMES', 'CLERK', 7698, to_date('03-12-1981', 'dd-mm-yyyy'), 950, NULL, 30);
insert into emp values(7934, 'MILLER', 'CLERK', 7782, to_date('23-01-1982', 'dd-mm-yyyy'), 1300, NULL, 10);
insert into emp values(7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800, NULL, 20);
insert into emp values(7876, 'ADAMS', 'CLERK', 7788, to_date('13-07-1987', 'dd-mm-yyyy'), 1100, NULL, 20);  

insert into dept values(10,'ACCOUNTING', 'NEW YORK');
insert into dept values(20, 'RESEARCH', 'DALLAS');
insert into dept values(30, 'SALES', 'CHICAGO');
insert into dept values(40, 'OPERATIONS', 'BOSTON');

insert into salgrade values(1, 700, 1200);
insert into salgrade values(2, 1201, 1400);
insert into salgrade values(3, 1401, 2000);
insert into salgrade values(4, 2001, 3000);
insert into salgrade values(5, 3001, 9999);

STUDENT의 DATA가 입력된 모습
SUBJECT  TABLE  DATA

 

STUDENT, SUBJECT TABLE 뿐만 아니라 각각의 TABLE에 알맞게  입력되었다.

 

DATA를 INSERT 할 때 주의할 점은 각각의 DATA 형태에 맞게 CHAR을 지정해야한다.

 

알맞은 데이터 형태를 갖춰야함

만약 DEPT의 LOC 부분이 숫자가 적다면 해당하는 숫자 이상의 데이터 값을 들어가지 못하기 때문에

알맞은 데이터 값을 넣어줘야 한다.!!

 

외래키 기본키를 지정하는 코드는 다음과 같다

 constraint pk_transaction_id primary key(transaction_id),
 constraint fk_patron_id foreign key(patron_id) references patron(patron_id),
 constraint fk_book_id foreign key(book_id) references book(book_id));

CONSTRAINT 를 활용하여 지정할 수 있고 

 transaction_id char(5) PRIMARY KEY,

다음과 같이 바로 옆에 키 지정을 해줘도 된다!

 

 

등록된 데이터를 갖고 다음 글에 SELECT 문을 이용한 다양한 형태의 조회를 시도해보겠다!

 

댓글