티스토리 뷰
[MySQL] Create Table
1. 심리테스트 퀴즈 - 테이블 만들기!
테이블을 만들기 전, 목록을 구상한다.
테이블명 : Faq
idx | question | answer_a_text | answer_b_text | answer_a_no | answer_b_no |
숫자 (int) | 문자 (varchar) | 문자 (varchar) | 문자 (varchar) | 숫자 (varchar) | 숫자 (varchar) |
no | 질문 | 답변_a | 답변_b | 답변_a_no | 답변_b_no |
create table Faq(
idx int(11) auto_increment comment 'no',
question varchar(100) not null comment '질문',
answer_a_text varchar(100) not null comment '답변_a',
answer_b_text varchar(100) not null comment '답변_b',
answer_a_no int(11) not null comment '답변_a_no',
answer_b_no int(11) not null comment '답변_b_no',
primary key(idx)
) ENGINE=InnoDB CHARSET=utf8 COMMENT='퀴즈';
데이터 유형
- auto_increment : 자동으로 숫자가 증가합니다.
- regDate : 날짜
- char(s) : 고정 길이 문자열 정보,
- s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당도니 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다.
- s는 기본 길이 1바이트, 최대 길이 Oracle 2000바이트 SQL Server 8000바이트
- VARCHAR(2) : 2글자
- CHARACTER VARYING의 약자로 가변 길이 문자열 정보(Oracle은 VARCHAR2 로 표현, SQL Server는 VARCHAR로 표현)
- s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000 바이트
- s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다.
- not null : 해당 필드는 NULL 값을 저장할 수 없게 됩니다.
- Primary key (PK): 한 개 혹은 여러 개의 칼럼으로 테이블 내의 각 행들을 구별하기 위한 목적 ex) id
- 그 자체만으로 Unique 하며 만약 여러 개의 Column이 PK로 묶여 있다면, 해당 값들의 조합이 반드시 Unique 해지게 된다.
- NULL 값을 갖을 수 없고(NOT NULL), Unique key라는 특징을 갖게 된다.
- MySQL에서는 Int 작업이 빠르기 때문에 PK는 Int형으로 지정하는 것이 좋다.
- CHARSET = utf8 : 한글깨짐 방지
- InnoDB 특징
- 트랜젝션 지원
- 빈번한 쓰기, 수정, 삭제시 처리 능력
- 디스크, 전원 등의 장애 발생시 복구 성능
- 동시처리가 많은 환경에 적합
- Row 단위 락킹
- MyISAM의 특징
- 상대적으로 높은 성능
- 읽기 위주의 요청에 유리
- 테이블 단위 락킹
- 제약 조건(constraint)
- 제약 조건(constraint)이란 데이터의 무결성을 지키기 위해 데이터를 입력받을 때 실행되는 검사 규칙을 의미합니다. 이러한 제약 조건은 CREATE 문으로 테이블을 생성할 때나, ALTER 문으로 필드를 추가할 때도 설정할 수도 있습니다.
- CREATE TABLE 문에서 사용할 수 있는 제약 조건은 다음과 같습니다.
- NOT NULL : 해당 필드는 NULL 값을 저장할 수 없게 됩니다.
- UNIQUE : 해당 필드는 서로 다른 값을 가져야만 합니다.
- PRIMARY KEY : 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 됩니다.
- FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만듭니다.
- DEFAULT : 해당 필드의 기본값을 설정합니다.
2. 기타 예시
Create table jatest (
idx int(11) auto_increment comment ‘index’,
name varchar(10) not null comment ‘성함‘,
email varchar(100) not null comment ‘이메일‘,
phone varchar(20) comment ‘전화번호‘,
inPath varchar(50) not null comment ‘유입경로‘,
comment text not null comment ‘문의사항‘,
regDate datetime not null comment ‘등록일’ default NOW(),
primary key(idx)
) ENGINE=InnoDB CHARSET=utf8 COMMENT=‘문의하기’;
'PHP' 카테고리의 다른 글
[PHP] 코드영역 , 변수 (0) | 2020.11.17 |
---|---|
[PHP] 문자열 함수 (0) | 2020.02.24 |
[PHP] get vs post 방식 (0) | 2020.02.24 |
MySQL 기본문법 (0) | 2020.02.24 |
댓글
© 2018 eh2world