프로그래밍/SQL / / 2022. 9. 27. 10:11

[SQL] WHERE ORDER BY GROUP BY LIKE LIMIT FETCH CAST 문자열 날짜 수학 집계 함수

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() : 컬럼값의 평균을 리턴한다.


LIST
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유