Programming/MySQL
JOIN이란? SQL 조인은 두 개 이상의 테이블들을 공통 필드를 가지고 통합 스타 스키마로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용 JOIN의 결과로 양쪽의 필드를 모두 가진 새로운 테이블을 만들어짐 조인의 방식에 따라 다음 두 가지가 달라짐 어떤 레코드들이 선택되는지? 어떤 필드들이 채워지는지? JOIN 문법 SELECT A.*, B.* FROM raw_data.table1 A ____ JOIN raw_data.table2 B ON A.key1 = B.key1 and A.key2 = B.key2 WHERE A.ts >= '2019-01-01'; -- INNER, LEFT, RIGHT, CROSS -- MySQL은 FULL 조인을 지원하지 않음 JOIN시 고려해야할 점 먼저 중복 레코드가..
MySQL에서 지원하는 컬럼 타입 Numeric Type INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT DECIMAL, NUMERIC FLOAT, DOUBLE, BIT Date and Time Type DATE, DATETIME, TIMESTAMP,TIME, YEAR String Type CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, SET JSON Type 다양한 JSON 조작함수를 제공함 Spatial Type 위도와 경도를 중심으로한 위치 관련 타입 TABLE 생성 CREATE TABLE prod.vital ( user_id int not null, vital_id int primary key, date ti..
GROUP BY SELECT 시 레코드를 있는 그대로 읽어오는 것이 아니라, 특정 FIELD를 기준으로 같은 값을 갖는 값들을 GROUPING 즉, 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산 먼저 그룹핑을 할 필드를 결정 (하나 이상의 필드가 될 수 있음) GROUP BY로 지정 (필드 이름을 사용하거나 필드 일련번호를 사용) 다음 그룹별로 계산할 내용을 결정 여기서 Aggregate 함수를 사용 COUNT, SUM, AVG, MIN, MAX, GROUP_CONCAT ... 보통 필드 이름을 지정하는 것이 일반적 (alias) 월별 세션 수를 계산하는 SQL SELECT LECT(created, 7) AS mon, -- 연도, 월 COUNT(1) AS session_count FROM pr..
기본 문법 1) STRING SELECT LENGTH(channel), UPPER(channel), LOWER(channel), LEFT(channel, 4), RPAD(channel, 15, '-') FROM prod.channel; 기본 문법 2) ORDER BY SELECT value FROM prod.count_test ORDER BY value DESC; 기본 문법 3) ORDER BY 2 (위와 같은 결과) SELECT value FROM prod.count_test ORDER BY 1 DESC; 기본 문법 4) ORDER BY 3 SELECT value FROM prod.count_test ORDER BY value ASC; 기본 문법 5) DATE 관련 함수들 1 SELECT created..
기본 문법 1) SHOW SHOW DATABAES; USE prod; SHOW TABLES; 기본 문법 2) SELECT * SELECT * FROM prod.session; 기본 문법 3) SELECT SELECT id, user_id, channel_id FROM prod.session; 기본 문법 4) LIMIT SELECT * FROM prod.session LIMIT 10; 기본 문법 5) DISTINCT SELECT DISTINCT channel_id FROM prod.session; 기본 문법 6) COUNT SELECT channel_id, COUNT(1) FROM prod.session GROUP BY 1; -- GROUP BY channel_id; 를 쓴 것과 같은 것. 일련 번호로 작..
기초 문법 WHERE) IN , LIKE, BETWEEN IN WHERE channel_id = 3 OR channel_id = 4 NOT IN LIKE 대소문자 구별 없이 문자열 매칭 기능을 제공 WHERE channel LIKE 'G%' -> 'G*'. -- G로 시작하는 모든 것 NOT LIKE BETWEEN 날짜 범위에 사용 가능 위 오퍼리에터들은 CASE WHEN 사이에서도 사용 가능 STRING Functions LEFT(str, N) N개의 글자를 처음부터 빼오도록 REPLACE(str, exp1, exp2) str로 부터 exp1 패턴을 찾아 exp2로 바꿈 UPPER(str) 대문자로 LOWER(str) 소문자로 LENGTH(str) 길이 LPAD, RPAD left, right padd..