#혼공학습단13기 #혼공S #SQL #MYSQL

📘 Chapter 05 : 테이블과 뷰

<aside> 📔

5-1

  1. table: 표 형태로 구성된 2차원 구조
  2. GUI: 그래픽 사용자 인터페이스
  3. PK - FK: 두 테이블이 일대다로 연결되는 관계.

<aside> 📔

5-2

  1. DESCRIBE: 테이블 정보 열람.줄여서 DESC
  2. CONSTRAINT: 데이터의 무결성을 위해 제한하는 조건
  3. ALTER TABLE: 이미 만들어진 테이블을 수정하는 SQL문
  4. CASCADE
  5. DEFAULT: 값을 입력하지 않아도 자동으로 값 입력 </aside>

<aside> 📔

5-3

  1. WITH CHECK OPTION: view에 설정된 범위에 따라 그에 해당되는 값만 입력되도록 지정 </aside>

🪚 테이블 만들기

테이블을 만드는 방법: 1) 🖱️ 2) ⌨️

CASE 1: GUI 환경에서 만들기

image.png

<aside> 🖱️

데이터베이스 생성 → 테이블 생성 → 데이터 입력

  1. 데이터베이스 생성 (DB명: naver_db)

    <aside>

    1. CREATE DATABASE naver_db; 입력
    2. ⚡ (Execute) 아이콘 클릭

    cf. SCHEMAS 패널에서 마우스 우클릭 후 [REFRESH ALL]을 선택하면 적용된 화면을 볼 수 있습니다.

    cf. 데이터 삭제문 : DROP DATABASE naver_db;

    </aside>

  2. 테이블 생성

    <aside>

    Tables 우클릭 → [Create Table]선택

    Tables 우클릭 → [Create Table]선택

    1. Table Name에 이름 입력 → 2. Column Name에 열 이름 적고, Data Type 설정 → 3. 버튼 눌러서 정보 기입 → Apply → GUI 환경을 통해 생성된 SQL문 확인 가능

    1. Table Name에 이름 입력 → 2. Column Name에 열 이름 적고, Data Type 설정 → 3. 버튼 눌러서 정보 기입 → Apply → GUI 환경을 통해 생성된 SQL문 확인 가능

    ***GUI에서는 PK-FK 관계를 선택할 수 없습니다. 따라서 손코딩으로 PK-FK 관계를 구현해야 합니다.

    FOREIGN KEY(mem_id) REFERENCES member(mem_id)
    

    </aside>

  3. 데이터 입력

    <aside>

    [SCHEMAS] 패널 → [Naver_db] →[Tables]  → [member]우클릭 → [Select Rows -Limit 1000] 클릭

    [SCHEMAS] 패널 → [Naver_db] →[Tables] → [member]우클릭 → [Select Rows -Limit 1000] 클릭

    ***PK-FK 관계로 연결되어 있을 때, 기준 테이블에는 반드시 PK에 대한 정보가 있어야 합니다.

    ***물건 구매 전 회원 가입을 해야 하는 것고 같은 맥락입니다!

    </aside>

</aside>

CASE 2: SQL문 활용하기

<aside> ⌨️

데이터베이스 생성 → 테이블 생성 → 데이터 입력

  1. 데이터베이스 생성

    <aside>

    DROP DATABASE IF EXISTS naver_db;
    CREATE DATABASE naver_db;
    

    </aside>

  2. 테이블 생성

    <aside>

    1. naver_db 사용 → 기존 member 테이블 삭제 → 회원 테이블 생성

      DROP DATABASE IF EXISTS naver_db;
      CREATE DATABASE naver_db;
      
    2. 테이블 데이터 문법 : 열이름 데이터 형식 옵션(NULL 여부) 기본키

    3. AUTO_INCREMENT (PK, UNIQUE)

    4. PK-FK 관계 설정하기

    CREATE TABLE naver_db.member
    ( mem_id CHAR(8) NOT NULL PRIMARY KEY,**-- ***PK는 무조건 NOT NULL**
      mem_name VARCHAR(10) NOT NULL,
      mem_number TINYINT NOT NULL,
      addr CHAR(2) NOT NULL,
      phone1 CHAR(3) NULL,
      phone2 CHAR(8) NULL,
      height TINYINT UNSIGNED NULL, **-- ***unsigned는 자료형 뒤에 와야합니다**
      debut_date DATE NULL
      );
    
    DROP TABLE IF EXISTS naver_db.buy;
      CREATE TABLE naver_db.buy
      ( num INT AUTO_INCREMENT NOT NULL PRIMARY KEY, **-- ***AI 지정 열은 PK나 UNIQUE로 지정**
        mem_id CHAR(8) NOT NULL,
        prod_name CHAR(6) NOT NULL,
        group_name CHAR(4) NULL,
        price INT UNSIGNED NOT NULL,
        amount SMALLINT UNSIGNED NOT NULL,
        FOREIGN KEY(mem_id) REFERENCES member(mem_id) **-- ***PK-FK**
        );
    

    </aside>

  3. 데이터 입력

    <aside>

     INSERT INTO naver_db.buy VALUES(NULL, 'BLK','지갑',NULL,30,2);
     INSERT INTO naver_db.buy VALUES(NULL, 'BLK','맥북프로','디지털',1000,1);
    

    </aside>

</aside>



🚫 제약 조건으로 테이블을 견고하게 만들기

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

PRIMARY KEY 제약조건

<aside>

특징: 중복 불가, NOT NULL, 테이블 당 하나의 열에만 설정 가능

  1. CREATE TABLE에서 설정하기 - 열 정보와 함께

    CREATE TABLE naver_db.member
    ( mem_id CHAR(8) NOT NULL PRIMARY KEY,**-- ***PK 여깄지롱**
      ~~~
      );
    
  2. CREATE TABLE에서 설정하기 - 제일 마지막 행에 PRIMARY KEY (PK명)

    CREATE TABLE naver_db.member
    ( mem_id CHAR(8) NOT NULL **-- ***PK 여기 없지롱**
      ~~~
      PRIMARY KEY (mem_id) -- *****PK 여깄지롱**
      );
    
  3. ALTER TABLE에서 설정하기 - ALTER TABLE ~ ADD CONSTRAINT ~ PRIMARY KEY (PK명) </aside>

FOREIGN KEY 제약조건

<aside>

</aside>

UNIQUE KEY 제약조건 - 열 정보에 UNIQUE 추가

<aside>

</aside>

CHECK 제약조건 - CHECK(조건)

<aside>

</aside>

DEFAULT 정의

sql.sql