[혼공S] 4주차 Chap 05. [혼공학습단 13기]

YOUNG·2025년 2월 7일
0
[혼공학습단 13기] 활동의 일환으로 한빛미디어의 < 혼자 공부하는 SQL >을 읽고 요약 정리한 글입니다.

Chap 05. 테이블과 뷰

1. 테이블 만들기

테이블은 표 형태로 구성된 2차원 구조로, 행과 열로 구성.
(행은 로우, 레코드 / 열은 컬럼, 필드 라고 부름)

데이터베이스와 테이블 설계하기

MySQL 워크벤치를 통해 테이블을 만들 수 있다.

✅ 테이블 설계 : 테이블 이름, 열 이름, 데이터 형식, 기본 키 등 설정

GUI 환경에서 테이블 만들기

  • 데이터베이스 생성하기
  • 테이블 생성하기
    • GUI에서는 기본 키-외래 키 관계를 선택할 수 없어서 코드를 일부 수정해야 함.
  • 데이터 입력하기

SQL로 테이블 만들기

  • 데이터베이스 생성하기 : CREATE DATABASE 구문 이용
  • 테이블 생성하기 : CREATE TABLE 구문 이용
    • 기본적으로 열 이름, 데이터 형식만 나열해주면 된다.
    • NULL / NOT NULL 지정
    • 기본 키 설정 -> 지정할 열 뒤에 PRIMARY KEY 문을 붙여준다.
    • 외래 키는 테이블을 만들 때 마지막에 FOREIGN KEY 예약어로 지정한다.
  • 데이터 입력하기 : INSERT 문 이용

[기본 숙제]

p. 226의 market_db의 회원 테이블(member) 생성하고, p. 229 데이터 입력한 후 인증하기



2. 제약조건으로 테이블을 견고하게

제약조건의 기본 개념과 종류

제약 조건 : 데이터의 무결성을 지키기 위해 제한하는 조건
✅ 대표적인 제약조건

  • PRIMARY KEY 제약조건
  • FOREIGN KEY 제약조건
  • UNIQUE 제약조건
  • CHECK 제약조건
  • DEFAULT 제약조건
  • NULL 값 허용

기본 키 제약조건

기본 키: 데이터를 구분할 수 있는 식별자
👉 중복될 수 없고, NULL값이 입력될 수 없다. 테이블은 기본 키를 1개만 가질 수 있다.

CREATE TABLE에서 설정하는 기본 키 제약조건

  • 열 이름 뒤에 PRIMARY KEY를 붙여준다.
  • 마지막 행에 PRIMARY KEY(열_이름)을 추가한다.

ALTER TABLE에서 설정하는 기본 키 제약조건

이미 만들어진 테이블을 수정하는 ALTER TABLE 구문을 통해 제약조건 설정

ALTER TABLE 테이블_이름
	ADD CONSTRAINT
    PRIMARY KEY (열_이름)

외래 키 제약조건

외래 키: 두 테이블의 관계를 연결하여 데이터의 무결성 보장
기본 키가 있는 테이블을 기준 테이블, 외래 키가 있는 테이블을 참조 테이블이라고 한다.

CREATE TABLE에서 설정하는 외래 키 제약조건

마지막 행에 FOREIGN KEY(열_이름) REFERENCE 기준_테이블(열_이름) 추가

ALTER TABLE에서 설정하는 외래 키 제약조건

ALTER TABLE 참조_테이블_이름
	ADD CONSTRAINT
    FOREIGN KEY (열_이름)
    REFERENCE 기준_테이블_이름(열_이름)

기준 테이블의 열이 변경될 경우

👉 기본 키-외래 키 관계가 설정되면 기준 테이블의 열은 변경되거나 삭제되지 않는다.

ON UPDATE CASCADE, ON DELETE CASCADE : 기준 테이블의 데이터가 변경, 삭제되면 참조 테이블도 함께 변경, 삭제된다.

기타 제약조건

고유 키 제약조건

