📖 MySQL,,/🖥️ Database

데이터베이스 설계

해피스마일 :) 2025. 2. 24. 15:52

기존 테이블 삭제

1. 'show tables;' 작성하여 기존에 있는 테이블을 확인한다.

 

2. 'drop table member;' 작성하여 기존에 있던 member 테이블을 삭제한다.

 

회원가입시 필요한 데이터베이스

1. 다음 사진을 참고하여 데이터베이스를 설계한다.

 

2. 데이터베이스에 필요한 값이 어떤 것인지 확인한다.

  • 회원번호
  • 아이디
  • 비밀번호
  • 고객명
  • 연락처
  • 이메일주소
  • SMS 수신여부
  • 광고/이벤트 수신여부
  • 가입 날짜

 

데이터베이스 설계

1. 메모장에 다음과 같이 작성한 후 복사하여 붙여넣는다.

create table member(
midx int not null auto_increment,
mid varchar(20) not null,
mpass varchar(15) not null,
mname char(20) not null,
mtel char(11) not null,
memail varchar(100) not null,
msms char(1) not null default 'N',
mevent char(1) not null default 'N',
mdate datetime not null default '0001-01-01 00:00:00',
primary key(midx)
);

primary key(midx)는 중복되지 않는 키 값을 말하며,
auto_increment 사용시 무조건 작성해야 한다.
default 'N'은 체크를 안 하면 자동으로 N이 들어가게 한다.
default '0001-01-01 00:00:00'는 어떤 식으로 날짜 및 시분초를 정한다.
다만, 0000-00-00은 없는 날짜이므로 0001-01-01로 작성한다.
auto_increment는 고유 값으로 중복이 되면 안 되므로
primary key는 중복되지 않는 키를 설정한다.

 

2. 아래 문구를 복사하여 붙여넣는다.

insert into member (midx,mid,mpass,mname,mtel,memail,msms,mevent,mdate) values('0','hong','a12345','홍길동','01055559999','hong@nate.com','Y','Y','2025-02-24 14:34:22');

 

3. 'select * from member;' 작성하여 데이터가 제대로 들어갔는지 확인한다.

 

4. 아래 문구를 복사하여 붙여넣는다.

insert into member (midx,mid,mpass,mname,mtel,memail,msms,mevent,mdate) values('0','kim','b12345','김유신','01044448888','you@naver.com','N','N','2025-02-24 14:40:35');
insert into member (midx,mid,mpass,mname,mtel,memail,msms,mevent,mdate) values('0','jang','c12345','장보고','01033337777','bogo@gmail.com','N','Y','2025-02-24 14:41:13');
insert into member (midx,mid,mpass,mname,mtel,memail,msms,mevent,mdate) values('0','lee','d12345','이순신','01022226666','god@naver.com','Y','N','2025-02-24 14:43:45');

 

5. 'select * from member;' 작성하여 데이터가 제대로 들어갔는지 확인한다.

 

select * from 테이블명;은 해당 테이블의 모든 데이터를 출력한다.

 

6. 'select * from member where mid='jang';' 작성하여 아이디가 jang인 사람의 데이터 값을 출력한다.

 

select * from 테이블명 where 컬럼명='데이터값';은 해당 컬럼의 데이터 조건에 맞는 값만 출력한다.

 

7. 'select * from member where msms='Y';' 작성하여 SMS 수신 동의한 사람의 데이터 값을 출력한다.

 

응용 문제

Q. 이벤트 수신을 받지 않겠다고 한 사람만 출력하시오.

 

A.

select * from member where mevent='N';

 

데이터 삭제

1. 'delete from member where midx='2';' 작성하여 midx 값이 2번인 데이터를 삭제한다.

 

2. 'select * from member;' 작성하여 midx 2번 값이 삭제 되었는지 확인한다.

 

3. 아래 코드를 복사하여 붙여넣는다.

insert into member (midx,mid,mpass,mname,mtel,memail,msms,mevent,mdate) values('0','kim','b12345','김유신','01044448888','you@naver.com','N','N','2025-02-24 14:40:35');

 

