혼공단 SQL 4주차

choija·2022년 7월 31일
0

Chapter 5

4주차 기본미션!
p. 226 - market_db의 회원 테이블(member) 생성하고, p. 229 - 데이터 입력한 후 인증샷

05 - 1 테이블 만들기

테이블은 표 형태로 구성된 2차원 구조로, 행과 열로 구성된다.
로우(row)레코드(record)로 부르고, 컬럼(column) 또는 필드(feild)로 불린다.
(테이블은 엑셀의 시트와 거의 비슷한 구주로 이루어져 있다.)

데이터베이스 생성하기

MYSQL Workbench에서 새 쿼리 창을 하나 준비하고 다음과 같이 실해하여 사용한 naver_db를 삭제한뒤 다시 생성한다. 그리고 [Schemas] 패널의 빈 곳에서 마우스 오른쪽 버튼을 클릭한 뒤 [Refresh All]을 선택한다.

DROP DATABASE IF EXISTS naver_db;
CREATE DATABASE naver_db;

테이블 생성하기

  1. CREATE TABLE 구문으로 회원 테이블을 생성한다.
USE naver_db;
DROP TABLE IF EXISTS member;
CREATE TABLE member
( mem_id
  mem_name
  mem_number
  addr
  phone1
  phone2
  height
  debut_date
);
  1. 옵션을 추가하여 테이블을 다시 생성한다. NULL 및 NOT NULL을 지정해서 테이블을 다시 생성한다. 아무것도 지정하지 않으면 기본값으로 NULL을 허용한다. (하지만 혼란스러울 수 있으니 지정해주는 것이 좋다.)

  2. 기본 키로 설정하기 위해서는 지정할 열 뒤에 PRIMARY KEY문을 붙여주면 된다. 네이버 회원이면서 ID가 없으면 안되므로 기본 키로 지정된 열에 NOT NULL을 생략해도 당연히 NOT NULL로 취급한다.

  3. 열 이름과 데이터 형식을 먼저 지정한 뒤 나머지 조건들을 차근차근 설정하면 sql로도 어렵지 않게 테이블을 만들 수 있다. 테이블을 생성한뒤 MYSQL Workbench의 [Schemas] 패널에서 [Refresh All]을 선택하면 생성한 테이블을 확인할 수 있다.

  4. 외래 키를 제외하고 한 번에 SQL을 작성한다. 한 가지 순번 열에 AUTO_INCREMENT를 설정하는 것만 다르다. 주의할 점은 AUTO_INCREMENT로 지정한 열은 PRIMARY KEY나 UNIQUE로 지정해 줘야 한다.

손코딩
DROP TABLE IF EXISTS buy;
CREATE TABLE buy
( num
  mem_id
  prod_name
  group_name
  price
  amount
);
  1. 이제 구매 테이블의 아이디 열을 회원 테이블의 아이디 열의 외래 키로 설정해야 된다. 마지막 열의 뒤에 콤마를 입력한 뒤 외래 키와 관련된 문장을 입력한다.
FOREIGN KEY(mem_id) REFERENCES member(mem_id)

데이터 입력하기

회원 테이블에 3건의 데이터를 입력한다.

INSERT INTO member VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, '2015-10-19'):
INSERT INTO member VALUES('BLK', '블랙핑크', 4, '경남', '055', '22222222', 163, '2016-8-8'):
INSERT INTO member VALUES('WMN', '여자친구', 6, '경기', '031', '33333333', 166, '2015-1-15'):

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

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

제약조건은 데이터의 무결성을 지키기 위해 제한하는 조건이다. 일단 데이터의 무결성이랑 '데이터에 결함이 없음'을 뜻한다. 만약에 네이버 회원의 아이디가 중복되면 어떤일이 일어날까요?? 이메일, 블로그, 쇼핑 등 혼란이 될것이다. 이게 바로 데이터의 결함이고, 이런 결함이 없는 것을 데이터의 무결성이라고 표현한다.

이러한 결함을 방지하기 위해 회원 테이블의 아이디를 기본 키로 지정할 수 있다. 기본키의 조건은 '중복되지 않고, 비어 있지도 않음'이므로 중복된 아이디를 넣으려고 해도 입력 불가능하다.
기본 키 외에 MYSQL에서 제공하는 대표적인 제약조건은 다음과 같다.

  • PEIMARY KEY 제약조건
  • FOREIGN KEY 제약조건
  • UNIQUE 제약조건
  • CHECK 제약조건
  • DEFAULT 정의
  • NULL 값 허용

기본 키 제약조건

테이블에는 많은 행 데이터가 있다. 이 중에서 데이터를 구분할 수 있는 식별자를 기본 키(Primary Key)라고 부른다. ex) 회원 테이블의 아이디, 학생 테이블의 학번, 젝원 테이블의 사번 등이 이에 해당한다. 기본 키에 입력 되는 값은 중복될 수 없고 NULL 값이 입력 될 수 없다.

외래 키 제약조건

제약조건은 두 테이블 사이의 관계를 연결해주고 그 결과 데이터의 무결성을 보장해주는 역할을 한다. 외래 키가 설정된 열은 꼭 다른 테이블의 기본 키와 연결된다.


05 - 3 가상의 테이블: 뷰


4주차 선택미션!
p. 271 - 확인문제 4번 풀고 인증샷

profile
즐거운 프로그래밍

0개의 댓글