21.1.28(목) DB/SELECT, 함수 기초

민국·2021년 1월 28일
0

- Literal(리터럴)

: 임의로 지정한 문자열('' => 문자열, 문자 따로 구분없이 씀) 을 SELECT절에 기술하면 실제 그 테이블에 존재하는 데이터처럼 조회 가능 (쉽게 말하면 데이터에 임의에 문자열 추가해주기)
[표현법] SELECT 컬럼, 컬럼, ... '문자열(리터럴)' FROM 테이블;

- DISTINCT

: 조회하고자 하는 컬럼에 중복된 값을 딱 한번씩만 조회하고자 할 때 사용(해당 컬럼명 앞에 기술)
[표현법] SELECT DISTINCT 컬럼명 FROM 테이블;
(단, SELECT절에 단 한개만 기술 가능)

- WHERE절

: 검색할 컬럼의 조건을 설정하여 행(Row) 결정(원하는 데이터 찾기위해 조건 설정 - 엑셀에 필터링)
[표현법]
SELECT 조회하고자 하는 컬럼, 컬럼, 컬럼.....
FROM 테이블
WHERE 조건식;

=> 조건식에 다양한 연산자들 사용 가능

<비교연산자>

  • <, >, >=, <= ,=, !=,^=, <>

  • AND, OR

  • BETWEEN AND
    [표현법] WHERE (NOT) 컬럼명 (NOT) BETWEEN 하한값 AND 상한값
    : 몇 이상 몇 이하 범위제시 ,부정문도 존재)
    => DATE형식에서도 가능

  • LIKE
    [표현법] WHERE 비교대상컬럼명 LIKE '특정패턴'
    : 비교하려는 값이 특정패턴(문자,숫자 등)을 만족하면 조회되는 방식('%'와 '')
    <%> : 0글자 이상
    EX)
    비교대상 컬럼명 LIKE '문자%' => 컬럼값 중에 '문자'로 "시작" 되는걸 조회
    비교대상 컬럼명 LIKE '%문자' => 컬럼값 중에 '문자'로 "끝" 나는걸 조회
    비교대상 컬럼명 LIKE '%문자%' => 컬럼값 중에 '문자'가 "포함" 되는 걸 조회
    <
    > : 1글자
    EX)
    비교대상컬럼명 LIKE '_문자' => 컬럼값 중에 '문자' 앞에 무조건 한 글자가 올 경우 조회
    비교대상컬럼명 LIKE '__문자' => 컬럼 값 중에 '문자' 앞에 무조건 두 글자가 올 경우 조회

문제점)
만약 _ _ _ (4번째) 부분을 와일드카드로 인식시키고 싶을 때 문제 생길 수 있음!
=> 해결방안 : WHERE 비교대상컬럼명 LIKE '
_ $(#,@,! 아무 특수기호) %' ESCAPE '특수기호';
(JAVA에서도 ESCAPE문자 있음 : \n, \t, ...)

※ 와일드카드(wild card) 란?
: 파일을 지정할 때, 구체적인 이름 대신에 여러 파일을 동시에 지정할 목적으로 사용하는 특수 기호. *', ?' 따위.

  • IS NULL / IS NOT NULL (NULL 비교값은 = 비교 아님)
    [표현법]
    비교대상컬럼 IS NULL : 컬럼값이 NULL일 경우
    비교대상컬럼 IS NOT NULL : 컬럼값이 NULL이 아닐 경우
  • IN
    : 비교대상컬럼 값에 내가 제시한 목록들 중에 일치하는 값이 있는지
    [표현법]
    비교대상 (NOT) IN (값, 값, 값,....)

<연결연산자>

: || 를 이용하여 여러 컬럼값들을 마치 하나의 컬럼인 것 처럼 연결시켜주는 연산자
컬럼과 리터럴(임의의 문자열)을 연결할 수 있음
(JAVA에 ("num1 : " + num1) 여기서 '+' 역할)

[표현법] SELECT 컬럼 || 컬럼 || ... FROM 테이블;

*참고) 연산자 우선순위
0. ()
1. 산술연산자
2. 연결연산자
3. 비교연산자
4. IS NULL , LIKE, IN
5. BETWEEN AND
6. NOT
7. 논리연산자 - AND
8. 논리연산자 - OR

ORDER BY 절(정렬)

: SELECT문 가장 마지막에 기입하는 구문 뿐만 아니라 실행 순서 또한 가장 마지막

[표현법]
SELECT 조회할 컬럼, 컬럼, ....
FROM 조회할 테이블명
WHERE 조건식
ORDER BY 정렬기준으로 세우고자하는 컬럼명 | 별칭 | 컬럼순번 [ ASC|DESC ] NULLS FIRST | NULLS LAST
- ASC : 오름차순 (생략시 기본값)
- DESC : 내림차순
-NULLS FIRST(NULLS 값 앞으로 배치, 내림차순 기본값)
/ NULLS LAST(NULLS 값 뒤로 배치, 오름차순 기본값) : 생략가능

실행순서

SELECT 컬럼 (3)
FROM 테이블 (1)
WHERE 조건 (2)
ORDER BY 정렬 (4)

함수

: 전달된 값들을 읽어서 계산한 결과를 반환함(자바의 메소드와 같음)

  • 단일행 함수 : N개의 값을 읽어서 N개의 결과를 리턴 (매 행마다 함수 실행 후 결과 반환)
  • 그룹 함수 : N개의 값을 읽어서 1개의 결과를 리턴(하나의 그룹별로 함수 실행 후 결과 반환)
    => 단일행함수와 그룹함수를 함께 사용할 수 없음 : 결과 행의 갯수가 다르기 때문

단일행 함수

문자열 함수

  • LENGTH / LENGTHB

    LENGTH(STR) : 해당 전달된 문자열의 글자 수 반환
    LENGTHB(STR) : 해당 전달된 문자열의 바이트 수 반환

    => 결과 값 NUMBER(숫자) 타입으로 반환

    -STR : '문자열' | 문자열에 해당하는 컬럼
    -한글 : ㄱ ㅏ ㄴ => 한 글자당 3BYTE 취급
    -숫자, 영문, 특수문자 : 한 글자당 1BYTE 취급

※ DUAL (가상테이블, DUMMY TABLE) 정의
1. 오라클 자체에서 제공되는 테이블
2. 간단하게 함수를 이용해서 계산 결과값을 확인 할 때 사용하는 테이블
3. SYS사용자가 소유하는 오라클의 표준 테이블
4. SYS사용자가 소유하지만 어느 사용자에서 접근 가능함

  • dual 테이블은 사용자가 함수(계산)를 실행할 때 임시로 사용하는데 적합하다.
  • 함수에 대한 쓰임을 알고 싶을때 특정 테이블을 생성할 필요없이 dual 테이블을 이용하여 함수의 값을 리턴(return)받을 수 있다.
profile
새싹개발자

0개의 댓글