본문 바로가기

SQL35

WHERE VS HAVING SQL SQL 문에서 group by 함수를 사용하다보면 뒤에 추가적인 조건을 걸게 되는 경우가 많다. 그 때, HAVING 구문을 통해 조건을 걸게 되고 WHERE 은 사용하지 않는다. 이유가 뭘까? 비슷한 역할을 하는 것 같지만 작동 원리의 목적이 다르다. WHERE 테이블에서 맨 처음 row를 조회하기 위해 조건을 설정하기 위핸 구문 HAVING 이미 조회된 row들을 grouping했을 때, 생성된 group들을 다시 filtering할 때 사용하는 구문 따라서 목적에 맞게 사용해야 한다. 2021. 2. 5.
SQL문의 작성 / 실행 순서 SQL의 작성 및 실행 순서는 다르다. 작성 순서 SELECT FROM WHERE GROUP BY HAVING ORDER BY LIMIT 그러나 처리되는 실행 및 해석 순서는 다음과 같다. FROM WHERE GROUP BY HAVING SELECT ORDER BY LIMIT SQL 문이 길어질수록 점점 이 순서에 대해 신경써야 할 것 같다. 2021. 2. 5.
GROUP BY 그룹핑 GROUPING : row 들을 여러 개의 그룹으로 나눈다는 뜻 GROUP BY 함수와 집계함수를 같이 사용하는 경우 집계함수들은 테이블 전체가 아니라 각 그룹에 대해서 실행된다. 즉 이 경우 집계함수는 생성된 각 그룹의 수치적인 특성을 구하는 함수가 된다. 1) 성별로 그룹을 생성한 후 각 성별 그룹의 ROW 개수를 파악 1 SELECT gender, COUNT(*) FROM member GROUP BY gender; cs 2) 성별로 그룹 생성 후 각 성별 그룹에서 여러 특성 수치 추출 그룹별 ROW 개수와 평균 키를 추출하였다. 1 SELECT gender, COUNT(*), AVG(height) FROM member GROUP BY gender; cs 여러 개의 column을 기준으로 groupi.. 2021. 2. 4.
문자열 다루기 (length, upper, lower, lpad, rpad) LENGTH : 문자열의 길이를 구해준다 주소의 문자열을 구하고 싶으면, 1 SELECT address, LENGTH(address) FROM copang_main.member; cs UPPER, LOWER 함수 UPPER 의 경우 문자열을 모두 대문자로 바꿔주고, LOWER은 모두 소문자로 바꿔준다. 1 SELECT email, UPPER(email), LOWER(email) FROM copang_main.member; cs LPAD, RPAD 함수 LPAD : LEFT + PADDING RPAD : RIGHT + PADDING 으로, 왼쪽 혹은 오른쪽의 문자열을 특정 문자열로 채워주는 함수다. 자릿수를 채워주는 데에 주로 사용하는 듯하다. 1 SELECT age, LPAD(age, 10,'0') FR.. 2021. 2. 2.