MySQL 15

15. EXISTS : 조건에 해당하는 ROW의 존재 유무 확인

EXISTS 조건에 해당하는 ROW의 존재 유무를 확인 'SELECT 절'까지 수행하지 않기 때문에 In에 비해 속도나 성능면에서 더 좋음 EXISTS는 WHERE 절에서 주로 사용하며, WHERE 절에서 IN을 사용하는 것과 같은 결과를 주며, JOIN Query로도 동일한 결과를 낼 수 있음 해당하는 데이터가 없는 경우를 찾을 때는 NOT EXISTS 를 사용할 수 있음 IN의 경우 실제 존재하는 데이터의 값을 비교하기 때문에 EXISTS 보다 속도가 느린 경우가 있음 예시 TABLE: team_epl - EPL 팀 no name 1 Arsenal 2 Liverpool 3 Manchester United 4 Manchester City 5 Chelsea 6 Tottenham 7 Newcastle ....

MySQL 2023.07.27

14. JOIN(두 개 이상의 테이블을 참조)

관계가 있는 두 개 이상의 테이블을 연결하여 데이터를 조회하는 작업을 진행할 때 JOIN을 사용함 INNER JOIN(내부조인) - INNER JOIN 또는 JOIN SELECT TABLE1.userid, COUNT(*) FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.userid = TABLE2.userid WHERE ~ ; 참조 - GROUP BY를 사용하거나, DISTINCT 를 이용하여 중복값을 제거할 수 있음 SELECT DISTINCT TABLE1.userid FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.userid = TABLE2.userid WHERE ~ ; EXISTS - JOIN을 사용하지 않고 WEHRE 절에 EXISTS문을 사용하여 ..

MySQL 2022.05.03

13. 피벗(Pivot)

아래와 같은 테이블이 있다고 가정한다. TABLE Name: football_heritage id team trophy value etc 1 레알 마드리드 LEAGUE 25 20C 2 FC 바르셀로나 LEAGUE 14 20C 3 바이에른 뮌헨 LEAGUE 20 20C 4 유벤투스 LEAGUE 36 20C 5 리버풀 LEAGUE 18 20C 6 AC밀란 LEAGUE 14 20C 7 레알 마드리드 CHAMPIONS LEAGUE 13 - 8 FC 바르셀로나 CHAMPIONS LEAGUE 5 - 9 바이에른 뮌헨 CHAMPIONS LEAGUE 6 - 10 유벤투스 CHAMPIONS LEAGUE 2 - 11 리버풀 CHAMPIONS LEAGUE 6 - 12 AC밀란 CHAMPIONS LEAGUE 7 - 13 레알..

MySQL 2022.05.03

12. 숫자 함수 & 날짜 시간 함수

01. 숫자 함수 ABS(숫자): 절대값 SELECT ABS(-120) ; 결과: 120 CEILING(숫자, 자리수): 올림 FLOOR(숫자, 자리수): 버림 ROUND(숫자, 자리수): 반올림 - 자리수가 양수일 때, 소수점 O번째를 의미 - 자리수가 음수일 때, 1의 자리 / 10의 자리 / ... 를 의미 SELECT CEILING(1230, -2) ; 결과: 1300 - 자리수 '-2' 는 십의자리를 의미함 - 십의 자리에서 올림하여 1300 출력 SELECT FLOOR(1235, -1) ; 결과: 1230 - 자리수 '-1' 은 일의자리를 의미함 - 일의 자리에서 버림하여 1230을 출력 SELECT ROUND(1234.5678, 3) ; 결과: 1234.57 - 자리수 3은 소수점 셋째자리를..

MySQL 2022.05.03

11. 문자열 함수(CONCAT, CONCAT_WS, FORMAT, LEFT, RIGHT, SUBSTRING_INDEX)

