1. Syntax
SELECT [DISTINCT] { * | <column_name>[AS ] 별칭, ....} FROM 테이블 이름(들) [AS 테이블이름 별칭] [WHERE 검색조건(들)] [GROUP BY 속성이름] [HAVING 검색조건(들)] [ORDER BY 속성이름(ASC|DESC)] |
- ALL : 튜플의 중복을 허용하도록 지정
- DISTINCT : 튜플의 중복을 허용하지 않도록 지정
- 중복을 제거한 유일 집합을 추출
- 컬럼 2개를 조회 ; 2개 컬럼 조합 기준 중복된 행이 제거된 집합이 출력된다.
- AS 키워드를 이용해 결과 테이블에서 속성의 이름을 바꾸어 출력 가능하다.
- AS 키워드 생략 가능하다,
- 앨리어스를 사용해서 테이블 및 컬럼(표현식)에 대한 이름(별칭)을 지정할 수 있다.
- 앨리어스에 공백이 있을 경우 " + "로 감싼다.
- 앨리어스명으로 한글로 줄수도 있다.
- 앨리어스 사용 시 "AS"는 생략 가능하다.
- 산술식을 이용해 검색
- 산술식 : 속성의 이름과 +, -, *, / 등의 산술 연산자와 상수로 구성
- 비교 연산자
=
<> 다르다
>
<
>=
<=
- 논리 연산자
AND
OR
NOT
- WHERE절
- 조건을 주어 특정 조건에 부합하는 결과집합(행)만을 추출한다. ">"연산자
- BETWEEN 연산자 : 값에 범위에 대한 조건에 부합하는 결과 집합(행)을 리턴한다.
- NOT BETWEEN 연산자
- IN 연산자 : 특정 목록과 일치하는 값이 있으면 결과 집합으로 리턴한다. IN 연산자와 OR 연산은 결과 집합이 동일하다.
- NOT IN 연산자 : "<>" 연산자 + AND조건
- ORDER BY절
- 1개 컬럼 - ASC (오름차순) 정렬
- 2개 컬럼 - DESC (내림차순) + 정렬
- 컬럼 앨리어스를 써서 기재하여 정렬
- SELECT절 컬럼 기재 순서(순번)를 기재하여 정렬 : nulls first, nells last
- LIMIT절 : SELECT문에서 반환되는 결과집합의 행의 건수를 제한한다.
- LIMIT ~ OFFSET 사용 : OFFSET : 출력하는 시작 행 (0 부터 시작한다.)
- FETCH절 : SELECT문에서 반환되는 결과집합의 행의 건수를 제한한다.
* LIMIT vs FETCH
- 기능적으로 동일하다.
- LIMIT는 국제 표준은 아니다.
- FETCH는 SQL 국제 표준이다.
- LIKE 연산자
- 특정 패턴과 일치하는 조건으로 데이터를 조회한다.
- 와일드 카드 %, _와 함께 사용한다.
- %
- 무엇이 나오든지 나오지 않던지 상관이 없다는 뜻이다.
- 와일드 카드 % 앞/뒤로 사용한다.
- 해당된 값이 어떤걸로 시작해서 어떤걸로 끝나든지 간에 'Jen'만 존재하면 리턴한다.
- _(언더바) : 무엇이든지 간에 한 자리의 문자를 의미한다.
- ___(언더바 3개) : 무엇이든지 간에 3자리만 딱 있으면 리턴한다.
- _% (언더바퍼센트)
ex) Jor___% : Jor으로 시작하면서 총 6자리 이상인 모든 행을 리턴한다.
- NULL 비교
- IS NULL 연산자
- IS NOT NULL 연산자
- CASE 문 : IF문과 같은 분기처리에 의한 SQL문 작성이 가능하다.
- CASE 문 (ORDER BY)
- 그룹별 검색 (GROUP BY)
특성 속성의 값이 같은 튜플을 모아 그룹을 만들고, 그룹별로 검색한다.
HAVING 키워드를 같이 사용하여 그룹에 대한 조건을 작성할 수 있다.
SELECT절에 등장한 컬럼이 GROUP BY에 모두 명시해야한다. 단, 집계함수는 제외한다.
- WHERE절과 HAVING절의 차이
WHERE는 "집계 전" 데이터를 필터링, WHERE절에는 집계함수가 올 수 없다.
HAVING은 "집계 후" 데이터를 필터링, HAVING절에는 집계함수만 올 수 있다.
2. null을 이용한 검색
1) null은 empty가 아닌 unknown 상태이다.
2) is null 키워드를 이용해 특정 컬럼 속성의 값이 null 값인 지를 비교할 때 사용한다. is not null 키워드를 이용해 특정 컬럼 속성의 값이 null 값이 아닌 지를 비교할 때 사용한다.
3) null 값과 산술 연산 및 비교 연산
- 결과는 null
ex) 5 + null returns -> null null > 5 returns -> null null = null returns -> null |
4) null과 논리 연산 결과
- OR
(null OR true) = true (null OR false) = null (null OR null) = null |
- AND
(null AND true) = null (null AND false) = false (null AND null) = null |
- NOT
(NOT null) = null |
3. NULL 관련 함수
1) NULLIF 함수 ; NULL 처리 할 수 있다.
2) COALESCE 함수
4. CAST 연산자
1) 데이터 타입(유형)을 변환한다.
2) 문자열을 INTERVAL 형으로 형변환 ; 시간 계산에 활용할 수 있다.
3) 문자열을 TIMESTAMP 형식으로 변환
5. 문자열 함수
6. 날짜 관련 함수
1) 일자와 시간을 다루는 함수
2) 일자와 시간을 추출하는 함수
3) 문자열을 일자 및 시간형으로 형변환하는 함수
7. 수학 관련 함수
1) 반올림, 올림, 내림 자름 관련 함수
2) 연산 관련 함수
3) 집계 함수
- 개수, 합계, 평균, 최대값, 최소값
- SELECT절이나 HAVING절에서만 사용 가능하다.
- WHERE절에서는 사용할 수 없다.
count() : 레코드 개수 리턴한다. max() : 컬럼값의 최대값을 리턴한다. min() : 컬럼값의 최소값을 리턴한다. sum() : 컬럼값의 합을 리턴한다. avg() : 컬럼값의 평균을 리턴한다. |
'프로그래밍 > SQL' 카테고리의 다른 글
[SQL] 데이터 함수 COMMIT, INSERT, UPDATE, UPDATE JOIN, DELETE, UPSERT, GROUP BY (0) | 2022.09.29 |
---|---|
[SQL] INNER JOIN OUTER JOIN 종류 여러개 조인하는 방법 (0) | 2022.09.28 |
[SQL] 데이터 언어 종류 DDL DML DCL 데이터 수정 및 삭제 (0) | 2022.09.26 |
[SQL] 데이터 타입 유형 테이블 생성 및 삭제 조건 PK FK (0) | 2022.09.25 |
[SQL] 데이터 모델링 서식 설정과 데이터 모델링 예제 (0) | 2022.09.24 |