Sql개발자

Mysql Auto Increment, Primary Key, Foreign Key 옵션 정리

martinooo 2022. 12. 8. 16:12

🤳 Mysql Auto Increment 란?

 


테이블 값을 입력하다보면 자동으로 값을 증가 시켜야된다. 그 이유는 테이블 마다 PK(primary key) 설정을 한다. 그래서
PK의 특징은 고유성(unique) 중복된 데이터를 가지면 안되는 특징 때문에 각 row에 index를 체크해서 자동으로 값을 올려주는 옵션이 AUTO_INCREMENT이다. 

조건: 

기본키(Primary Key)에만 옵션 부여가 가능하다.

 

사용 예제 

CREATE TABLE auto_test(
	id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(64)
 );

개념 :

AUTO_INCREMENT을 사용하다가 1~5번까지의 데이터를 넣고 2~5번 데이터를 지우고 데이터를 다시 생성 해보면 2~5번의 데이터가 들어가는게 아니고 5~8번의 Key를 가진 데이터가 생성된다.

 

2~5번의 값으로 데이터를 넣고 싶으면 초기화를 해줘야한다.

 

Auto_increment index 초기화 방법: 

ALTER TABLE tableName AUTO_INCREMENT=1;
SET @COUNT = 0;
UPDATE tableName SET auto_id(auto 설정한 컬럼) = @COUNT:=@COUNT+1;

🤳 Mysql Primary Key 란?


Primary Key(기본키)는 오직 테이블에서 한개만 존재하는 key이다. 기본키로 지정되는 순간 NOT NULL, UNIQUE 제약 조건의 특징을 가지게 되며 하나 이상의 컬럼이 그룹화 되어 기본키로 사용되는 경우도 있습니다.
쉽게 말하면, PK는 한개 혹은 여러개의 컬럼으로 테이블 내의 각 행들을 구별하기 위한 목적을 갖고있다.

참고:  

MySQL 에서는 int(11) 작업이 빠르기 때문에 PK는 INT형으로 지정하는것이 바람직하다.

 

사용 예제   

CREATE TABLE pk_test(
	no INT(10) NOT NULL PRIMARY KEY,
	title VARCHAR(64)
 );

🤳 Mysql Foreign Key 란?


외래키는 두 테이블을 서로 연결하는데 사용되는 키이다.
외래키가 포함된 테이블을 자식테이블이라 부르고 외래키 값을 제공하는 테이블을 부모 테이블이라한다.

개념 :

  • 외래키 값은 null 혹은 부모테이블의 PK값과 동일해야한다. (참조 무결성 제약조건)
  • 부모 테이블에 기본키를 외래키로 지정할 수 있다.
create table department(
  	id int auto_increment primary key,
	name varchar(20) not null,
	code char(13) not null unique key
);

create table employee (
  	id int auto_increment primary key,
	name varchar(20) not null,
	code char(13) not null unique key,
	dept_id int,
	foreign key (dept_id) references department(id)
);