테이블을 생성할 때는 create 명령어를 사용한다.
테이블 생성 시 각 컬럼에 대한 정보를 함께
입력하는데, 컬럼명과 속성, 제약조건(선택)을 입력한다.
제약조건은 다음과 같이 5가지가 있다.
- PRIMARY KEY(기본키)
- FOREIGN KEY(외래키)
- UNIQUE
- NOT NULL
- CHECK
제약조건에 포함되지는 않지만
제약조건 자리에 DEFAULT로
해당 필드의 기본값을 설정할 수 있다.
+ 각각의 제약조건에 대해서는
아래에 별도로 링크를 첨부하고자 한다.
테이블명을 member라고 한다면
아래와 같이 아이디와 이름을 컬럼으로 한
테이블을 생성 명령문을 작성할 수 있다.
입력 시 유의할 점은
1. 컬럼명 속성 제약조건 순으로 작성한다는 점이고
(제약조건은 무조건 입력해야 하는 것은 아니다.)
2. 각 컬럼에 대한 코드 끝에 ,를 입력해서 구분한다는 점이다.
3. 마지막 컬럼의 경우는 끝에 ,를 입력하지 않는다.
4. 맨 마지막에는 );를 붙여야 한다.
create table member(
id varchar2(10) primary key,
name varchar2(10) not null
);
위의 방식은 내가 선호하는 작성방식이고
사람마다 조금씩 다른 형태로 입력한다.
나는 가독성을 고려하여 한 줄로 입력하지 않고
위와 같이 입력하는 방식을 선호한다.
유의할 점 4가지를 지키지 않으면 반드시 오류가 발생하니
,와 ;과 같은 작은 부분도 꼼꼼하게 살펴야 한다.
*** 테이블 생성 후에 컬럼명, 속성, 제약조건만
따로 보고 싶다면, desc 명령어를 사용한다.
desc 테이블명;
문법 자체가 어렵지는 않지만, 요구사항을 토대로
테이블을 생성하려면 꼼꼼하게 살펴볼 점들이 꽤 많다.
바로 예시를 통해 살펴보자.
요구사항 : 상품평 남기기
등록된 상품에 대한 리뷰를 남기는 프로그램
상품은 아이디, 상품명, 수량, 등록일로 구성되며
아이디는 중복될 수 없다.
수량은 기본값이 0이다.
상품 하나에는 여러 개의 리뷰를 작성할 수 있다.
상품이 삭제되면 리뷰도 같이 삭제되어야 한다.
처음 craete문을 접한다면 아래 요구사항에서
무엇을 발견해야 하는지 개념이나 용어가 낯설 수 있다.
이를 감안하고 가볍게 문법에만 집중해서 그렇구나,
생각하고 보면 좋을 것 같다.
위 요구사항을 보았을 때
어떤 부분을 캐치해야 하는지 정리해 보면,
테이블명 : 상품등록
아이디(PK) 상품명 수량 등록일
create table 상품등록(
아이디 varchar2(4) primary key,
상품명 varchar2(10),
수량 int default 0,
등록일 timestamp default sysdate
);
테이블명 : 리뷰
리뷰번호(PK) 상품아이디(FK) 작성자 내용 등록일
create table 리뷰(
리뷰번호 int primary key,
상품아이디 varchar2(4),
작성자 varchar2(10),
내용 varchar2(100),
등록일 timestamp default sysdate,
foreign key(상품아이디) references 상품등록(아이디) on delete cascade
);
*** 테이블명이나 컬럼명은 실제로 영문으로 입력하는 것이 룰이다.
위에는 보기 편하도록 한글로 입력했다는 점을 감안하고 봐주시기를...!
*** FK로 참조를 거는 경우 컬럼명이 달라도 되지만 속성, 제약조건이 같아야 작동된다.
삭제 명령어 : drop
테이블을 삭제하는 경우에는 drop 명령어를 쓴다.
테이블 외에도 시퀀스나 뷰를 삭제하는 경우에도 drop을 쓴다.
drop table review; - review라는 테이블을 삭제
drop sequence review_seq; - review_seq라는 시퀀스를 삭제
'DB > SQL - Oracle' 카테고리의 다른 글
[SQL] TCL(트랜잭션 제어어) - commit, rollback, checkpoint(=savepoint) (0) | 2024.02.02 |
---|---|
[SQL] DML(데이터 조작어) - insert, update, delete (0) | 2024.02.02 |
[SQL] 이상현상(Anomaly) + 키 예제 (1) | 2024.02.01 |
[SQL] 데이터베이스 제약조건 "키" - 기본키, 외래키, 슈퍼키, 후보키, 대체키 (1) | 2024.02.01 |
[SQL] 데이터 무결성의 종류 - 도메인, 개체, 참조 무결성 (0) | 2024.02.01 |