👉 중복되지 않는 유일한 값을 입력해야 하며, NULL 값은 허용한다. 열 뒤에 UNIQUE 추가

체크 제약조건

👉 입력하는 데이터 점검. 열 뒤에 CHECK(조건) 추가. ALTER TABLE 구문으로 제약조건 추가 가능.

기본값 정의

👉 값을 입력하지 않았을 때, 자동으로 입력될 값 미리 지정. 열 뒤에 DEFAULT 값 추가.

널 값 허용

👉 열 뒤에 NOT NULL 추가. 기본 키는 생략해도 자동으로 NOT NULL로 인식.


3. 가상의 테이블: 뷰

뷰의 개념

는 데이터베이스 개체 중 하나로 가상의 테이블이라고 할 수 있다.

뷰의 기본 생성

CREATE VIEW 뷰_이름
AS
	SELECT 문;

뷰의 실체는 SELECT 문. 뷰를 만든 후에는 테이블과 동일하게 사용.

뷰의 작동

사용자는 뷰를 테이블이라고 생각하고 접근한다.

뷰는 기본적으로 '읽기 전용'으로 사용되지만, 경우에 따라 뷰를 통해 원본 테이블의 데이터를 수정할 수 있다.

뷰를 사용하는 이유

1️⃣ 보안에 도움이 된다.
(예시: 테이블의 일부 정보만을 포함하는 뷰를 생성하여, 뷰에만 접근할 수 있는 권한 부여)

2️⃣ 복잡한 SQL을 단순하게 만들 수 있다.
(예시: 자주 사용하는 SELECT문을 뷰로 생성하면, 복잡한 SQL을 입력할 필요 사라짐)

뷰의 실제 작동

뷰의 실제 생성, 수정, 삭제

  • 별칭을 사용하여 뷰의 열이름을 테이블과 다르게 지정 가능

    • 별칭은 열 이름 뒤에 따옴표로 묶어주고, 형식상 AS를 붙여준다.
    • 띄어쓰기나 한글도 가능하며, 공백이 있다면 백틱으로 묶어줘야 한다.
  • 뷰의 수정은 ALTER VIEW를, 뷰의 삭제는 DROP VIEW를 사용한다.

※ 데이터베이스 개체는 서로 완전히 다른 기능을 하지만, 생성/수정/삭제하는 문법은 거의 동일
( CREATE / ALTER / DROP )

뷰의 정보 확인

  • DESCRIBE 문으로 기존 뷰의 정보 확인 가능
  • SHOW CREATE VIEW 문으로 뷰의 소스 코드 확인 가능

뷰를 통한 데이터의 입력/수정/삭제

  • 입력: INSERT / 수정: UPDATE / 삭제: DELETE

  • 뷰를 통해 데이터를 입력하려면, 뷰에서 보이지 않는 테이블의 열의 NOT NULL이 없어야 한다.

  • 조건을 설정한 뷰에서 만족하지 않은 데이터를 입력하면 입력은 되지만 뷰에는 보이지 않는다.
    👉 WITH CHECK OPTION 예약어를 사용하면 설정 범위의 데이터만 입력하도록 제한한다.

뷰가 참조하는 테이블의 삭제

  • DROP 문을 사용하면 뷰가 참조하고 있어도 테이블이 삭제된다.
  • 뷰가 조회되지 않으면 CHECK TABLE문으로 뷰의 상태를 확인할 수 있다.

※ 하나의 테이블로 만든 뷰는 단순 뷰, 두 개 이상의 테이블로 만든 뷰는 복합 뷰라고 한다.

[추가 숙제]

p. 271 확인 문제 4번 풀고 인증하기

  1. 다음은 기존에 뷰가 있으면 덮어쓰고, 없으면 생성하는 SQL입니다. 빈칸에 들어갈 내용을 고르세요.
(                       ) 뷰_이름
AS
	SELECT 문;

답: 2️⃣CREATE OR REPLACE VIEW


profile
개발 연습생

0개의 댓글

관련 채용 정보