MySQL

    [MySQL/프로그래머스] 오랜 기간 보호한 동물(2)

    문제 풀이 (1) 문제 분석하기 보호 시작일은 ANIMAL_INS 테이블에, 입양일은 ANIMAL_OUTS 테이블 ⇒ 두 테이블을 JOIN 보호 기간이 긴 순으로 정렬 ⇒ ORDER BY 보호 기간(입양일 - 보호 시작일) DESC 결과는 동물 2마리만 ⇒ LIMIT 2 (2) 쿼리 구현하기 🔸 DATEDIFF 함수를 이용한 풀이 SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_INS I INNER JOIN ANIMAL_OUTS O ON I.ANIMAL_ID = O.ANIMAL_ID ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC -- DATEDIFF 사용 LIMIT 2 가장 먼저 떠올린 건 특정 날짜의 차이를 연산해 주는 DATEDIFF 함수였다..

    [MySQL] MySQL 조건문, null 함수, 타입 변환, 시스템 함수

    Conditional Statement 조건문 CASE -- vlaue를 비교하여 해당하는 result 실행 CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result] ... [ELSE result] END -- condition의 boolean값으로 result 실행 CASE WHEN [condition] THEN result [WHEN [condition] THEN result] ... [ELSE result] END CASE 연산자는 비슷한 값을 서로 비교하거나, 조건에 따라 다른 값을 반환한다. (switch문과 비슷) 첫 번째 CASE 예시에서는 CASE 키워드 다음으로 오는 value와 compare_value ..

    [MySQL] MySQL 날짜 관련 함수 총정리

    Date Functions 날짜 관련 함수 날짜와 시간의 형식화 DATE_FORMAT(date, format) - 주어진 date를 format에 맞춰 문자열로 반환 SELECT DATE_FORMAT(hiredate, '%Y-%m-%d') FROM emp; -- YYYY-mm-dd SELECT DATE_FORMAT(hiredate, '%Y-%m-%d %T') FROM emp; SELECT DATE_FORMAT(hiredate, '%Y-%m-%d %H:%i:%s') FROM emp; -- YYYY-mm-dd 00:00:00 더보기 형태 설명 예시 %a 요일을 세 개의 문자로 표현함. Sun부터 Sat %b 월의 축약형을 세 개의 문자로 표현함. Jan부터 Dec %c 월을 숫자로 표현함. 0부터 12 %D..

    [MySQL] MySQL 숫자, 집계 함수 총정리

    Numeric Functions 숫자 관련 함수 CEIL(number) - number보다 크거나 같은 수 중에서 가장 작은 정수 반환 FLOOR(number) - number보다 작거나 같은 수 중에서 가장 큰 정수 반환 ROUND(number, decimals) - number를 지정된 소수 자릿수로 반올림 TRUNCATE(number, decimals) - number를 지정된 소수 자릿수로 자름(TRUNCATE 명령어도 있기 때문에 주의할 것) ABS(number) - number의 절댓값을 반환 RAND() - 0.0보다 크거나 같고 1.0보다 작은 하나의 실수를 무작위로 생성하여 반환 -- 수학 함수 사용 예제 -- 월평균 근무일수 21.5일, 하루 근무시간 8시간 -- 사원들 하루급여 : D..

    [TIL] MySQL 쿼리 문제 풀이

    ✍ Today I Learned 지금까지 배운 SQL내용을 토대로 쿼리 문제를 풀어보았다. ALIAS 별칭을 부여하면서 띄어쓰기를 하려면 따옴표 필수! 필드에 중복되는 값을 한 번만 선택하고 싶다면 DISTINCT 키워드를 사용한다. (집계 함수 안에서도 사용 가능) 인수분해 공식 na + nb = n(a+b) DATE_FORMAT(date, '%W') - 요일을 문자열로 반환(Sunday부터 Saturday) DAYOFWEEK()는 일요일부터 시작(일요일=1, 토요일=7) / WEEKDAY()는 월요일부터 시작(월요일=0, 일요일=6) 숫자에 세 자리 구분 기호를 출력하려면 FORMAT 함수 이용 FORMAT(number, decimal_places) - number를 '#,###,###.##' 형식으..

    [TIL] MySQL 내장함수, GROUP BY, HAVING

    ✍ Today I Learned 날짜 함수 관련해서는 정답이 없다. 어떤 포맷팅으로 기록하고, 무엇을 기록할 것이냐에 따라 달라진다. 모든 걸 DB에서 처리할 수 없고, 오히려 속도는 프로그래밍에서 하는 게 빠르지만 문제는 트래픽 양이다. 트래픽 양 = 호스팅 비용 = 돈 이기 때문에.. MySQL의 IFNULL() 함수는 Oracle의 NVL() 함수와 동일하게 작동한다. (nvl = null value) ADDDATE() vs DATE_ADD() 차이점은? ADDDATE()는 두 번째 인수로 INTERVAL value addunit 대신 추가할 일수만 지정하는 days를 사용할 수 있다! 즉 ADDDATE(date, 3) 이런 식으로 사용 가능하다. 참고자료 CASE문 뒤쪽으로 비교할 value를 넣..

    [MySQL] MySQL 문자열 함수 총정리

    String Functions 문자열 함수 👉 데이터베이스의 인덱스는 1부터 시작! LENGTH() - 전달받은 문자열의 길이 반환 UPPER() - 전달받은 문자열을 모두 대문자로 변경 LOWER() - 전달받은 문자열을 모두 소문자로 변경 SUBSTR(col, start, length) - start 위치에서 length만큼 문자열 추출 SUBSTING(col, start, length) - SUBSTR()과 같음 INSTR(data, search_value) - data에서 search value가 처음 나타나는 위치 반환(대소문자 구분 X) -- LIKE SELECT * FROM emp WHERE ename like '%S%'; -- INSTR(data, search value) SELECT * ..

    [MySQL] MySQL의 연산자(operator)

    산술 연산자 MySQL은 대부분의 프로그래밍 언어에서 지원하는 기본적인 연산자를 모두 제공한다. 당연히 사칙연산 모두 가능하다. 산술 연산자 설명 + 왼쪽 피연산자에 오른쪽 피연산자를 더함. - 왼쪽 피연산자에서 오른쪽 피연산자를 뺌. * 왼쪽 피연산자에 오른쪽의 피연산자를 곱함. / 왼쪽 피연산자를 오른쪽 피연산자로 나눔. DIV 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 소수 부분을 버림. %또는 MOD 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후, 그 나머지를 반환함. 비교 연산자 비교 연산자 설명 = 왼쪽 피연산자와 오른쪽 피연산자가 같으면 참을 반환함. !=, 왼쪽 피연산자와 오른쪽 피연산자가 같지 않으면 참을 반환함. = 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 참을 반환함. 양쪽의 ..