1 분 소요

테이블과 뷰

테이블 만들기

테이블(table)은 표 형태로 구성된 2차원 구조로, 행과 열로 구성되어 있다.
행은 로우(row)나 레코드(record)라고 부르며, 열은 컬럼(column) 또는 필드(field)라고 부른다.

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

일반적인 쇼핑몰 데이터베이스인 ‘네이버 쇼핑’ 데이터베이스를 사용해 구조를 살펴보겠다.

회원 테이블(member)은 다음과 같은 구조로 설계하였다.

열 이름(한글) 열 이름(영문) 데이터 형식 널 허용 안함
(Not Null)
기타
아이디 mem_id CHAR(8) Yes 기본 키(PK)
회원 이름 mem_name VARCHAR(10) Yes  
인원수 mem_id TINYINT Yes  
주소 addr CHAR(2) Yes  
연락처 국번 phone1 CHAR(3) No  
전화번호 phone2 CHAR(8) No  
평균 키 height TINYINT No UNSINGED
데뷔 일자 debut_date DATE No  

구매 테이블(buy)은 다음과 같은 구조로 설계하였다.

열 이름(한글) 열 이름(영문) 데이터 형식 널 허용 안함
(Not Null)
기타
순번 num INT Yes 기본 키(PK), 자동 증가
아이디 mem_id CHAR(8) Yes 외래 키(FK)
제품 이름 prod_name CHAR(6) Yes  
분류 group_name CHAR(4) No  
가격 price INT Yes UNSIGNED
수량 amount SMALLINT Yes UNSIGNED

GUI 환경에서 테이블 만들기

데이터베이스 생성하기

CREATE DATABASE naver_db;

테이블 생성하기

데이터 입력하기

SQL로 테이블 만들기

앞에서 MySQL 워크벤치로 실습한 과정을 이번에는 SQL로 진행해보겠다.

데이터베이스 생성하기

DROP DATABASE IF EXISTS naver_db;
CREATE DATABASE naver_db;

테이블 생성하기

USE naver_db;
DROP TABLE IF EXISTS member;
CREATE TABLE member
(mem_id      CHAR(8) NOT NULL PRIMARY KEY,
 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,
 debut_date  DATE NULL
);
DROP TABLE IF EXISTS buy;
CREATE TABLE buy
(num          INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
 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)
);

데이터 입력하기

회원 테이블에 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');

이번에는 구매 테이블에 2건의 데이터를 입력해보겠다.

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