DBMS/MySQL

    [MySQL] 오류해결 : Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation '='

    발생 새 테이블을 추가하고 다른 테이블과 조인하려고 하는데 아래와 같은 에러가 발생 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation '=' 원인 기존 테이블과 새 테이블의 Collate 값이 달라서 발생 해결 ALTER TABLE {테이블명} CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

    [MySQL] 각 행 별로 점수 비율 구하기

    백분율로 구하기 전체 점수(score) 대비 각 사용자별 점수(score)를 백분율로 나타내기 SELECT name , score , ROUND(CONVERT(float, score) / SUM(score) OVER(), 2) * 100 AS score_percent FROM users

    [MySQL] JSON 형태의 데이터 다루기

    함수명 설명 JSON_EXTRACT JSON 데이터를 추출하며 JSON Path 문법을 사용 JSON_UNQUOTE JSON 데이터 추출시 따옴표를 지워준다. Key-Value 형태 1) SELECT SELECT JSON_UNQUOTE(JSON_EXTRACT(컬럼명, '$.KEY')) AS value FROM test_table 2) INSERT INSERT INTO test_table (컬럼명) VALUES (JSON_OBJECT("KEY", "VALUE", "KEY", "VALUE", ...)) 3) UPDATE UPDATE test_table SET 컬럼명 = JSON_SET(컬럼명, '$.KEY', 'VALUE') 배열 형태 1) SELECT SELECT JSON_UNQUOTE(JSON_EXTRA..

    [MySQL] 1분 데이터로 분, 시간, 일 단위 통계 구하기

    컬럼1, 컬럼2, 컬럼3 통계를 내려는 컬럼명 날짜컬럼 날짜 데이터의 컬럼명 테이블 1분 데이터가 있는 테이블명 분, 시간, 일 원하는 간격의 숫자 분 단위 SELECT MAX(컬럼1), MIN(컬럼2), SUM(컬럼3) FROM 테이블 GROUP BY DATE(날짜컬럼), FLOOR(HOUR(날짜컬럼)), FLOOR(MINUTE(날짜컬럼)/분) 시간 단위 SELECT MAX(컬럼1), MIN(컬럼2), SUM(컬럼3) FROM 테이블 GROUP BY DATE(날짜컬럼), FLOOR(HOUR(날짜컬럼)/시간) 일 단위 SELECT MAX(컬럼1), MIN(컬럼2), SUM(컬럼3) FROM 테이블 GROUP BY FLOOR(DATE(날짜컬럼)/일)

    [MySQL] 날짜를 지정한 형식으로 출력 (DATE_FORMAT)

    2022-12-16 10:27:42 SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S') 2022 December 16 SELECT DATE_FORMAT(NOW(),'%Y %M %d') 2022.12.16. 10:27:42 AM SELECT DATE_FORMAT(NOW(),'%Y.%m.%d. %r')

    [MySQL] 데이터가 NULL이면 다른 값을 출력하는 함수

    MySQL에는 데이터가 null일 경우 다른 값으로 대체하여 출력하는 함수로 'COALESCE', 'IFNULL'등이 있다. 'COALESCE' 함수가 여러 파라미터를 넣을 수 있고, SQL 표준 함수이기에 'COALESCE'를 사용하는 것을 권장한다. COALESCE(값, 대체값) 예제) member 테이블의 name 컬럼을 조회하되, 데이터가 null이면 '이름없음'으로 출력한다. SELECT COALESCE(name, '이름없음') FROM member COALESCE(값, 대체값1, 대체값2) 예제) member 테이블의 name 컬럼을 조회하되, 데이터가 null이면 nickname 컬럼을 조회하고 이 또한 null이면 '이름없음' 으로 출력한다. SELECT COALESCE(name, nick..

    [MySQL] 오류해결 : You are using safe update mode

    원인 여러 row를 업데이트 할 때 실수를 방지하기 위한 safe mode가 기본적으로 활성화 되어있음 해결 아래 쿼리를 통해 safe mode를 비활성화 SET SQL_SAFE_UPDATES = 0