mysql 26

[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 ..

Database/MySQL 2024.07.24

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

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

Database/MySQL 2024.01.31

[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에 부합하는 데이터가..

Database/MySQL 2024.01.24

[프로그래머스]진료과별 총 예약 횟수 출력하기 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/132202 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 2 문제 문제만 잘 읽으면 쉽게 풀 수 있을 듯 ? 💡 GROUP BY 절 GROUP BY 쓸 때는 집계함수랑 같이 쓰는 경우가 많다고 했었다 분명히??? 이거 함 보고 오셈 https://seokmimmmmmmmm.tistory.com/225 [MySQL]GROUP BY절과 집계 함수 집계 함수란? https://seokmimmmmmmmm.tistory.com/224 [M..

[프로그래머스]3월에 태어난 여성 회원 목록 출력하기 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131120 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 3 문제 💡 DATE_FORMAT() 활용 '%Y-%m-%d' -> 얘는 알아놓는게 좋다고 분명히 했던 것 같은데 !!! 얘는 이제 기본임 DATE_FORMAT()에 사용가능한 형식이 궁금하다면? https://seokmimmmmmmmm.tistory.com/228 [MySQL]날짜 포맷 변환하기 - DATE_FORMAT() DATE_FORMAT() MySQL에서는 날짜나 ..

[프로그래머스]DATETIME에서 DATE로 형 변환 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/59414 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 2 문제 DATE_FORMAT()만 사용할 줄 알아도 풀 수 있을 듯??? 💡 DATE_FORMAT() 활용 '%Y-%m-%d' -> 얘는 알아놓는게 좋다고 분명히 했던 것 같은데,,,? DATE_FORMAT()에 사용가능한 형식이 궁금하다면? https://seokmimmmmmmmm.tistory.com/228 [MySQL]날짜 포맷 변환하기 - DATE_FORMAT() D..

[프로그래머스]특정 옵션이 포함된 자동차 리스트 구하기 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/157343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 1 문제 💡 LIKE 사용 ! 코드 -- LIKE SELECT * FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS LIKE '%네비게이션%' ORDER BY CAR_ID DESC

[프로그래머스]평균 일일 대여 요금 구하기 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/151136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 1 문제 쉬운 문제임. 집계함수만 사용할 줄 알면 쉽게 풀 수 있지 않을까? 💡 집계 함수 중 하나인 AVG() 활용 💡 ROUND() 함수의 활용 반올림 함수 !!! 집계함수가 뭐지? https://seokmimmmmmmmm.tistory.com/224 [MySQL]집계 함수에 관하여 집계 함수란? 집계 함수는 결과 레코드들에 대한 레코드의 개수, 값들의 합, 최대값, 최..

[프로그래머스]조건에 맞는 도서 리스트 출력하기 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/144853 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 1 문제 아주 쉬운 문제. DATE_FORMAT()과 LIKE 정도만 사용할 줄 알면 풀 수 있을듯??? 💡 DATE_FORMAT() 활용 '%Y-%m-%d' -> 얘는 알아놓는게 좋다 !! 💡 LIKE절의 '%' %는 와일드카드임 ! DATE_FORMAT()에 사용가능한 형식이 궁금하다면? https://seokmimmmmmmmm.tistory.com/228 [MySQL]..

[프로그래머스]과일로 만든 아이스크림 고르기 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/133025 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 1 문제 JOIN만 할 줄 알면 이것보다 쉬운 문제가 없다 ! 💡 INNER JOIN은 기본적인 JOIN이다 두 테이블의 공통된 키로 JOIN을 걸어주면 됨! (기본키, 외래키) 코드 -- INNER JOIN 방법 숙지 필수 SELECT FH.FLAVOR FROM FIRST_HALF FH JOIN ICECREAM_INFO II ON FH.FLAVOR = II.FLAVOR W..

[프로그래머스]인기있는 아이스크림 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/133024 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 1 문제 아주 쉬운 문제. ORDER BY절을 써서 잘 정렬하면 된다 ! 💡 ORDER BY 절에 계속 쓰면 같은 경우 다음 기준으로 정렬 정렬 컬럼의 우선순위순으로 나열하면 된다 ! 코드 -- ORDER BY 절에 계속 쓰면 같은 경우 다음 기준으로 정렬 SELECT FLAVOR FROM FIRST_HALF ORDER BY TOTAL_ORDER DESC, SHIPMENT_..

[프로그래머스]12세 이하인 여자 환자 목록 출력하기 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/132201 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 1 문제 항상 느끼는 거지만 나는 뭐 무슨 문제를 풀든 잘 읽지 않아서 한번 두번 다시 읽게 된다.... 💡 이 문제도 그렇고 다른 문제도 그렇고 뭐든 한번에 잘 읽어보자 ! 12세 이하인 "여자" 환자 💡IFNULL() 사용 ! IFNULL(A, B)는 A가 NULL이면 B를 반환하는 함수 ! NULLIF() 등 다른 함수와 헷갈리지 말자 혼틈 IFNULL()과 NULLI..

[프로그래머스]대여 기록이 존재하는 자동차 리스트 구하기 - MySQL

얘도 오늘 3시엔가 올라온 따끈따끈한 문제임 ! 이번에도 역시 아주 따끈따끈한 문제 풀이입니당 문제 https://school.programmers.co.kr/learn/courses/30/lessons/157341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 3 문제인데, 개인적으로 방금 올린 Level 2 문제보다 쉬웠음. https://seokmimmmmmmmm.tistory.com/229 [프로그래머스]자동차 평균 대여 기간 구하기 - MySQL 회사에서 심심해서 프로그래머스 들어갔는데 SQL 문제가 새로 올라와서 풀었다 !!! ..

[프로그래머스]자동차 평균 대여 기간 구하기 - MySQL

회사에서 심심해서 프로그래머스 들어갔는데 SQL 문제가 새로 올라와서 풀었다 !!! 아주 따끈따끈한 문제 풀이입니당 문제 https://school.programmers.co.kr/learn/courses/30/lessons/157342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 2 문제인데 Level 2 문제치고 쉽지만은 않은 문제였다 ! 💡 ROUND()를 이용해서 반올림 하기 ! 첫번째 인자에는 값을, 두번째 인자에는 소수점 몇번째 자리에서 반올림할 것인지를 써주면 됨 💡 AVG()를 이용해서 평균 구하기 ! 💡 GROUP BY절..

[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..

Database/MySQL 2023.02.09

[프로그래머스]흉부외과 또는 일반외과 의사 목록 출력하기 - MySQL

문제 https://school.programmers.co.kr/learn/courses/30/lessons/132203 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Level 1 문제 💡 DATE_FORMAT() 등의 함수를 이용해서 날짜 형식 바꾸기 ! 💡 ORDER BY절에 계속해서 컬럼을 걸면 다음 기준으로 정렬 가능 ! DATE_FORMAT()에 대해 궁금하다면? https://seokmimmmmmmmm.tistory.com/228 [MySQL]날짜 포맷 변환하기 - DATE_FORMAT() DATE_FORMAT() MySQL에서는 날짜나..

[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절을 사용한다고 하는 것이 더 알맞는 것 같네...? 같은 ..

Database/MySQL 2023.02.07

[MySQL]GROUP BY절과 집계 함수

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

Database/MySQL 2023.02.07

[MySQL]집계 함수에 관하여

집계 함수란? 집계 함수는 결과 레코드들에 대한 레코드의 개수, 값들의 합, 최대값, 최소값, 평균 등 산술적인 연산의 결과를 얻을 수 있게 해줌 !!! 또한, 여러 행으로부터 하나의 결과값을 반환하는 함수임. 집계 함수에는 COUNT(), SUM(), MAX(), MIN(), AVG()이 있다 ! COUNT(컬럼명) NULL 값을 제외한 레코드의 수 SUM(컬럼명) 컬럼명의 값들의 합 MAX(컬럼명) 컬럼명의 값들 중 가장 큰 값 MIN(컬럼명) 컬럼명의 값들 중 가장 작은 값 AVG(컬럼명) 컬럼명의 값들의 평균 COUNT(*) NULL을 포함한 모든 레코드의 수 -> 어떤 컬럼 A의 NULL값의 개수를 알고 싶으면 COUNT(*) - COUNT(A)라고 하면 되겠지 ? 중요 포인트 SELECT, H..

Database/MySQL 2023.02.07