데이터 베이스의 기본 단위는 테이블이다.테이블은 어느 특정한 주제와 목적으로 만들어지는 하나의 집합으로서, 모든 자료는 테이블에 등록이 되고, 테이블로부터 원하는 자료를 꺼내올 수 있다. 테이블에는 기본키와 외부키라는 개념이 있다.
기본키와 외부키를 이용해서, 테이블을 분할하여 데이터의 불필요한 정보를 줄이는 것을 정규화(Normalization) 이라고 한다.
정규화를 통해서 테이블끼리 연계되어 하나의 데이터베이스를 구성하는 것을 RDB라고 한다.
테이블간의 서로의 상관관계를 도식화한 걸 E-R-다이어그램 또는 ERD라고 한다.
사용자가 원하는 조건의 데이터만 유지하기 위한, 즉 데이터의 무결성을 유지하기 위한 보편적 방법으로, 테이블의 특정 칼럼에 설정하는 성질이다. 제약조건을 반드시 기술할 필요는 없다.
NULL 값의 입력을 금지하는 것으로서, 이 제약을 지정하면 그 열은 반드시 입력되어야 한다.
(NULL이란 데이터의 미정, 데이터 설정의 필요/의미 없음 을 뜻한다.)
규정한 열(또는 열의 조합)의 값이 테이블 안에서 하나의 뜻이 되도록 한다.
테이블에 저장된 행 데이터들을 식별하기 위한 것으로, 기본키를 구성하는 열에는 NULL 입력이 불가능하다. 오라클에서는, 기본키 제약을 작성하면 자동으로 유일 인덱스를 작성한다.
즉, 기본키 제약 = 유일키 제약 + NOT NULL 제약
입력할 수 있는 값의 범위 등을 제한한다. 예를 들어 '급여>0' 와 같이 T/F로 평가할 수 있는 논리식이다.
열의 값에 따라서 테이블끼리 연결될 때의 제약으로, 외부키와 기본키의 정합성을 유지하는 장치이다. 값을 참조하는 테이블을 자식 테이블, 값을 가진 열을 부모키, 부모키를 가진 참조되는 테이블을 부모 테이블이라고 한다. 부모키는 기본키이거나 유일키여야 한다.
CREATE TABLE 테이블명(
칼럼명 DATATYPE [DEFAULT 형식],
칼럼명 DATATYPE [DEFAULT 형식],
....
);
DESCRIBE 테이블명;
또는
DESC 테이블명;
① 칼럼추가
ALTER TABLE 테이블명
ADD(칼럼명 데이터타입 [DEFAULT식],[NOT NULL], ...);
대괄호로 표시된 부분은 생략 가능, 추가하려는 칼럼이 여러개이면 콤마로 구분하여 추가한다.
② 칼럼삭제
ALTER TABLE 테이블명
DROP COLUMN 삭제할칼럼명;
데이터 있던,없던 모두 삭제 가능 / 한 번에 하나의 칼럼만 삭제 가능 /칼럼 삭제 후 최소 하나의 칼럼이 테이블에 존재해야 함
③ 칼럼 사용 안하기
칼럼 삭제는 저장 공간 등의 반환으로 인해서 시간이 많이 소요된다. 그래서 현재 불필요한 칼럼을 사용불가 상태로만 표시해두고 나중에 DB 조회 등이 덜 일어날 때 선택하여 삭제할 수 있도록 하는 기능이 있다.
ALTER TABLE 테이블명
SET UNUSED COLUMN 사용하지않을칼럼명;
ALTER TABLE 테이블명
DROP UNUSED COLUMNS;
④ 칼럼 수정
ALTER TABLE 테이블명
MODIFY(칼럼명 데이터타입 [DEFAULT식],[NOT NULL], ...);
⑤-1 제약조건 추가
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);
⑤-2 제약조건 삭제
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;
⑤-3 제약조건 DISABLE
ALTER TABLE 테이블명
DISABLE CONSTRAINT 제약조건[CASCADE];
여기서 cascade란 해당 제약조건에 종속되어 있는 다른 테이블의 제약조건도 모두 DISABLE하라는 의미이다.
만약 PLAYER_ID_PK(기본키)가 다른 테이블에서 외부키로 적용되고 있다면, 해당 외부키도 DISABLE 되는걸 뜻한다.
⑤-4 제약조건 ENABLE
ALTER TABLE 테이블명
ENABLE CONSTRAINT 제약조건[CASCADE];
<제약조건 관련 유의사항>
ⓐ 테이블까지 완전 삭제
DROP TABLE 테이블명[CASCADE CONSTRAINT];
테이블의 모든 데이터 및 구조를 삭제하는 것. 여기서 CASCADE CONSTRAINT 는 해당 테이블과 관계가 있던 참조 제약조건도 삭제한다는 것을 의미한다.
ⓑ 테이블의 데이터만 삭제
TRUNCATE TABLE 테이블명;
테이블의 모든 행을 제거하여 저장공간이 재사용 가능하도록 해제한다.