21. MySQL 테이블과 뷰 - SQL문으로 테이블 생성

김제이아이엠·2025년 11월 5일

MySQL

목록 보기
19/41

MySQL 도움말에 나오는 테이블을 생성하는 기본적인 형식은 다음과 같다.

일부만 써놓은 것이고 실제는 좀 더 복잡

DROP DATABSE tabledb;
CREATE DATABASE tabledb;

USE tabledb;
DROP TABLE IF EXISTS buytbl, usertbl; -- usertbl에 buytbl이 딸려있으므로 무조건 buytbl먼저 삭제해야함.
CREATE TABLE usertbl -- 회원 테이블
( userID	CHAR(8), -- 사용자 아이디
  name		VARCHAR(10), -- 이름
  birthYear		INT, -- 출생년도
  addr		CHAR(2), -- 지역(경기,서울,경남 등으로 글자만 입력)
  mobile1	CHAR(3), -- 휴대폰외국번(011, 016, 017, 018, 019, 010 등)
  mobile2	CHAR(8), -- 휴대폰의 나머지 전화번호(하이픈 제외)
  height	 SMALLINT, -- 키
  mDate		DATE -- 회원 가입일
);
CREATE TABLE buytbl -- 구매 테이블
( num	INT, -- 순번(PK)
  userid	CHAR(8), -- 아이디(FK)
  prodName	CHAR(6), -- 물품명
  groupName	CHAR(4), -- 분류
  price		INT, -- 단가
  amount	SMALLINT -- 수량
);

여기에 NOT NULL 추가하기
근데 전화번호가 없는 사람도 회원가입을 하게 해줌.
없어도 되는 사람은 NULL 입력

USE tabledb;
DROP TABLE IF EXISTS buytbl, usertbl; -- usertbl에 buytbl이 딸려있으므로 무조건 buytbl먼저 삭제해야함.
CREATE TABLE usertbl -- 회원 테이블
( userID	CHAR(8) NOT NULL, -- 사용자 아이디
  name		VARCHAR(10) NOT NULL, -- 이름
  birthYear		INT NOT NULL, -- 출생년도
  addr		CHAR(2) NOT NULL, -- 지역(경기,서울,경남 등으로 글자만 입력)
  mobile1	CHAR(3) NULL, -- 휴대폰외국번(011, 016, 017, 018, 019, 010 등)
  mobile2	CHAR(8) NULL, -- 휴대폰의 나머지 전화번호(하이픈 제외)
  height	 SMALLINT NULL, -- 키
  mDate		DATE NULL -- 회원 가입일
);
CREATE TABLE buytbl -- 구매 테이블
( num	INT NOT NULL, -- 순번(PK)
  userid	CHAR(8) NOT NULL, -- 아이디(FK)
  prodName	CHAR(6) NOT NULL, -- 물품명
  groupName	CHAR(4) NULL, -- 분류
  price		INT NOT NULL, -- 단가
  amount	SMALLINT NOT NULL -- 수량
);

이번에는 기본키 설정

USE tabledb;
DROP TABLE IF EXISTS buytbl, usertbl; -- usertbl에 buytbl이 딸려있으므로 무조건 buytbl먼저 삭제해야함.
CREATE TABLE usertbl -- 회원 테이블
( userID	CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디
  name		VARCHAR(10) NOT NULL, -- 이름
  birthYear		INT NOT NULL, -- 출생년도
  addr		CHAR(2) NOT NULL, -- 지역(경기,서울,경남 등으로 글자만 입력)
  mobile1	CHAR(3) NULL, -- 휴대폰외국번(011, 016, 017, 018, 019, 010 등)
  mobile2	CHAR(8) NULL, -- 휴대폰의 나머지 전화번호(하이픈 제외)
  height	 SMALLINT NULL, -- 키
  mDate		DATE NULL -- 회원 가입일
);
CREATE TABLE buytbl -- 구매 테이블
( num	INT NOT NULL PRIMARY KEY, -- 순번(PK)
  userid	CHAR(8) NOT NULL, -- 아이디(FK)
  prodName	CHAR(6) NOT NULL, -- 물품명
  groupName	CHAR(4) NULL, -- 분류
  price		INT NOT NULL, -- 단가
  amount	SMALLINT NOT NULL -- 수량
);

