Database/MySQL

    [MySQL]SQL INNER JOIN의 차이점: ON 절 vs WHERE 절

    SQL에서 데이터베이스의 테이블을 조인하는 방법은 다양합니다. 그 중에서도 INNER JOIN은 매우 흔히 사용됩니다. 하지만 INNER JOIN을 사용할 때 ON 절과 WHERE 절을 혼용할 수 있는데, 이 두 가지 방법이 어떻게 다른지에 대해 자세히 알아보겠습니다.     INNER JOIN 개요INNER JOIN은 두 테이블 간의 공통된 열 값을 기준으로 행을 결합하는 데 사용됩니다. 주로 두 테이블의 관련 데이터를 결합하여 하나의 결과 집합을 만드는 데 사용됩니다.     두 가지 구문 비교첫번째 구문SELECT * FROM TABLE_A a INNER JOIN TABLE_B b ON a.temp = b.temp AND a.temp2 = b.temp2 이 구문은 두 테이블의 temp와 temp2 ..

    [MySQL]UNION과 UNION ALL의 공통점과 차이점

    공통점 결과 행의 형식 두 연산자 모두 여러 SELECT 문의 결과를 단일 결과 집합으로 결합함 결과 집합 모든 SELECT 문의 결과를 하나의 결과 집합으로 반환함 컬럼 형식 각 SELECT 문에서 반환되는 열의 수와 데이터 형식이 동일해야 합니다. 차이점 중복 행의 처리 UNION 중복된 행을 제거함 즉, 중복된 결과 행은 하나의 행으로만 반환됨 UNION ALL 중복된 행을 제거하지 않고 모든 결과를 포함함 성능 UNION 중복 행을 제거하기 위해 추가적인 처리가 필요하므로 일반적으로 UNION ALL보다 더 많은 시간이 소요됨 UNION ALL 중복을 제거하지 않기 때문에 UNION보다 더 빠른 결과를 반환함 예시 - EMPLOYEES_1 테이블 id | name ----|------ 1 | Jo..

    [MySQL]MySQL 5.7과 MySQL 8.0의 차이 (1)

    MySQL 5.7에서 MySQL 8.0로 업그레이드 최근에 내가 다니는 곳에서 MySQL 5.7 버전에서 8.0 대로 업그레이드 했다. 그냥 그러려니하고 나랑은 별 상관 없는 일이라고 생각하고 있었음 ㅋㅋ 근데 이번 개발건에서 쿼리가 조회가 되지 않았음 SELECT A.* FROM ( SELECT @ROW_NUMBER := @ROW_NUMBER + 1 AS ROW_NUM ... ) A WHERE 1 = 1 AND A.PK_NO = #{...} AND A.ROW_NUM = #{...} LIMIT 0, 1 뭐 대충 이런 쿼리였는데 암튼, PK_NO와 ROW_NUM에 해당하는 로우가 없다고 나왔음. 분명히 저 A만 따로 실행시키면 걍 데이터로 나온 애들 중에 해당 PK_NO와 ROW_NUM에 부합하는 데이터가..

    [MySQL]쿼리(DML 중 SELECT문) 실행 순서

    DML 중 SELECT 쿼리의 실행 순서에 대해 알아볼거임. 순서만 띡 써놓으면 정 없으니까 간단한 설명도 같이 써볼 예정 ! SELECT 쿼리의 실행 순서 SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY - LIMIT, OFFSET 얘네들이 다 필수로 SELECT 쿼리에 포함되어 있어야하는 것은 아님 ! SELECT이랑 FROM 말고는 다 옵셔널함 ! SELECT SELECT 절에서 원하는 열(컬럼)을 지정함. 이 단계에서는 데이터베이스에서 어떤 열을 반환할지 결정. SELECT column1, column2 FROM my_table; FROM FROM 절에서 데이터를 조회할 테이블을 지정. SELECT column1, column2 FROM my_tabl..

    [MySQL]IFNULL()과 NULLIF()의 차이

    프로그래머스 SQL 문제를 풀다가 IFNULL()과 NULLIF()가 헷갈려서 글을 작성하게 되었다 IFNULL() IFNULL(A, B); A가 NULL이 아니면 A를 반환하고, A가 NULL이면 B를 반환한다. NULLIF() NULLIF(A, B); A = B이면 NULL을 반환하고, A B이면 A를 반환한다. CASE WHEN A = B THEN NULL ELSE A END 얘랑 위의 NULLIF() 예시랑 같은 결과를 반환한다 !

    [MySQL]날짜 포맷 변환하기 - DATE_FORMAT()

    DATE_FORMAT() MySQL에서는 날짜나 시간을 다룰 때 이 DATE_FORMAT()이라는 함수를 사용해서 날짜나 시간을 다룸 ! 사용법 사용법은 이렇다 DATE_FORMAT(날짜관련컬럼명, '%Y-%m-%d') 시간이나 날짜와 관련된 컬럼명을 첫번째 인자에 넣어주고, 어떤 형식으로 변환하고 싶은지를 두번째 인자에 넣어주면 된다 ! DATE_FORMAT("날짜값", '%Y-%m-%d') 이렇게 시간이나 날짜 관련 컬럼이 아니라 바로 시간을 넣어줘도 가능 ! 사용 가능한 표현식 모음 MySQL 8.0 공식 문서에서 참고한 표현식의 종류임 !!! https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html MySQL :: MySQL 8.0..

    [MySQL]GROUP BY절과 HAVING절

    GROUP BY절이란 https://seokmimmmmmmmm.tistory.com/225 [MySQL]GROUP BY절과 집계 함수 집계 함수란? https://seokmimmmmmmmm.tistory.com/224 [MySQL]집계 함수에 관하여 집계 함수란? 집계 함수는 결과 레코드들에 대한 레코드의 개수, 값들의 합, 최대값, 최소값, 평균 등 산술적인 연산의 결과 seokmimmmmmmmm.tistory.com 해당 글 참고 요약하자면 특정 그룹마다 집계 함수를 구하기 위한 방법으로 GROUP BY절을 사용하는 것이다 !!! GROUP BY절에 집계 함수를 사용하지 않기도 하니까... 특정 그룹마다 집계 함수를 사용하려면 GROUP BY절을 사용한다고 하는 것이 더 알맞는 것 같네...? 같은 ..

    [MySQL]GROUP BY절과 집계 함수

    집계 함수란? https://seokmimmmmmmmm.tistory.com/224 [MySQL]집계 함수에 관하여 집계 함수란? 집계 함수는 결과 레코드들에 대한 레코드의 개수, 값들의 합, 최대값, 최소값, 평균 등 산술적인 연산의 결과를 얻을 수 있게 해줌 !!! 또한, 여러 행으로부터 하나의 결과값을 반환 seokmimmmmmmmm.tistory.com 위 글에서 알 수 있다시피 집계 함수란 여러 행으로부터 하나의 결과값을 반환하는 함수이다. 💡 그러므로 SELECT 절에서 다른 컬럼과 같이 조회하는 경우에는 문제가 발생할 수도 있다! (단일 컬럼 조회면 집계 함수가 사용되어도 상관 없음) 그렇기 때문에 GROUP BY절과 함께 사용되는 경우가 많다 !!! 이게 뭔말이냐 하면 SELECT절에서의 ..