[DBMS]SELECT
카테고리: DBMS
[9] SELECT
9.1. Syntax
SELECT [DISTINCT(중복허용불가)] { * | <column_name>[AS 별칭], ...} (5) -- * = ALL / -- AS 생략가능
FROM 테이블이름(들) [AS 테이블이름 별칭] (1)
[WHERE 검색조건(들)] -- 조건지정 (2)
[GROUP BY 속성이름] -- 묶기 (3)
[HAVING 검색조건(들)] -- GROUP 에서 조건 (4)
[ORDER BY 속성이름[ASC[DESC]] -- ASC 오름차순, DESC 내림차순 (6)
- ALL : 투플의 중복을 허용하도록 지정
- DISTINCT : 투플의 중복을 허용하지 않도록 지정
- 중복을 제거한 유일 집합을 추출
- 컬럼 2개를 조회
- 2개 컬럼 조합 기준 중복된 행이 제거된 집합이 출력됨
- AS 키워드를 이용해 결과 테이블에서 속성의 이름을 바꾸어 출력 가능
- AS 키워드 생략 가능
- 앨리어스를 사용해서 테이블 및 컬럼(표현식)에 대한 이름(별칭)을 지정할 수 있음
- 앨리어스에 공백이 있을 경우 “ “로 감쌈
- 앨리어스명으로 한글을 줄수도 있음
- 앨리어스 사용시 “AS”는 생략 가능
- 산술식을 이용해 검색
- 산술식 : 속성의 이름과 +,-,*,/ 등의 산술 연산자와 상수로 구성
-
비교 연산자
= 같다 <> 같지 않다 < > <= >=
-
논리 연산자
AND OR NOT
- WHERE 절
- 조건을 주어 특정 조건에 부합하는 결과집합(행-투플)만을 추출.
- ”>” 연산자
- BETWEEN 연산자
- 값의 범위에 대한 조건에 부합하는 결과 집합(행)을 리턴.
- NOT BETWEEN 연산자 – BETWEEN 부정
- IN 연산자
- 특정 목록과 일치하는 값이 있으면 결과집합으로 리턴함.
- IN 연산자와 OR 연산은 결과집합이 동일함.
- NOT IN 연산자
- ”<>” 연산자 + AND 조건
- 조건을 주어 특정 조건에 부합하는 결과집합(행-투플)만을 추출.
- ORDER BY 절
- 1개 컬럼 - ASC (오름차순) 정렬 // DESC (내림차순) 정렬
- 2개 컬럼 - DESC (내림차순) 정렬 + ASC (오름차순) 정렬
- 컬럼 앨리어스를 기재하여 정렬
- SELECT 절 컬럼 기재 순서(순번)를 기재하여 정렬
- nulls first, nulls last
- LIMIT 절
- SELECT 문에서 반환되는 결과집합의 행의 건수를 제한함
- LIMIT ~ OFFSET(~부터) 사용
- OFFSET: 출력하는 시작 행 (0부터 시작함)
- FETCH 절
- SELECT 문에서 반환되는 결과집합의 행의 건수를 제한함
- LIMIT VS FETCH
- 기능적으로 동일함
- LIMIT 는 국제 표준은 아님
- FETCH 는 SQL 국제 표준임
- LIKE 연산자
- 특정 패턴과 일치하는 조건으로 데이터를 조회함
- 와일드 카드
%
,_
와 함께 사용 %
- 무엇이 나오든지 나오지 않든지 상관이 없다는 뜻임 // % 위치에 아무거나 있어도 된다는 뜻
- 와일드 카드
%
앞/뒤 사용 (‘%jen%’)- 값이 어떤걸로 시작해서 어떤걸로 끝나든지간에 ‘jen’만 존재하면 리턴함
_
(언더바)- 무엇이든지간에 한자리의 문자를 의미함.
___
(3개)- 무엇이든지 간에 3자리만 딱 있으면 리턴함.
_%
(언더바퍼센트)jen___%
jen
으로 시작하면서 총 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 절에는 집꼐함수만 올 수 있음.
- WHERE : “집계 전” 데이터를 필터링
- 그룹별 검색
9.2. null 을 이용한 검색
- null 은 empty 가 아닌 unknown 상태
- is null 키워드를 이용해 특정 속성의 값이 null 값인지를 비교
- is not null 키워드를 이용해 특정 속성의 값이 null 값이 아닌지를 비굑
- null 값과 산술 연산 및 비교 연산
-
결과는 null
ex) 5 + null returns null null > 5 returns null null = null returns null
-
- 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
-
9.3. null 관련 함수
- NULLIF 함수
- NULL 처리 할수 있음
- COALESCE 함수
- NULL 처리 할수 있음
9.4. CAST 연산자
- 데이터 타입(유형)을 변환
- 문자열을 INTERVAL 형으로 형변환
- 시간계산에 활용할수 있음
- 문자열을 TIMESTAMP 형식으로 변환
9.5. 문자열 함수
ascii('A') as "ascii('A')" -- 문자 'A'의 아스키코드값 리턴
, chr(65) as "chr(65)" -- 아스키코드 65의 문자를 리턴
, concat('A', 'B', 'C') as "concat('A', 'B', 'C')" -- 문자열 합침
, concat_ws('|', 'A', 'B', 'C') as "concat_ws('|','A', 'B', 'C')" -- 문자열을 구분자로 구분하면서 합침
, split_part('A|B|C', '|', '2') as "split_part('A|B|C', '|', '2')" -- 구분자가 있는 문자열에서 n(2)번째 문자열을 리턴함
, left ('ABC', 1) as "left ('ABC', 1)" -- 왼쪽에서 n(1)번째 문자 리턴
, right ('ABC', 1) as "right ('ABC', 1)" -- 오른쪽에서 n(1)번째 문자 리턴
, LENGTH ('ABC') as "LENGTH ('ABC') as" -- 문자열 길이 리턴
, LOWER('ABC') as "LOWER('ABC') as" -- 소문자로 바꿈
, UPPER('abc') as "UPPER('abc')" -- 대문자로 바꿈
, lpad('123', 6, '0') as "lpad('123', 6, '0')" -- 총 6자리 문자열로 왼쪽에 0을 채움
, rpad('123', 6, '0') as "rpad('123', 6, '0')" -- 총 6자리 문자열로 오른쪽에 0을 채움
, ltrim(' 123') as "ltrim(' 123')" -- 왼쪽에 있는 공백 제거함
, rtrim('123 ') as "rtrim('123 ')" -- 오른쪽에 있는 공백 제거함
, trim(' 123 ') as "trim(' 123 ')" -- 양쪽에 있는 공백 제거함
, position ('B' in 'ABC') as "position ('B' in 'ABC')" -- ABC 문자열에서 B를 찾아서 순서를 리턴함
, REPEAT ('*',10) as "REPEAT ('*',10)" -- * 를 N(10)번 반복함
, reverse('NEZE') as "reverse('NEZE')" -- 문자열을 거꾸로 출력함
, substring('ABC',2,2) as "substring('ABC',2,2)" -- 문자열에서 i번째 문자로부터 j개의 문자를 출력함
9.6. 날짜 관련 함수
- 일자와 시간을 다루는 함수
- AGE 함수 : 첫번째 인자값 - 두번째 인자값으로 시간(세월)의 차이를 리턴
- 일자와 시간을 추출하는 함수
- 문자열을 일자 및 시간형으로 형변환하는 함수
9.7. 수학 관련 함수
- 반올림, 올림, 내림, 자름 관련 함수
- 연산 관련 함수
- 집계 함수
- 개수, 합계, 평균, 최대값, 최소값
- SELECT 절 HAVING 절에서만 사용 가능
- WHERE 절에서는 사용불가
- count() : 레코드 개수 리턴
- max() : 컬럼값의 최대값을 리턴
- min() : 컬럼값의 최소값을 리턴
- sum() : 컬럼값의 합을 리턴
- avg() : 컬럼값의 평균을 리턴
댓글 남기기