CONCAT - 문자열을 합칠 때 사용 SELECT CONCAT( '2022', '_', '99' ) ; 결과: '2022_99' CONCAT_WS - 문자열 사이에 구분자를 넣어 합칠 때 SELECT CONCAT_WS( '_', '2022', '99', 'ED103') ; 결과: '2022_99_ED103' FORMAT - 소수점 자릿수까지 표현 SELECT FORMAT( 123.45678, 3) ; 결과: 123.456 LEFT / RIGHT - 값의 왼쪽 또는 오른쪽으로부터 길이 만큼 반환 SELECT LEFT(ABCDEFG, 3) ; 결과: ABC SELECT RIGHT(ABCDEFG, 3) ; 결과: EFG SUBSTRING - 시작위치부터 길이만큼 문자열을반환 SELECT SUBSTRING( ..

MySQL 2022.05.03

10. 제어 흐름(IF, IFNULL, NULLIF, CASE~ WHEN~)

01. IF / 수식이 참 또는 거진인지 결과에 따라서 2중 분기함 SELECT IF(조건, '참', '거짓') FROM ~ ; 결과 - 참 또는 거짓 02. IFNULL / 수식이 NULL이 아니면 수식1이 반환되고, 수식1이 NULL이면 수식2가 반환됨 SELECT IFNULL( A , '0') FROM ~ ; 결과 - A 또는 0 03. CASE ~ WHEN ~ ELSE ~ END / 다중 분기에 사용될 수 있는 함수 SELECT CASE A WHEN 1 THEN '일' CASE A WHEN 10 THEN '십' CASE A WHEN 100 THEN '백' ELSE '기타' END FROM ~ 결과 - '일' 또는 '십' 또는 '백' 또는 '기타'

MySQL 2022.05.03

08. 데이터 형식

1. 숫자 데이터 형식 정수 TINYINT: -128 ~ 127 SMALLINT: -32,768 ~ 32,767 MEDIUMINT: -8,388,608 ~ 8,388,607 INTEGER(INT): 약 -21억 ~ 21억 BIGINT: -900경 ~ 900경 소수점 FLOAT: 소수점 아래 7자리까지 표현 REAL(DOUBLE): 소수점 아래 15자리까지 표현 기타 NUMERIC(DECIMAL) - 전체 자릿수와 소수점 이하 자릿수를 가진 수자형 - DECIMAL(m, [d]) 2. 문자 데이터 형식 CHAR: 1~255 바이트 VARCHAR: 1~65535 바이트 BINARY: 1~255 바이트 VARBINARY: 1~255 바이트 텍스트 형식 TINYTEXT: 1~255 TEXT: 1~65535 ME..

MySQL 2022.05.03

07. 기타(1): 중복제거, 출력 행 제한, 주석처리

주석 처리 쿼리문에서 일부 영역을 실행하지 않도록 예외처리 하는 때 01. 한 줄만 주석 처리 할 때 - 뒤에 하이픈 두 개(⁃⁃)를 붙임 - 하이픈 앞에 한 칸 이상의 공백 필요 SELECT * FROM user ⁃⁃ 02. 여러 줄을 주석 처리 할 때 - 여러 줄의 주석은 /* 과 */ 로 묶는다 /* SELECT * FROM user WHERE name = ‘103’ */ 중복제거 DISTINCT 중복된 값을 제외하고 볼 때 SELECT DISTINCT team FROM user ; 출력하는 행의 수를 제한 LIMIT 출력하는 개수를 제한 SELECT * FROM user LIMIT 10 ; - 10개의 행만 출력 SELECT * FROM user LIMIT 11, 20 ; (11번째 행부터 20개..

MySQL 2022.05.03

06. 집계함수(GROUP BY와 함께 사용)

GROUP BY와 집계함수는 함께 쓰이는 경우가 많음 기본형식 SELECT 집계함수 FROM 테이블 GROUP BY 그룹 대상(열); 예시 SELECT SUM(salary) FROM user GROUP BY team; user 테이블에서 team 열을 이용하여 그룹을 생성한다. 그리고 각 그룹(team)의 salary라는 값의 총 합을 구하는 쿼리이다. GROUP BY와 함께 쓰이는 집계 함수 AVG(field) = 그룹의 field(값)에 대한 평균을 구함 MIN(field) = 그룹의 fiel(값)d에 대한 최소값을 구함 MAX(field) = 그룹의 field(값)에 대한 최대값을 구함 STDEV(field) = 그룹의 field(값)에 대한 표준편차를 구함 VAR_SAMP(field) = 그룹의 ..

MySQL 2022.05.03