본문 바로가기

MySQL

MySQL :: inner join :: (이너)조인과 인덱스의 실험!!! (explain 활용) 현재 프로젝트를 하는 중에 인덱스를 활용한 이너 조인(inner join) 을 필요로 하는 게 있었다. 그런데 중요한 것은 조인을 설정할 때는 조인을 하려는 값을 인덱스를 걸어줘야, 성능이, 즉 속도가 빨리 나올 수 있다. 여기서 그럼 이너조인이 뭔지 살펴보자. 가령 대학교의 컴퓨터 공학부에서 학생들의 이름과 학번을 관리하는 파일이 있고, 데이터베이스 과목을 수강하는 학생들의 학번과 성적을 관리하는 테이블이 있다고 하자. 학생들의 테이블을 student 라고 하고 데이터베이스 과목을 수강하는 학생들의 테이블을 db 라고 하면 아래와 같은 쿼리 문을 실행해 주자. create table student( stuId tinyint, name varchar(10), index idx_stuId(stuId) );.. 더보기
MySQL :: 현재 시간을 저장하는 now() 함수 & sysdate() 와의 차이 가끔 테이블을 만들다보면, 튜플(데이터 행 이라고 이해하자) 이 만들어진 시간을 저장해야 할 경우가 있다. 예를 들어, 게시판에 글을 쓸 경우, 게시판이 써진 시간을 저장해야 하는 경우가 있다. 이 때 사용할 수 있는 것이 now() 함수 이다. create table PostBox( content varchar(150), birth timestamp not null default now(), ) 위에서 처럼 default 값을 now() 로 주게 되면, 테이블의 값을 저장할 때마다 따로 birth 컬럼에 값을 입력하지 않고 null 을 입력할 경우, now() 값이 반환하는 현재 시간을 저장한다. 참고로 여기서, timestamp 타입으로 해줘야 한다. datetime 은 되지 않고 에러를 발생시킨다... 더보기
MySQL :: foreign key 사용하기, on update cascade, on delete set null MySQL 에서 foreign key 관련해서 실험을 해봤다. 좌측의 Oracle 카테고리에서 foreign key 에 대한 설명은 이미 한 상태이다. 그래도 간략히 설명하면 Foreign key 는 외부 테이블에서 참고하려는 주 키 (primary key) 를 의미한다. 주 키 란, 테이블에서 유일한 값을 가지는 속성을 의미한다. 가령 대학생의 속성은 여려가지가 있을 수 있다. 나이, 학부, 이름, 키, 주소, 학번 등등등.. 여기서 학번은 같은 대학내에서 결코 중복되서는 안된다. 학번은 학생을 구별지어주는 ID 이기 때문이다. 이 때 학번이 학생 이라는 테이블의 주 키가 된다. 그럼 외부 키(foreign key) 는 무엇을 의미하는가? 학교에서 관리를 편하게 하기 위해 학부의 이름을 이름 그대로 쓰.. 더보기