어제에 이어서…
※ 테이블 필드에 적용되는 key
primary key(기본키) => 테이블에 반드시 1개의 필드에 부여
=> 중복된 데이타가 저장되지 않도록 만들어주는 역할을 한다.
=> 검색을 효율적으로 만들어준다.
unique key => 필드에 중복된 데이타가 저장되지 않도록 만들어주는 역할을 한다.
=> 테이블에 여러 개 존재할 수 있다.
index key(색인키) => 검색을 효율적으로 하기 위한 필드에 부여
foreign key(외래키) => 테이블의 유기적인 연결을 위해 필드에 부여하는 key
primary는 unique, index, foreign의 기능을 가지고 있다.
unique는 index 기능을 가지고 있다.
ex)
학생 테이블
학번 | 이름 | 전화번호 | 주민번호 | 학과코드 |
primary | index | unique | foreign |
성적 테이블
학번 | 성적 |
primary |
학과 테이블
학과코드 | 학과명 |
primary |
학생 테이블의 학과코드는 학과 테이블과 유기적인 연결의 위해 foreign key를 부여함.
참고) index key를 부여할 수 없는 자료형 : text,blob (가변형이고 테이터양이 많아서 부여하지 않음.)
※ 옵션
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’ |
|
,name varchar(20) not null
,jumin varchar(15) not null
,hakcode int not null default ’10’
,bigo text, index(name),unique(jumin));
,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 필드명 자료형 옵션 ; => 필드추가 (테이블 마지막 필드로 추가)
alter table 테이블이름 add 필드명 자료형 옵션 after 필드명 ; => 필드 뒤에 추가
alter table 테이블이름 add 필드명 자료형 옵션 first ; =>테이블 처음 필드로 추가
alter table 테이블이름 drop 필드명 ; =>필드 삭제
alter table 테이블이름 change 기존필드 새로운필드 자료형 옵션 ; => 필드의 이름,자료형,옵션 변경.
alter table 테이블이름 modify 필드명 자료형 옵션 ; => 해당 필드의 자료형,옵션만 변경
alter table 테이블이름 add primary key(필드명) ; =>필드에 primary key 부여
alter table 테이블이름 add index 인덱스이름 (필드명) ; => 필드에 index key 부여
alter table 테이블이름 add unique 유니크이름 (필드명) ; => 필드에 unique key 부여
alter table 테이블이름 drop primary key ; => primary key 삭제
alter table 테이블이름 drop index 인덱스이름(유니크이름) ; => index(unique) key 삭제
여러 명령어 수행
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;