mysql 강좌 3

어제에 이어서…

※ 테이블 필드에 적용되는 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’ 


 


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));

20090107_03.jpg


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


20090107_04.jpg


4. 테이블 구조 변경
형식)

alter table 테이블이름 rename 새로운 이름; =>테이블 이름 변경
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;

Loading

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다