리오집사의 기억저장소

목차

     

데이터 베이스의 기본 단위는 테이블이다.테이블은 어느 특정한 주제와 목적으로 만들어지는 하나의 집합으로서, 모든 자료는 테이블에 등록이 되고, 테이블로부터 원하는 자료를 꺼내올 수 있다. 테이블에는 기본키와 외부키라는 개념이 있다.

  • 기본키 : 한 개의 테이블에서 각 레코드들을 구별하게 해주는 칼럼
  • 외부키 : 테이블 안의 칼럼이 다른 테이블의 기본키로 사용되고 있는 칼럼

 

정규화

기본키와 외부키를 이용해서, 테이블을 분할하여 데이터의 불필요한 정보를 줄이는 것을 정규화(Normalization) 이라고 한다.

관계형 데이터베이스(RDB)

정규화를 통해서 테이블끼리 연계되어 하나의 데이터베이스를 구성하는 것을 RDB라고 한다.

ERD(Entity Relationship Diagram)

테이블간의 서로의 상관관계를 도식화한 걸 E-R-다이어그램 또는 ERD라고 한다.

  • 여기에서 엔티티, 즉 개체란 하나하나의 테이블을 일컫는다.
  • 테이블을 '개체', 칼럼들을 '속성' 이라고 부른다.
  • ERD의 구성요소는 개체, 관계, 속성이다.

 

테이블 제약조건

제약조건이란?

사용자가 원하는 조건의 데이터만 유지하기 위한, 즉 데이터의 무결성을 유지하기 위한 보편적 방법으로, 테이블의 특정 칼럼에 설정하는 성질이다. 제약조건을 반드시 기술할 필요는 없다.

NOT NULL

NULL 값의 입력을 금지하는 것으로서, 이 제약을 지정하면 그 열은 반드시 입력되어야 한다.

(NULL이란 데이터의 미정, 데이터 설정의 필요/의미 없음 을 뜻한다.)

UNIQUE(유일키 제약)

규정한 열(또는 열의 조합)의 값이 테이블 안에서 하나의 뜻이 되도록 한다.

Primary Key

테이블에 저장된 행 데이터들을 식별하기 위한 것으로, 기본키를 구성하는 열에는 NULL 입력이 불가능하다. 오라클에서는, 기본키 제약을 작성하면 자동으로 유일 인덱스를 작성한다.

즉, 기본키 제약 = 유일키 제약 + NOT NULL 제약

CHECK

입력할 수 있는 값의 범위 등을 제한한다. 예를 들어 '급여>0' 와 같이 T/F로 평가할 수 있는 논리식이다.

참조 정합성 제약

열의 값에 따라서 테이블끼리 연결될 때의 제약으로, 외부키와 기본키의 정합성을 유지하는 장치이다. 값을 참조하는 테이블을 자식 테이블, 값을 가진 열을 부모키, 부모키를 가진 참조되는 테이블을 부모 테이블이라고 한다. 부모키는 기본키이거나 유일키여야 한다.

 

테이블 생성-삭제-변경-확인

테이블 만들기, 생성(CREATE)

CREATE TABLE 테이블명(
  칼럼명 DATATYPE [DEFAULT 형식],
  칼럼명 DATATYPE [DEFAULT 형식],
  ....
);
  • 칼럼 뒤의 데이터타입은 반드시 지정되야 한다.
  • 한 테이블 안에서 칼럼 이름은 같을 수 없고, 다른 테이블에서의 칼럼 이름과는 같을 수 있다.
  • 칼럼에 대해서는 다른 테이블을 생각하여 일관성 있게 사용하는 것이 좋다.테이블명과 칼럼명은 반드시 문자로 시작해야하며, 최대 30자까지 허용된다.
  • A-Z, a-z, 0-9, _ , $ , # 만 허용된다.
  • ORACLE의 예약어는 사용이 불가능하다.

 

테이블 확인하기(DESC)

 DESCRIBE 테이블명;
 
 또는
 
 DESC 테이블명;

 

테이블 변경하기(ALTER)

① 칼럼추가

ALTER TABLE 테이블명
ADD(칼럼명 데이터타입 [DEFAULT식],[NOT NULL], ...);

