SELECT 살펴보기
SELECT 사용하기 전에
- SHOW DATABASES;
- USE prod; – 데이터베이스 이름
- SHOW TABLES;
SELECT (1)
- 테이블에서 레코드들을 읽어오는데 사용
- WHERE를 사용해 조건을 만족하는 레코드
SELECT (2)
SELECT (3)
SELECT (4)
SELECT (5)
CASE WHEN
- 필드 값의 변환을 위해 사용 가능
- CASE WHEN 조건 THEN 참일때 값 ELSE 거짓일때 값 END 필드이름
- 여러 조건을 사용하여 변환하는 것도 가능하다.
NULL 이란?
- 값이 존재하지 않음을 나타내는 상수 0혹은 ""과는 다름
- 필드 지정시 값이 없는 경우 NULL로 지정 가능
- 테이블 정의시 디폴트 값으로도 지정 가능
- 어떤 필드의 값이 NULL인지 아닌지 비교는 특수한 문법을 필요로함
- field 1 is NULL 혹은 field 1 is not null
- NULL이 사칙연산에 사용되면 그 결과는?
- select 0 + null, 0 - null, 0 * null, 0/null
Where
- IN
- where channel_id id (3,4)
- where channel_id = r or channel_id =4
- not in과 함께 쓰임
- LIKE
- LIKE : 대소문자 구별 없이 문자열 매칭 기능을 제공해줌
- where channel LIKE ‘G%’ -> ’G*’
- where channel LIKE ‘%o%’ -> ‘o’
- NOT LIKE와 함께 쓰임
- BETWEEN
- 날짜 범위에 사용 가능
- 위의 오퍼레이터들은 CASE WHEN사이에서도 사용이 가능하다.
String 함수
- LEFT(str,N)
- REPLACE(str, exp1, exp2)
- UPPER(str)
- LOWER(str)
- LENGTH(str)
- LPAD,RPAD
- SUBSTRING
- CONCAT
ORDER BY
- 디폴트 순서는 오름차순(작은 값이 먼저 나옴)
- ORDER BY 1 ASC
- 내림차순을 원하면 DESC
- ORDER BY 1 DESC
- 여러개의 필드를 사용해서 정렬하려면
- ORDER BY 1 DESC, 2, 3
- NULL 값 순서는?
- 오름차순일 경우 처음에 위치
- 내림차순일 경우 마지막에 위치
타입 변환 (1)
- DATE Conversion
- NOW
- 타임존 관련 변환
- CONVERT_TZ(now(),‘GMT’,‘Asia/Seoul’)
- DATE, WEEK, MONTH, ,YEAR, HOUR, MINUTE, SECOND, QUARTER, MONTHNAME
- DATEDIFF
- DATE_ADD
- …
- STR_TO_DATE, DATE_FORMAT
타입 캐스팅
- 1/2 결과는?
- 0이된다. 정수간의 연산은 정수가 되어야 하기 때문
- 분자나 분모중의 하나를 float으로 캐스팅해야 0.5가 나온다.
- 이는 프로그래밍 언어에서도 일반적으로 동일하게 동작함
- case 함수를 사용
- cast(category as float)
- convert(expression, float)
GROUP BY
- select 실행 시 결과를 특정 그룹별로 묶는 방법
GROUP BY & Aggregate 함수 (1)
- 테이블의 레코드를 그룹핑하여 그룹별로 다양한 정보를 계산
- 두단계로 이루어진다.
- 먼저 그룹핑을 할 필드를 결정(하나 이상의 필드가 될 수 있다.)
- GROUP BY로 지정(필드 이름을 사용하거나 필드 일련번호 사용)
- 다음 그룹별로 계산할 내용을 결정
- 여기서 Aggregate함수를 사용
- COUNT, SUM, AVG, MIN, MAX, GROUP _CONCAT, …
- 보통 필드 이름을 지정하는 것이 일반적(alias)
GROUP BY & Aggregate 함수 (2)
- 월별 세션수를 계산하는 SQL
- prod.session 사용 (id, create 필드)