목록전체 글 (56)
JUstory
언제 쓰는가?MySQL에는 PIVOT 문법이 없다.그래서 아래 같은 상황에서 CASE WHEN + GROUP BY 패턴을 사용한다.대표적인 사용 상황연도별 / 월별 / 카테고리별 값을 열(column)로 펼치고 싶을 때리포트용 테이블을 만들 때BI 툴 없이 SQL 결과만으로 가로 형태 집계가 필요할 때예시 상황genreyearscoreAction201290RPG201185Action201180⬇️ 만들고 싶은 결과genrescore_2011score_2012Action8090RPG85NULL기본 아이디어CASE WHEN으로 “조건에 맞는 값만 남기고 나머지는 NULL로 만든 뒤,GROUP BY + 집계 함수가 NULL을 무시하며 계산하게 한다.” 문법 구조SELECT group_column, AG..
두 개 이상의 칼럼을 하나의 칼럼으로 합쳐야 할때CONCAT 함수를 사용하면 됩니다. 1) CONCAT(칼럼1, 칼럼2)SELECT CONCAT(col1, ',', col2) AS merged_col FROM table_name;col1col2AB→ 결과: "A,B" 2) CONCAT_WS(구분자, 칼럼1, 칼럼2)Concatenate With Separator = 구분자를 넣어서 합치는 함수SELECT CONCAT_WS(구분자, 칼럼1, 칼럼2) AS merged_colFROM table_name; 구분자로 문자열을 연결NULL이 자동으로 무시됨ex. CONCAT_WS(',', 'A', NULL, 'B') → "A,B" 3) GROUP_CONCAT(칼럼1)grouping한 결과를 한줄로 출력하기S..
윈도우 함수란 ?현재 행을 기준으로, 그 주변 행들(윈도우)에 대해 계산을 수행하는 함수 윈도우 함수 구조함수명() OVER ( PARTITION BY ... -- 그룹 나누기 (선택) ORDER BY ... -- 계산 기준 순서 ROWS BETWEEN ... -- 창(window)의 범위 설정 (선택)) 윈도우 함수 종류순위/번호ROW_NUMBER() : 중복 허용 없이 1,2,3 순서 번호RANK() : 동점 시 같은 순위, 다음은 건너뜀 (ex. 1,1,3)DENSE_RANK() : 동점 시 다음 순위 건너뛰지 않음 (ex. 1,1,2) 이동(shift)LAG(col, n) : n행 이전 값 가져오기 (ex. 전날 매출)LEAD(col, n) : n행 이후 값 가져..
연산자구분연산자설명비교 연산자= / > / = / 같음 / 보다 큼 / 보다 작음 / 크거나 같음 / 작거나 같음 / 같지 않음논리 연산자AND / OR앞, 뒤 조건 모두 만족 / 하나라도 만족NOT뒤에 오는 조건과 반대특수 연산자BETWEEN a AND b / NOT BETWEEN a AND ba와 b 값 사이 / a와 b의 값 사이가 아님IN(List) / NOT IN(List)리스트(List) 값 / 리스트 값이 아님LIKE '비교문자열'비교문자열과 같음NOT LIKE '비교문자열'비교문자열이 아님IS NULLNULL과 같음IS NOT NULLNULL이 아님산술 연산자+, -, *, / 덧셈, 뺄셈, 곱셈, 나눗셈집합 연산자UNION 2개 이상 테이블 중복된 행 제거하여 집합(*열 개수와 데이터 타..
트랜잭션 제어어는 데이터 조작어 명령어 실행, 취소, 임시저장할 때 사용하는 명령어입니다. 트랜잭션은 분할할 수 없는 최소 단위이며 논리적인 작업 단위입니다. 취소 (ROLLBACK) : 모든 작업을 되돌림/* 트랜잭션 시작 */BEGIN;작업 ~~~/* 취소 */ROLLBACK; 실행 (COMMIT) : 모든 작업을 최종 실행/* 트랜잭션 시작 */BEGIN;작업 ~~~/* 실행 */COMMIT;더보기ex)/*************** BEGIN + 취소(ROLLBACK) ***************//* 트랜잭션 시작 */BEGIN;/* 데이터 삽입 */INSERT INTO 회원테이블 VALUES (1001, '홍길동', '2020-01-02', 1);/* 취소 */ROLLBACK;/********..
데이터 제어어는 데이터 접근 권한 부여 및 제거할 때 사용하는 명령어입니다. 데이터베이스 관리자(DBA)가 특정 사용자에게 데이터 접근 권한을 부여 및 제거할 때 사용합니다. 사용자 추가/* 사용자 아이디 및 비밀번호 생성 */CREATE USER 아이디 @LOCALHOST IDENTIFIED BY 비밀번호;/* 사용자 비밀번호 변경 */SET PASSWORD FOR 아이디 @LOCALHOST = 비밀번호; Workbench 홈 > MySQL Connections (+) > Username : 아이디 > Password : 비밀번호 > Test Connection 사용자 삭제DROP USER 아이디 @LOCALHOST; 권한 부여/* 특정 권한 부여 */GRANT 부여할 권한 ON 데이터베이스.테이블 T..