computer_study

[MySQL] 08. 테이블과 뷰 본문

스터디/이것이MySQL이다

[MySQL] 08. 테이블과 뷰

knowable 2022. 4. 20. 00:32

테이블

제약 조건

데이터의 무결성을 지키기 위한 제한된 조건. (어떠한 조건을 만족했을 때에 데이터를 입력되도록 한다.)

  • PRIMARY KEY 제약 조건
    • 기본키에 입력되는 값은 중복될 수 없다
    • NULL이 될 수 없다.
    • PRIMARY KEY 특징
      • 자동으로 인덱스가 생성된다
      • 하나 이상의 열에 설정할 수 있다.
      • 대부분의 테이블에 기본 키를 설정해주어야 된다
    • 설정 방법
      • CREATE TABLE 시 지정
      • ALTER TABLE에서
        • ADD [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)
        • MODIFY COLUMN [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)
  • FOREIGN KEY 제약 조건
    • 기준 테이블에 데이터가 존재해야 한다.
    • 참조하는 기준 테이블의 열은 반드시 Primary key 이거나 Unique 제약 조건이 설정되어있어야 한다
    • 특징
      • 두 테이블 사이의 관계를 선언하여 데이터의 무결성을 보장
      • 외래키 관계 설정 시 하나의 테이블이 다른 테이블에 의존하게 된다.
    • 외래키 옵션
      • ON DELETE CASCADE
      • ON UPDATE CASCADE
      • 기준 테이블의 데이터가 변경되었을 때 외래 키 테이블도 자동 적용되도록 설정해준다
  • UNIQUE 제약 조건
    • 중복되지 않는 유일한 값을 입력해야 하는 조건
    • PRIMARY KEY와의 차이점은 NULL을 허용한다는 점
    • NULL은 여러 개가 입력되어도 괜찮다.
  • CHECK 제약 조건
    • 입력되는 데이터를 점검한다.
    • CHECK 제약조건을 설정하면 제약 조건에 위배되는 값은 입력이 안된다.
  • DEFAULT 정의
    • 값을 입력하지 않았을 때, 자동으로 입력되는 기본 값을 정의하는 방법
  • NULL 값 허용

 

테이블 압축

  • 대용량 테이블의 공간을 절약하는 효과를 가질 수 있다.
  • ex
CREATE TABLE compressTBL(emp_no int, first_name VARCHAR(14)
    ROW_FORMAT=COMPRESSED;
  • 생성할 때만 지정한다면 이후에는 기존과 같다.
  • 단점
    • 버퍼 풀 공간 활용률이 낮음
    • 쿼리 처리 성능이 낮음
    • 빈번한 데이터 변경시 압축률이 떨어짐

 

임시 테이블

  • 잠시 사용되는 테이블
  • 세션 내에서만 존재한다
  • 실제 테이블과 동일한 이름을 사용할 수 있고, 동일한 이름이라면 임시 테이블에 우선적으로 접근한다
  • 삭제되는 시점
    • 사용자가 직접 DROP TABLE
    • Workbench 종료 시 또는 mysql 클라이언트 종료 시
    • MySQL 서비스 재시작 시
  • 사용 이유
    • 변수에 저장하는 것 처럼, 중간 결과 값을 저장할 때 사용

 

테이블 삭제

DROP TABLE 테이블이름;

 

테이블 수정

  • 열의 추가
    • ADD [열 이름] 
    • 제일 뒤에 'FIRST' 혹은 'AFTER 열이름' 등을 통해 열의 추가 순서를 지정할 수 있다
  • 열의 삭제
    • DROP COLUMN [열 이름]
    • 제약 조건이 걸린 열을 삭제하는 경우, 제약조건을 먼저 삭제한 후 열을 삭제한다.
  • 열의 이름 및 데이터 형식 변경
    • CHANGE COLUMN [열 이름] [바꿀 내용]
  • 열의 제약 조건 추가 및 삭제
    • DROP [제약조건]
    • PRIMARY KEY를 제거하려면 그에 연결된 FOREIGN KEY를 우선 제거한다.

 

뷰의 개념

  • SELECT문으로 나온 결과물을 하나의 테이블로 보는 것
  • 생성 구문
CREATE VIEW v_usertb1
AS
    SELECT userid, name, addr FROM usertb1;
    
-- 이후 v_usertb1을 테이블처럼 사용할 수 있다.
  • 뷰를 통한 원 테이블 데이터 수정은 가능은 하나 바람직하진 않다.

뷰의 장점

  • 보안에 도움이 된다
  • 복잡한 쿼리를 단순화 시켜줄 수 있다.

 

 

테이블 스페이스

테이블스페이스의 개념

  • 테이블이 실제로 저장되는 물리적인 공간
  • 대용량 데이터를 다룰 때 성능 향상을 위해 설정을 하는 것이 좋다.
  • 별도의 테이블스페이스를 지정하지 않는다면 시스템 테이블스페이스에 테이블이 저장된다.

 

성능 향상을 위한 테이블스페이스 추가

  • 대용량 테이블을 동시에 여러 개 사용해야 한다면, 테이블마다 별도의 테이블스페이스에 저장하는 것이 효율적.
  • 생성방법
    • CREATE TABLESPACE [이름] ADD DATAFILE [파일명.ibd];
  • 테이블스페이스는 데이터베이스와 관련이 없으므로 USE문으로 데이터베이스를 선택할 필요가 없다.
  • 확장명은 꼭 ibd

 

 

'스터디 > 이것이MySQL이다' 카테고리의 다른 글

[MySQL] 10. 스토어드 프로그램  (0) 2022.05.03
[MySQL] 09. 인덱스  (0) 2022.04.26
[MySQL] 07. SQL 고급  (0) 2022.04.12
[MySQL] 06. SQL 기본  (0) 2022.04.04
[MySQL] 05. MySQL 유틸리티 사용법  (0) 2022.04.04
Comments