대괄호로 표시된 부분은 생략 가능, 추가하려는 칼럼이 여러개이면 콤마로 구분하여 추가한다.

 

② 칼럼삭제

ALTER TABLE 테이블명
DROP COLUMN 삭제할칼럼명;

데이터 있던,없던 모두 삭제 가능 / 한 번에 하나의 칼럼만 삭제 가능 /칼럼 삭제 후 최소 하나의 칼럼이 테이블에 존재해야 함

 

③ 칼럼 사용 안하기

칼럼 삭제는 저장 공간 등의 반환으로 인해서 시간이 많이 소요된다. 그래서 현재 불필요한 칼럼을 사용불가 상태로만 표시해두고 나중에 DB 조회 등이 덜 일어날 때 선택하여 삭제할 수 있도록 하는 기능이 있다.

ALTER TABLE 테이블명
SET UNUSED COLUMN 사용하지않을칼럼명;
  •  SET UNUSED
    • 디스크 공간을 반환하지 않는다.(실제 삭제가 일어나지 않으므로)
    • 모든 SQL 문에서 접근이 불가하다(삭제된 것으로 간주되기 때문에)
    • DESCRIBE 명령으로 이 칼럼이 확인되지 않는다.
    • UNSUED로 표시된 동일한 이름의 칼럼 추가도 가능하다.

 

ALTER TABLE 테이블명
DROP UNUSED COLUMNS;
  • SET UNUSED 상태의 칼럼을 완전히 제거해서 여분의 디스크 공간을 회수하는 명령어이다.
  • DROP은 사용불가 상태로 세팅된 칼럼을 삭제하는 명령이다
  • 여러 칼럼이 SET UNUSED 상태인 경우 여러 칼럼을 한꺼번에 제거한다.

④ 칼럼 수정

ALTER TABLE 테이블명
MODIFY(칼럼명 데이터타입 [DEFAULT식],[NOT NULL], ...);
  • 데이터타입, 디폴트값, NOT NULL 제약 조건 등에 대한 변경이 가능하다
  • 칼럼 크기도 늘릴 수 있다
  • 칼럼이 NULL만 가지고 있거나 테이블에 아무 행도 없다면, 칼럼의 폭을 줄일 수 있다.
  • 칼럼이 NULL 값만 가지고 있다면, 데이터타입 변경도 가능하다.
  • 해당 칼럼의 디폴트값만 바꾸면, 테이블에 대한 이후의 행 삽입에만 영향을 미치게 된다.
  • 해당 칼럼의 NULL 값이 없는 경우에만 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];

<제약조건 관련 유의사항>

  • 제약조건 이름을 쓰는 것이 좋지만, 이는 선택사항이다.
  • 제약조건 이름을 쓰지 않으면 시스템이 이름을 생성한다.
  • 제약조건을 추가,삭제,enable,disable 할 수는 있지만 변경은 불가능하다.
  • ALTER TABLE 명령의 MODIFY를 써서 NOT NULL 제약조건을 칼럼에 추가할 수 있다.
  • 제약조건을 enable시키면 테이블의 모든 데이터에 적용된다. 이때, 테이블의 모든 데이터가 제약조건에 맞아야 한다.
  • UNIQUE나 PRIMARY KEY 제약조건을 enable 시키면 UNIQUE나 PRIMARY KEY 인덱스가 자동으로 생성된다.
  • CREATE TABLE 명령과 ALTER TABLE 명령 모두 enable 과 disable 절을 쓸 수 있다.

 

테이블 삭제하기(DROP,TRUNCATE)

ⓐ 테이블까지 완전 삭제​

DROP TABLE 테이블명[CASCADE CONSTRAINT];

​테이블의 모든 데이터 및 구조를 삭제하는 것. 여기서 CASCADE CONSTRAINT 는 해당 테이블과 관계가 있던 참조 제약조건도 삭제한다는 것을 의미한다.

ⓑ 테이블의 데이터만 삭제​​

TRUNCATE TABLE 테이블명;

​테이블의 모든 행을 제거하여 저장공간이 재사용 가능하도록 해제한다.

 

[오라클/SQL] 02.테이블과 DDL

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band