4. 'select * from member;' 작성하여 추가한 값이 2번 자리가 아닌 5번 자리에 추가된 것을 확인한다.

 

조건에 맞는 데이터 출력

1. 'select * from member where mtel='01044448888';' 작성하여 연락처가 '01044448888'인 사람의 데이터를 출력한다.

 

2. 'select mid, mname, mtel from member;' 작성하여 mid 컬럼과 mname 컬럼과 mtel 컬럼의 데이터를 출력한다.

 

데이터 확인

1. select * from 테이블명;
select * from 테이블명;은 해당 테이블의 모든 데이터를 출력한다.

 

2. select * from 테이블명 where 컬럼명='데이터값';

select * from 테이블명 where 컬럼명='데이터값';은 해당 컬럼의 데이터 조건에 맞는 값만 출력한다.

 

3. select 컬럼명, 컬럼명, 컬럼명 from 테이블명;
select 컬럼명, 컬럼명, 컬럼명 from 테이블명;은 특정 컬럼에 해당되는 정보만 출력하여 속도가 배로 빠르다.

 

응용 문제

Q1. 아래 사진을 참고하여 데이터베이스를 설계하시오.

 

A1.

create table event(
mno int not null auto_increment,
mid varchar(20) not null,
mname char(20) not null,
mpass varchar(15) not null,
memail varchar(100) not null,
mtel char(11) not null,
madd1 char(5) not null,
madd2 varchar(100) not null,
madd3 varchar(100) not null,
mdate datetime not null default '0001-01-01 00:00:00',
primary key(mno)
);
-----------------------------------------------------
insert into event (mno,mid,mname,mpass,memail,mtel,madd1,madd2,madd3,mdate) values('0','hong','홍길동','a1234','hong@naver.com','01011112222','11111','서울 aa구 bb동','cc호','2025-02-24 14:30:23');

insert into event (mno,mid,mname,mpass,memail,mtel,madd1,madd2,madd3,mdate) values('0','kim','김유신','b1234','you@gmail.com','01033334444','11123','서울 dd구 ee동','ff호','2025-02-24 14:32:45');

insert into event (mno,mid,mname,mpass,memail,mtel,madd1,madd2,madd3,mdate) values('0','jang','장보고','c1234','jang@naver.com','01055556666','11456','서울 gg구 hh동','ii호','2025-02-24 14:34:10');

insert into event (mno,mid,mname,mpass,memail,mtel,madd1,madd2,madd3,mdate) values('0','lee','이순신','d1234','god@gmail.com','01077778888','11777','서울 jj구 kk동','ll호','2025-02-24 14:36:58');

 

Q2. 아래 사진을 참고하여 데이터베이스를 설계하시오.

 

A2. 

create table review(
ridx int not null auto_increment,
writer char(30) not null,
email varchar(100) null,
subject varchar(225) not null,
btext text not null,
pros varchar(200) null,
cons varchar(200) null,
star tinyint not null default '1',
indate datetime not null default '0001-01-01 00:00:00',
primary key(ridx)
);
----------------------------------------------------------
insert into review (ridx,writer,email,subject,btext,pros,cons,star,indate) values('0','홍길동','hong@naver.com','편해요','옷이 아주 편해서 자주 입고 다니는 것 같아요','편해요','얇아요','4','2025-02-24 16:8:43');

insert into review (ridx,writer,email,subject,btext,pros,cons,star,indate) values('0','김유신','kim@gmail.com','기장이 딱 맞아요','기장이 딱 맞아서 수선을 안 해도 돼서 좋아요','기장이 길어요','','5','2025-02-24 16:10:28');

insert into review (ridx,writer,email,subject,btext,pros,cons,star,indate) values('0','이순신','lee@naver.com','허리가 안 맞아요','허리가 안 맞아서 입고 다닐 수가 없어요','','허리가 너무 커요','5','2025-02-24 16:12:51');

insert into review (ridx,writer,email,subject,btext,pros,cons,star,indate) values('0','장보고','jang@naver.com','핏이 예뻐요','기장도 딱 맞고 핏도 너무 예뻐요','기장이 잘 맞아요','허리가 너무 커요','5','2025-02-24 16:14:4');