본문 바로가기
CLASS/DATABASE

#2-3 / database table 설계

by hingu 2024. 6. 3.

👀 게시판 database table - 기획서에 맞춰 설계(기획서에 작성되어 있지 않은 사항도 고려해야함 !! )

create table notice(
no int(3)  not null auto_increment, //999개의 글만 쓸 수 있음, 필수사항
subject varchar(200) not null, //최대 200글자 제목,필수사항
writer char(40) not null, //최대 20글자 글쓴이,필수사항
contents text not null, //긴글,선택사항
files varchar(100) null, //파일첨부,선택사항
today datetime not null default "0001-01-01 00:00:00", //글작성시간,필수사항
primary key(no) //중복방지
);

: notice라는 이름을 가진 table 생성

 

🔽

table 확인

desc notice;

 

 

 [ table 자료형 ] 

- char : 문자

- varchar : byte문자

- text : 많은 내용의 문자를 입력시 사용

   ==> tinytext(256byte) < text(65000byte) 65000자 < mediumtext(160000byte) 16만자 < longtext(420000byte = 4GB) 42만자

   tiny는 댓글에 주로 사용 , 주로 text 사용

- int : 숫자만

   ==> tinyint(1~127) < smallint(128~60000) < int(~40억) < bigint(~1조 8천억)

 

defualt로 날짜 및 시간에 대한 규칙성 적용 필요 (default "0001-01-01')

- date : 연,월,일

- time : 시,분,초

- datetime : 연,월,일 시,분,초 

 

* auto_increment 속성 : data 추가시 +1씩 자동 증가 (단, auto_increment는 무조건 primary - 안쓰면 에러)

 

🔽 

table 생성 확인

desc notice;

 

🔽

데이터 추가

insert into notice (no,subject,writer,contents,files,today) values ('0','공지사항 오픈','관리자','공지사항 오픈으로 여러가지 문제 서비스를 공지 하겠습니다.','','2024-06-03 16:37:42');

 

❗ 주의 : 다중키로 primary key 설정시 auto_increment가 기준으로 잡히며 

             여러개의 다중키를 사용하더라도 단한개의 칼럼 데이터가 다를 경우 insert가 가능하다

 

🔽

데이터 삽입 확인

select * from notice;

 

🔽

데이터 삭제 => 삭제 후 no 1 3 4 5 .... 그대로 이어짐

delete from notice where no='2';

 

 

 

[응용] - admin 회원가입

create table admin_member(
no int(4) not null auto_increment,
a_id char(20) not null, //20자까지 받음
a_pw varchar(50) not null, //50자까지 받음
a_name char(50) not null, //한글은 25자
a_email varchar(100) not null, //한글도메인 염두에 두고 넉넉하게 잡아야 함
a_tel char(11) not null, //전화번호 최대 11자
a_part varchar(30) not null, //부서명
a_position varchar(30) not null, //직급,
a_indate datetime not null default "0001-01-01 00:00:00", //등록일자
a_use char(1) not null default 'Y', //로그인 가능 여부(퇴사)
primary key(no,a_id,a_email,a_tel)
);

 

=>

전화번호는 0으로 시작하기때문에 java에서 인식 불가 ∴ char(문자) 로 잡아줘야함 !

 

⭐ 데이터 삽입 이렇게 해두댐

1.

insert into admin_member values ('0','master1','a123456','관리자','master1@naver.com','01012345678','운영팀','대리','2024-06-03 17:32:24','Y'); 

 

원래

 

2.

insert into admin_member (no,a_id,a_pw,a_name,a_email,a_tel,a_part,a_position,a_indate,a_use) values ('0','seeungirl99','a1324','박세은','seeungirl99@gmail.com','01012345467','부서1','직책1','2024-06-03 16:37:42','Y');

 

- 1은 중간에 column 추가 못함 

- 2로 작성시 중간에 column 추가 가능  (이렇게 다 작성 해주는게 좋다)

 

 

 

 

 

 

'CLASS > DATABASE' 카테고리의 다른 글

#3-2 / 외부 사용자 추가 방법  (0) 2024.06.04
#3-1 / unique, alter문법  (0) 2024.06.04
#2-2 / 사용자에게 권한주기  (0) 2024.06.03
#2-1 / MYSQL 기초문법  (0) 2024.06.03
#1-1 / MYSQL start,setting  (0) 2024.05.30