buytbl의 num에 AUTO_INCREMENT 추가

DROP TABLE IF EXISTS buytbl;
CREATE TABLE buytbl -- 구매 테이블
( num	INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
  userid	CHAR(8) NOT NULL, -- 아이디(FK)
  prodName	CHAR(6) NOT NULL, -- 물품명
  groupName	CHAR(4) NULL, -- 분류
  price		INT NOT NULL, -- 단가
  amount	SMALLINT NOT NULL -- 수량
);

FK추가

DROP TABLE IF EXISTS buytbl;
CREATE TABLE buytbl -- 구매 테이블
( num	INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
  userid	CHAR(8) NOT NULL, -- 아이디(FK)
  prodName	CHAR(6) NOT NULL, -- 물품명
  groupName	CHAR(4) NULL, -- 분류
  price		INT NOT NULL, -- 단가
  amount	SMALLINT NOT NULL -- 수량
  , FOREIGN KEY(userid) REFERENCES usertbl(userID)
);
INSERT INTO usertbl VALUES('LSG', '이승기', 1987, '서울', '011', '1111111', 182, '2008-8-8');
INSERT INTO usertbl VALUES('KBS', '김범수', 1979, '경남', '011', '2222222', 173, '2012-4-4');
INSERT INTO usertbl VALUES('KKH', '김경호', 1971, '전남', '019', '3333333', 177, '2007-7-7');

INSERT INTO buytbl VALUES(NULL, 'KBS', '운동화', NULL, 30, 2);
INSERT INTO buytbl VALUES(NULL, 'KBS', '노트북', '전자', 1000, 1);
INSERT INTO buytbl VALUES(NULL, 'JYP', '모니터', '전자', 200, 1);

-- 추가 입력
INSERT INTO usertbl VALUES('JYP', '조용필', 1950, '경기', '011', '4444444', 166, '2009-4-4');
INSERT INTO usertbl VALUES('SSK', '성시경', 1979, '서울', NULL, NULL, 186, '2013-12-12');
INSERT INTO usertbl VALUES('LJB', '임재범', 1963, '서울', '016', '6666666', 182, '2009-9-9');
INSERT INTO usertbl VALUES('YJS', '윤종신', 1969, '경남', NULL, NULL, 170, '2005-5-5');
INSERT INTO usertbl VALUES('EJW', '은지원', 1972, '경북', '011', '8888888', 174, '2014-3-3');
INSERT INTO usertbl VALUES('JKW', '조관우', 1965, '경기', '018', '9999999', 172, '2010-10-10');
INSERT INTO usertbl VALUES('BBK', '바비킴', 1973, '서울', '010', '0000000', 176, '2013-5-5');
INSERT INTO buytbl VALUES(NULL, 'JYP', '모니터', '전자', 200, 1);
INSERT INTO buytbl VALUES(NULL, 'BBK', '모니터', '전자', 200, 5);
INSERT INTO buytbl VALUES(NULL, 'KBS', '청바지', '의류', 50, 3);
INSERT INTO buytbl VALUES(NULL, 'BBK', '메모리', '전자', 80, 10);
INSERT INTO buytbl VALUES(NULL, 'SSK', '책', '서적', 15, 5);
INSERT INTO buytbl VALUES(NULL, 'EJW', '책', '서적', 15, 2);
INSERT INTO buytbl VALUES(NULL, 'EJW', '청바지', '의류', 50, 1);
INSERT INTO buytbl VALUES(NULL, 'BBK', '운동화', NULL, 30, 2);
INSERT INTO buytbl VALUES(NULL, 'EJW', '책', '서적', 15, 1);
INSERT INTO buytbl VALUES(NULL, 'BBK', '운동화', NULL, 30, 2);
profile
1이되기까지

0개의 댓글