[DBMS]SELECT

Date:     Updated:

카테고리:

태그:

[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 절에는 집꼐함수만 올 수 있음.

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

DBMS 카테고리 내 다른 글 보러가기

댓글 남기기