기초 mysql 정리

블랑·2023년 5월 13일
0

MySQL 코테 준비

시간 함수

https://velog.io/@12aeun/SQL-mysql에서-날짜-시간-계산하기

  • DATE_ADD() : 날짜, 시간 더하기

SELECT DATE_ADD(NOW(), INTERVAL 1 DAY)

  • DATE_SUB() : 날짜, 시간 빼기

SELECT DATE_SUB(NOW(), INTERVAL 1 SECOND)

  • DATEDIFF() : 두 기간 사이의 일수 계산
SELECT DATEDIFF('2021-12-31','2021-01-02');
>> 345
  • TIMEDIFF() : 두 기간 사이의 시간 계산
SELECT TIMEDIFF('2022-02-01 23:00:00','2022-01-30 00:00:00');
>> 71:00:00
  • PERIOD_DIFF() : 두 기간 사이의 개월 수 계산
SELECT PERIOD_DIFF('202202','202112');
>> 2

SELECT PERIOD_DIFF('202202','201212');
>> -10

SELECT PERIOD_DIFF('2202','1912');
>> 26
  • WHERE절에서 특정 월 제약 걸기
WHERE START_DATE >= '2022-09-01 00:00:00' AND START_DATE < '2022-10-01 00:00:00'
혹은 where MONTH(START_DATE) = 9
  • TIMESTAMPDIFF() : 두 기간 사이의 시간 계산
TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
unit - 반환 값 형식 (MONTH, YEAR, HOUR ...)
datetime_expr1 - 시작일 / datetime_expr2 - 종료일

SELECT TIMESTAMPDIFF(MONTH,'2021-02-01','2022-03-01');
>> 13
  • DATE_FORMAT :
SELECT DATE_FORMAT(now(), '%Y-%m-%d');
>> 2022-06-17

SELECT DATE_FORMAT(now(), '%Y-%m-%d %H:%i:%s');
>> 2023-05-13 07:30:56

집계함수(+GroupBy, Having)

1. COUNT(): 특정 열의 행 수를 반환합니다.
SELECT COUNT(*) FROM table_name;

2. SUM(): 특정 열의 합계를 반환합니다.
SELECT SUM(column_name) FROM table_name;

3. AVG(): 특정 열의 평균값을 반환합니다.
SELECT AVG(column_name) FROM table_name;

4. MIN(): 특정 열에서 최소값을 반환합니다.
SELECT MIN(column_name) FROM table_name;

5.MAX(): 특정 열에서 최대값을 반환합니다.
SELECT MAX(column_name) FROM table_name;

묶을 땐 where, 묶은 결과에 조건처리를 할 때는 having
SELECT customer_id, SUM(order_total) AS total_amount
FROM orders
GROUP BY customer_id
HAVING total_amount >= 500

기본 (LIKE)

1. "a"로 시작하는 문자열을 찾기
SELECT * FROM my_table WHERE my_column LIKE 'a%';

2. "abc"를 포함하는 문자열을 찾기
SELECT * FROM my_table WHERE my_column LIKE '%abc%';

3. "a" 또는 "b"로 시작하는 문자열을 찾기
SELECT * FROM my_table WHERE my_column LIKE 'a%' OR my_column LIKE 'b%';

4. "_"(밑줄) 문자를 사용하여 특정 자리수의 문자를 찾기
SELECT * FROM my_table WHERE my_column LIKE '_a%';

5. "a" 또는 "b"로 시작하면서 세 번째 자리에 "c" 또는 "d"가 포함된 문자열
SELECT * FROM my_table WHERE my_column LIKE '[ab]c%';

CASE-WHEN

SELECT 
   column1, 
   column2,
   CASE 
      WHEN column3 = 'value1' THEN 'result1'
      WHEN column3 = 'value2' THEN 'result2'
      ELSE 'other'
   END as result_column
FROM table_name;

limit

SELECT first_name, last_name, hire_date
FROM employees
WHERE hire_date >= '1995-01-01'
ORDER BY hire_date DESC
LIMIT 5; #혹은LIMIT 4, 6; = 5번째~10번째 row

IFNULL = 특정 쿼리의 결과가 NULL인 경우 NULL 대체하는 값을 넣고 싶을 때

SELECT name, IFNULL(salary, 'Not specified') AS salary
FROM employees;

FLOOR : 주어진 숫자를 내림하여 가장 가까운 정수를 반환

PRODUCT 테이블에서 만원 단위의 가격대 별로 상품 개수를 출력하는 SQL 문을 작성해주세요.
FLOOR(2.8)2를 반환, FLOOR(-2.8)-3을 반환

SELECT FLOOR(PRICE/10000)*10000 AS PRICE_GROUP, COUNT(*) AS PRODUCTS,
  FROM PRODUCT,
 GROUP BY PRICE_GROUP,
 ORDER BY PRICE_GROUP

LEFT : 원하는 문자열 추출하기

LEFT(PRODUCT_CODE, 2) -> 왼쪽부터 문자열 두개

DISTINCT

DISTINCT는 SELECT 문에서 사용하는 키워드 중 하나로, 중복된 값을 제거하여 유일한 값들만을 반환

profile
안녕하세요.

0개의 댓글