SeSac (2021-08 ~ 2021-12)/MySQL

MySQL 05 - 관계(Foreign Key)와 index의 개념

배워도끝이없네 2021. 8. 27. 12:57

데이터베이스를 그릴땐 erd(Entity Relationship Diagram)을 그려야한다.

FK는 참조가되는 테이블의 PK가 된다.

 

fk를 거는 명령어

[Constraint] foreign key <idx-name> (col1) references tbl2(col2) ON [DELETE | UPDATE] [RESTRICT | CASECADE | SET NULL | NO ACTION | SET DEFAULT] );

 

idx-name은 적어주는것이 좋다.

RESTRICT : 참조하고있는 테이블이 있으면 삭제불가 (default이다)

CASECADE : 삭제하고있는 테이블을 참조하고있는 테이블의 행도 같이 지움

DEFAULT : 그 컬럼의 DEFAULT값으로 변하게 해라

UPDATE : 원하는 값으로 변하게 된다.

 

default를 주면 not null일때 값이 없으면 default가 들어간다.

nullable보단 not null컬럼이 좋다(인덱스를 찾을때 null값이 있으면 안좋음)

 

mysql은 디폴트가 한 레코드에 16kb이다. 이것을 페이지라고 한다

인덱스들은 별도의 공간에 저장이 되는데 이 인덱스들이 저장되는 공간을 인덱스페이지라고한다.

 

rand()함수는 0~0.99999까지의 랜덤한 난수를 생성한다

 

select ceil(rand() * 100) from dual;