MySQL
[MySQL/Oracle] Oracle Join에서 Ansi Join으로 변경해야했던 이유 및 간단한 개념정리
기존에 사용하고 있던 쿼리를 유지보수업무 수행을 위해 수정해야했다. 수정해야 하는 쿼리는 Oracle Join이었는데 사용해본 적은 있지만 뭔지도 모르고 사용했던지라 개념이 부족했고, 수정을 했지만 원하는대로 조회가 되지 않아서 한참을 헤맸다. 쿼리를 Ansi Join 에서 Oracle Join으로 바꾼 이유 나는 outer join을 해서 join 테이블에 데이터가 없더라도 null이라도 가져와야 했다. 하지만 기존에 코드가 Oracle Inner Join을 사용하고 있었고, 해당 프로젝트에 DB가 MySQL이었기 때문에 Oracle Join을 유지하면서 쿼리를 수정하기가 어려웠다. 왜냐하면 MySQL에서는 (+)를 붙이면 문법에 오류가 있다는 오류가 생겨 원하는데로 조회가 되지 않았다. 결국 Ansi..
[MySQL] GROUP_CONCAT 사용방법
CONCAT - MySQL에서 지원하는 문자열 함수로, 두 개 이상의 문자열을 결합하여 단일 값으로 반환하는 함수 즉, 2개 이상의 엔티티를 결합하는 것을 의미한다. 예시 ) SELECT CONCAT('APPLE', 'BANANA') FROM FRUIT; 결과 : APPLEBANANA GROUP_CONCAT 사용하는 방법 SELECT '그룹 대상 컬럼', GROUP_CONCAT('CONCAT 대상 컬럼') FROM 테이블명 GROUP BY '그룹 대상 컬럼'; 예시 1) 예시 2) 위와 같이 2가지 방법으로 GROUP_CONCAT을 사용할 수 있고, SEPARATOR(구분자)를 사용하여 GROUP_CONCAT 할 수도 있다. 예시 2를 활용하여 데이터를 조회하면 다음과 같은 결과를 얻을 수 있다. 참고 ..
[MySQL] UNION, UNION ALL 연산자 사용법
동일한 컬럼을 가지고 있는 두 테이블은 JOIN절을 사용할 수 있다. 만약, 동일한 컬럼을 가지고 있지 않지만 두 테이블을 합쳐야 하는 경우가 있다면? UNION, UNION ALL 연산자를 사용하자! 예제 테이블 1) 과일 테이블 ID NAME 1 딸기 2 키위 예제 테이블 2) 과일2 테이블 ID NAME 3 딸기 4 참외 각각의 데이터를 SELECT문을 사용하여 추출할 수 있다. SELECT ID, NAME FROM 과일 테이블; SELECT ID, NAME FROM 과일2 테이블; UNION ALL 하나의 쿼리를 만들기 위해 UNION ALL을 사용해보자. SELECT ID, NAME FROM 과일 테이블 UNION ALL SELECT ID, NAME FROM 과일2 테이블; ID NAME 1 딸..