-- db목록
SHOW DATABASES;
-- 앞으로의 쿼리에 대하여 prod라는 데이터베이스를 사용하겠다.
USE prod;
-- prod DB 안의 테이블 목록
SHOW TABLES;
-- prod DB의 session 테이블 데이터 전체 조회
SELECT *
FROM prod.session;
-- prod DB의 session 테이블에서 id, user_id, channel_id 속성만 가져옴
SELECT id, user_id, channel_id
FROM prod.session;
-- prod DB의 session 테이블의 모든 속성 데이터를 10개까지 조회
SELECT *
FROM prod.session
LIMIT 10;
-- 유일한 채널 ID를 알고 싶은 경우
select channel_id
from pROD.SEssion;
seleCT DistinCt channel_ID
FROm PROD.SEssion;
-- 채널 ID별 카운트를 하려면 GROUP BY/ COUNT 함수
SELECT channel_id, COUNT(1)
FROM prod.session
GROUP BY 1;
-- 위의 쿼리와 같은 결과
SELECT chAnnel_id, COUNT(1)
FROM prod.session
GROUP BY channel_id;
-- 테이블의 모든 레코드 수 카운트. COUNT(*). 하나의 레코드
SELECT *
FROM prod.channel;
-- channel이 Facebook인 경우만 레코드 수 카운트
SELECT count(1)
from prod.session
WHERE channel_id = 5; -- WHERE channel_id in (5)
-- CASE WHEN
SELECT channel_id,
CASE
WHEN channel_id in (1, 5, 6) THEN 'Social-Media'
WHEN channel_id in (2, 4) THEN 'Search-Engine'
ELSE 'Something-Else'
END channel_type
FROM prod.session;
SELECT DISTINCT channel_id,
CASE
WHEN channel_id in (1, 5, 6) THEN 'Social-Media'
WHEN channel_id in (2, 4) THEN 'Search-Engine'
ELSE 'Something-Else'
END channel_type
FROM prod.session;
-- COUNT 제대로 이해하기
SELECT * FROM prod.count_test;
SELECT COUNT(1) FROM prod.count_test;
SELECT COUNT(0) FROM prod.count_test;
SELECT COUNT(NULL) FROM prod.count_test;
SELECT COUNT(value) FROM prod.count_test;
SELECT COUNT(DISTINCT value) FROM prod.count_test;
-- WHERE 조건
SELECT COUNT(1)
FROM prod.session
WHERE channel_id IN (4, 5);
-- 채널 이름에 g가 들어가는게 몇개
SELECT COUNT(1)
FROM prod.channel
WHERE channel LIKE '%G%';
-- 채널 이름이 G로 시작하는게 몇개
SELECT COUNT(1)
FROM prod.channel
WHERE channel LIKE 'G%';
-- 채널 이름에 o가 들어간거
SELECT DISTINCT channel
FROM prod.channel
WHERE channel LIKE '%o%';
-- 채널 이름에 o가 안들어간거
SELECT DISTINCT channel
FROM prod.channel
WHERE channel NOT LIKE '%o%';
-- String 함수들 써보기
SELECT
LENGTH(channel),
UPPER(channel),
LOWER(channel),
LEFT(channel, 4),
RPAD(channel, 15, '-'),
LPAD(channel, 15, '_')
FROM prod.channel;
-- ORDER BY and NULL
-- ORDER BY는 오름차순이 기본, 내림차순을 보고 싶으면 DESC
SELECT value
FROM prod.count_test
ORDER BY value DESC;
-- 위와 같은 쿼리
SELECT value
FROM prod.count_test
ORDER BY 1 DESC;
SELECT value
FROM prod.count_test
ORDER BY value ASC;
-- DATE 관련 함수들 써보기
SELECT
created, CONVERT_TZ(created, 'GMT', 'Asia/Seoul') seoul_time,
YEAR(created) y, QUARTER(created) q, MONTH(created) m, MONTHNAME(created) mnn,
DATE(created) d, HOUR(created) h, MINUTE(created) m, SECOND(created) s
FROM session
LIMIT 10;
SELECT
DATEDIFF(now(), created) gap_in_days,
DATE_ADD(created, INTERVAL 10 DAY) ten_days_after_created
FROM session
LIMIT 10;
SELECT STR_TO_DATE('01,5,2013', '%d,%m,%Y');
-- Type casting 문자열 100.0을 실수형으로 변경
SELECT cast('100.0' as float), convert('100.0', float);