어제에 이어서...
※ 테이블 필드에 적용되는 key
primary key(기본키) => 테이블에 반드시 1개의 필드에 부여
=> 중복된 데이타가 저장되지 않도록 만들어주는 역할을 한다.
=> 검색을 효율적으로 만들어준다.
unique key => 필드에 중복된 데이타가 저장되지 않도록 만들어주는 역할을 한다.
=> 테이블에 여러 개 존재할 수 있다.
index key(색인키) => 검색을 효율적으로 하기 위한 필드에 부여
foreign key(외래키) => 테이블의 유기적인 연결을 위해 필드에 부여하는 key
primary는 unique, index, foreign의 기능을 가지고 있다.
unique는 index 기능을 가지고 있다.
ex)
학생 테이블
| 학번 | 이름 | 전화번호 | 주민번호 | 학과코드 |
| primary | index | unique | foreign |
| 학번 | 성적 |
| primary |
| 학과코드 | 학과명 |
| primary |
※ 옵션
not null => null 값을 허용하지 않는다. 무조건 데이터를 입력해야 한다.
null => 존재하지 않는 데이타.(데이타가 없다)
primary key => 필드에 primary key 부여
default '값' => 값이 입력되지 않은 경우 자동 저장되는 데이타.
null을 허용하면 default는 null
not null인 경우 숫자는 0,문자는 공백, 날짜는 0000-00-00
auto_increment => 자동증가 (int 필드에 Not null,primary key의 옵션이 있는 경우만 부여)
예)게시판의 글번호
ex)
student
|
bunho |
name |
jumin |
hakcode |
bigo |
|
int |
varchar(20) |
varchar(15) |
int |
text |
|
not null |
not null |
not null |
not null |
|
|
primary |
index |
|
unique |
|
|
auto_increment |
|
|
default '10' |
|
mysql> create table student(bunho int not null primary key auto_increment
,name varchar(20) not null
,jumin varchar(15) not null
,hakcode int not null default '10'
,bigo text, index(name),unique(jumin));mysql> create table student(bunho int not null auto_increment
,name varchar(20) not null
,jumin varchar(15) not null
,hakcode int not null default '10'
,bigo text, primary key(bunho),index(name),unique(jumin));

mysql> show tables;
mysql> desc student;
mysql> show index from student;

4. 테이블 구조 변경
형식)
여러 명령어 수행
alter table 테이블이름 add 필드명 자료형 옵션,add 필드명 자료형 옵션,drop 필드명;
5. 테이블 최적화
형식)
optimize table 테이블이름 ;
=> 데이타의 삽입, 삭제, 변경으로 인해 가변적인 저장공간의 불규칙 데이타영역 발생을 최적화시켜준다
6. 테이블 삭제
형식)
drop table 테이블명 ;
ex)
mysql> drop table saram;
mysql> show tables;
테이블내의 테이터들도 삭제된다. 또한, 삭제한 테이블은 복구할 수 없다.
7. 테이블 초기화
형식)
truncate table 테이블이름 ;
데이타만 삭제한다. auto_increment까지 초기화.
8. 테이블에 index 부여
형식)
create unique index 인덱스이름 on 테이블명(필드명(크기)) ;
unique 생략가능
인덱스이름 생략가능
크기 생략가능
9. 테이블 index 삭제
형식)
drop index 인덱스이름 on 테이블명;
ex)
mysql> show index from student;
mysql> drop index name on student;
mysql> show index from student;
mysql> create unique index index_name on student(name(10));
mysql> show index from student;