Oracle

[DB/오라클] CREATE TABLE 같이 테이블 생성해 보아요 (primary key, foreign key, check)

원코딩 2022. 6. 30. 23:50

 

SQL 문장을 배우기 시작한지 2주 정도 됐다. 제공되는 예제 테이블로 연습하다가 직접 테이블을 만들어보고 싶어졌다.

CREATE 문장을 통해 TABLE 생성하는 과정을 정리해보도록 하겠다. 

 

 

테이블을 직접 만드는게 공부에 큰 도움이 되는 이유 중 하나가 다양한 요소를 활용해야 하기 때문이다. 기본키, 참조키, 각종 데이터형의 이해가 필요한 작업이다. 

 

 

테이블 생성에서 강조하고 싶은 부분은 기본키 생성이다. 우리가 회원가입을 할 때 id 중복체크를 하는 이유는 특정 개인에게만 부여되는 고유번호를 생성하기 위해서인데 이는 전 국민의 주민번호가 다르며, 중복되지 않는 것과 같다고 생각하면 된다. 

 

 

테이블도 결국은 데이터의 집합이기 때문에 데이터를 대표할만한 기본키를 지정해주어야 한다. 기본키의 역할과 문법을 중점으로 테이블 생성해보자! 

(참고로 필자는 영어에 능숙하지 못해서 변수 이름이 어색하거나 오타가 있을 수 있습니다. 양해 부탁드립니다.)

 

 

1.  store 테이블 생성하기 

 

해당 테이블은 작은 과일가게의 기본 테이블이다.

CREATE TABLE store(
	sno NUMBER,
	name VARCHAR2(100) CONSTRAINT st_name_nn NOT NULL,
	price NUMBER CONSTRAINT st_price_nn NOT NULL,
	stardate DATE DEFAULT SYSDATE,
	enddate DATE,
	sea NUMBER CONSTRAINT st_sea_nn NOT NULL,
	CONSTRAINT st_sno_pk PRIMARY KEY(sno)
);

 

sno : 과일의 고유번호  // 기본키

name : 과일의 이름 // 공백불가(not null)

price : 과일 가격 // 공백불가(not null)

stardate : 입고날짜 // null값이라면 > 시스템날짜

enddate : 유통기한 

sea : 수량(재고)  // 공백불가(not null)

 

테이블 작성 후

 

DESC 테이블명 으로 검색 하면 아래와 같은 속성 창을 확인 할 수 있다.

 

STORE TABLE 생성 완료

 

sno 기본키 적용 완료

 

 

2. fruit 테이블 생성하기 

 

해당 테이블은 과일의 정보를 가지는 테이블이다.

CREATE TABLE fruit(
	fno NUMBER,
	madein VARCHAR2(100),
	place VARCHAR2(50),
	CONSTRAINT fr_fno_fk FOREIGN KEY(fno) REFERENCES store(sno),
	CONSTRAINT fr_place_ck CHECK(place IN('ice','tem'))   

);

 

fno : 과일의 고유번호 // store 테이블의 sno를 참조하는 키 즉, foreign 키

madein : 원산지

place : 보관방법 // check ice: 냉장보관  or  tem: 실온보관

 

테이블 작성 후

 

DESC 테이블명 으로 검색 하면 아래와 같은 속성 창을 확인 할 수 있다.

 

fruit 테이블 생성 완료

 

fno > 포렌키 // place > check

 

 

 

이상으로 2개의 테이블을 생성해보았다. 

 

(처음이라 그런가) 놀랍게도 2시간이 소요됐다..... 테이블 한 개당 한 시간이라니 너무 행복하다. 

다음번엔 테이블에 데이터를 집어넣는 작업을 해보도록 하겠다!