본문 바로가기
반응형

Database3

[MySQL] SELF JOIN 셀프 조인을 쓰는 이유 JOIN 1) 우리에게 다음과 같은 MONKEYS 테이블과 FRUITS 테이블이 주어졌습니다. create table MONKEYS ( id, tutor_id, favorite_fruit_id, type, monkey_nm, training_status ); create table FRUITS ( id, fruit_nm, origin, price ); 이로부터 원숭이의 이름과 원숭이가 가장 좋아하는 과일의 이름을 찾으려면 어떻게 해야 할까요? 여러 개의 테이블을 동시에 참조하려고 할 때, ON절에 주어진 조건으로 테이블을 결합할 수 있는 JOIN을 사용합니다. m 테이블의 favorite_fruit_id와 f 테이블의 id가 일치하는 경우를 조건으로 걸어 JOIN 한 다음, 결합된 테이블로부터 검색을 하.. 2023. 5. 2.
MySQL - GROUP_CONCAT 여러 레코드의 값을 하나로 합치기 GROUP_CONCAT 함수는 그룹 함수로써, 해당 그룹의 지정된 컬럼 중에서 NULL이 아닌 값들을 하나로 합쳐줍니다. 사용방법은 다음과 같습니다. SELECT dept, GROUP_CONCAT(name) as names FROM mushrooms GROUP BY dept GROUP BY를 이용해 dept가 같은 것끼리 그룹핑한 다음, GROUP_CONCAT(name)으로 name 컬럼의 값들을 하나로 만들어줍니다. 결과는 다음과 같이 나오게 됩니다. dept names 영업 느타리, 영지 개발 송이, 새송이, 양송이 기본 구분자는 콤마(,) 이므로 변경을 원한다면 GROUP_CONCAT(name SEPARATOR ' - ') 와 같이 구분자를 명시해줄 수 있습니다. DISTINCT를 걸어주면 중복값은.. 2023. 2. 2.
외래키를 사용하지 않는 이유 feat. 인덱스 외래 키(foreign key) 란 관계형 데이터베이스에서 다른 릴레이션(테이블)을 참조할 때 사용하는 키입니다. 아래 학생 릴레이션을 봅시다. id 학생명 강의명 강의코드 1 개똥이 병충해 방지기법 1231 2 길동이 분신술 4242 3 말똥이 축산업 개론 2323 우리는 길동이에게 분신술을 가르치는 사람이 누구인지 알고 싶지만 학생 릴레이션에는 관련된 정보가 없습니다. 강의 코드가 4242라는 것만 알 수 있을 뿐입니다. 그럼 강의 릴레이션을 한번 뒤져봐야겠죠? 강의코드 강의명 교수 1231 병충해 방지기법 김개동 4242 분신술 나루도 2323 축산업 개론 이말동 강의 코드 4242인 행을 보면 교수님 이름이 나루도라는 것을 알 수 있습니다. 이렇게 우리는 학생 릴레이션으로부터 강의 릴레이션을 참조.. 2022. 5. 25.
반응형