티스토리 뷰
SELECT
- 테이블들에서 레코드들을 읽어오는데 사용한다.
-
SELECT 필드이름1, 필드이름2, ... FROM 테이블이름 WHERE 선택조건 -- 조건 검색 GROUP BY 필드이름1, 필드이름2, ... -- 그룹화 ORDER BY 필드이름 [ASC|DESC] -- 정렬 LIMIT N; -- 앞에서 N개 로우만 출력
- *을 통해 모든 필드를 지칭할 수 있다. (SELECT * FROM ....)
- 옵션
- DISTINCT - 중복되는 값들을 지울 수 있다.
- 그룹함수 - GROUP BY를 사용하면 그룹함수를 쓸 수 있다(COUNT, SUM 등)
- 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 session
WHERE
- 조건절이다.
- 옵션
- IN : 여러 값 중에 해당 컬럼 값이 있는지를 찾는다.
- LIKE : 대소문자 구별 없이 문자열 매칭 기능을 제공한다.
- %는 모든 문자열, _는 모든 문자를 나타낸다.
- BETWEEN : 범위를 나타낼 때 사용가능하다.
- 이 옵션들은 CASE WHEN 절에서도 사용 가능하다.
- NULL 여부를 검사할 때는 IS NULL 키워드를 쓴다.
ORDER BY
- 기본값은 오름차순이다.
- 내림차순은 ORDER BY 컬럼명 DESC 이다. (필드 순서 번호로 컬럼명을 대체할 수 있다)
- NULL 값들은 오름차순인 경우 처음에 위치한다.
- NULL 값들은 내림차순인 경우 마지막에 위치한다.
STRING Functions
- LEFT(str, N) : 왼쪽부터 N개의 글자를 반환한다.
- REPLACE(str, exp1, exp2) : str에서 exp1을 찾아서 exp2로 바꾼다.
- UPPER(str) / LOWER(str) : 대문자 / 소문자로 바꾼다.
- LENGTH(str) : str의 길이를 반환한다.
- LPAD(str, N, ch) / RPAD(str, N, ch) : 왼쪽 / 오른쪽으로 특정 문자로 패딩한다.
- SUBSTRING : 주어진 문자열에서 특정 위치부터 원하는 길이만큼의 글자를 잘라 반환한다.
- CONCAT : 문자열을 합쳐서 새로운 문자열로 만든다.
Null 이란?
- 값이 존재하지 않음을 나타내는 상수이다. 0 또는 ""과는 다르다.
- 테이블 정의시 디폴트 값으로도 지정할 수 있다.
- 어떤 필드의 값이 NULL인지 여부를 비교할 때는 is 키워드를 쓴다.
- field1 is NULL 또는 field1 is not NULL
- NULL이 사칙연산에 적용하면 다음과 같다.
- 0 + NULL = NULL
- 0 - NULL = NULL
- 0 * NULL = NULL
- 0 / NULL = NULL
타입 변환
날짜
- NOW
- 타임존 관련 변환
- CONVERT_TZ(now(), 'GMT', 'Asia/Seoul')
CONVERT_TZ(시간, 현재 타임존, 결과 타임존)
- CONVERT_TZ(now(), 'GMT', 'Asia/Seoul')
- DATE, WEEK, MONTH, YEAR, HOUR, MINUTE, SECOND : 타임스탬프값에 사용하면 특정 값을 구한다.
- DATEDIFF (현재 날짜, 비교할 날짜) : 두 타임스탬프간의 날짜 차를 구한다.
- DATE_ADD : 한 타임스탬프에서 날짜를 더했을 때의 날짜를 반환한다.
- STR_TO_DATE : 날짜 형식의 문자열을 날짜로 바꾼다.
- DATE_FORMAT : DATE형식을 문자열로 바꾼다.
수
- 1/2의 결과는 0이 된다. 정수간의 연산은 정수가 되어야 하기 때문이다.
- cast함수 / convert함수를 사용해 형을 변환한다.
- cast(필드명 as float) -> cast('100.0' as float)
- convert(필드명, float) -> convert('100.0', float)
value |
NULL |
1 |
1 |
0 |
0 |
4 |
3 |
- SELECT COUNT(1) FROM count_test; -> 7 (COUNT함수의 인자가 NULL이 아니므로 각 행을 1씩 세서 총 행 수를 구한다)
- SELECT COUNT(0) FROM count_test; -> 7 (COUNT함수의 인자가 NULL이 아니므로 각 행을 1씩 세서 총 행 수를 구한다)
- SELECT COUNT(NULL) FROM count_test; -> 0 (COUNT함수의 인자가 NULL이면 세지 않는다. 즉 0이다)
- SELECT COUNT(value) FROM count_test -> 6 (value의 값중 NULL이 아닌 것의 개수를 센다)
- SELECT COUNT(DISTINCT value) FROM count_test -> 5 (UNIQUE한 NULL이 아닌 로우 개수를 센다)
728x90
반응형
'프로그래머스 백엔드 1기 > Database' 카테고리의 다른 글
데이터베이스 (12) - JOIN (0) | 2021.08.13 |
---|---|
데이터베이스 (11) - INSERT문, UPDATE문, DELETE문 (0) | 2021.08.12 |
데이터베이스 (9) - CREATE TABLE문, DROP TABLE문 (0) | 2021.08.12 |
데이터베이스 (8) - 테이블 필드 속성 (0) | 2021.08.12 |
데이터베이스 (7) - 사용자 ID와 세션 ID (0) | 2021.08.11 |
댓글