후반부로 갈수록 JOIN을 사용하는 문제가 많아 조금 어려웠다.
특히 아묻따 INNER JOIN만 남발하던 나에게는...
퀘스트 중, 직원이 없는 부서의 이름을 찾는 쿼리를 작성하는 문제가 있었다. 이때 LEFT JOIN
을 사용했는데, 직접 테이블을 합친 모습을 보고 싶어 GPT에게 부탁했다.
위의 두 개의 테이블을 LEFT JOIN
하면 다음과 같은 결과가 나온다. LEFT JOIN
은 왼쪽 테이블의 모든 데이터를 유지하고 오른쪽 테이블에 매칭되지 않는 데이터에 대해 NULL
을 반환한다. 여기서 employee_name
이 NULL
인 부서를 찾아내면 되는 것이다.
SELECT d.id AS department_id, d.name AS department_name, e.name AS employee_name
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id;
다음과 같이 IS NULL
을 사용하여 직원이 없는 부서를 필터링하면 된다.
SELECT d.name AS department_name
FROM departments d
LEFT JOIN employees e ON d.id = e.department_id
WHERE e.id IS NULL;
substring(int beginIndex)
/ substring(int beginIndex, int endIndex)
: 문자열의 부분 문자열을 반환한다.concat(String str)
: 문자열의 끝에 다른 문자열을 붙인다.replace(CharSequence target, CharSequence replacement)
: 특정 문자열을 새 문자열로 대체한다.replaceAll(String regex, String replacement)
: 문자열에서 정규 표현식과 일치하는 부분을 새 문자열로 대체한다.replaceFirst(String regex, String replacement)
: 문자열에서 정규 표현식과 일치하는 첫 번째 부분을 새 문자열로 대체한다.toLowerCase()
/ toUpperCase()
: 문자열을 소문자나 대문자로 변환한다.trim()
: 문자열 양쪽 끝의 공백을 제거한다. 단순 Whitespace 만 제거할 수 있다.strip()
: Whitespace 와 유니코드 공백을 포함해서 제거한다.split(String regex)
: 문자열을 정규 표현식을 기준으로 분할한다.join(CharSequence delimiter, CharSequence... elements)
: 주어진 구분자로 여러 문자열을 결합한다.valueOf(Object obj)
: 다양한 타입을 문자열로 변환한다.toCharArray()
: 문자열을 문자 배열로 변환한다.format(String format, Object... args)
: 형식 문자열과 인자를 사용하여 새로운 문자열을 생성한다.matches(String regex)
: 문자열이 주어진 정규 표현식과 일치하는지 확인한다.아침에 운동 다녀와서 뭐 하다보면 금세 점심이 된다. 오전 시간 시간을 더 잘 활용해보자..🤔 그리고 장바구니에 담아뒀던 인프런 강의도 구매했다. 강의 듣는 속도보다 사는 속도가 빨라서 따라잡기 힘들지만 얼른 들어야겠다..ㅎ