LECTURE/Oracle

01_SELECT 기본문법 및 연산자

heywoo 2023. 1. 13. 22:12

SQL(Structured Query Language)

관계형 데이터베이스에서 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색언어.

원하는 데이터를 찾는 방법이나 절차를 기술하는 것이 아닌 조건을 기술하여 작성

 

분류 용도 명령어
DQL (Data Query Language) 데이터 검색 SELECT
DML (Date Manipulation Language) 데이터 조작 INSERT UPDATE DELETE
DDL (Date Definition Language) 데이터 정의 CREATE DROP ALTER
TCL (Transection Control Language) 트렌젝션 제어 COMMIT ROLLBACK

 

주요 데이터 타입

1. NUMBER - 숫자

2. CHARACTER

    CHAR - 고정길이 문자(최대 2000 바이트)

    VARCHAR2 - 가변길이 문자 (최대 4000 바이트)

    LONG - 가변길이 문자 (최대 2기가 바이트)

3. DATE - 날짜

4. LOB

  CLOB - 가변길이 문자(최대 4기가 바이트)

   BLOB - Binary Data (2진수)

SELECT

Result Set : 데이터를 조회한 결과, SELECT 구문에 의해 반환된 행들의 집합

0개 이상의 행이 포함될 수 있으며 특정한 기준에 의해 정렬될 수 있다.

특정 컬럼이나 특정 행, 또는 특정 행/특정 컬럼을 조회할 수 있으며 여러 테이블의 특정 행/컬럼을 조회할 수도 있다.

SELECT 기본 작성법

SELECT
	    컬럼명
	  , 컬럼명
      , 컬럼명
  FROM 테이블명
 WHERE 조건식;

SELECT : 조회하고자 하는 컬럼명 기술. 모든 컬럼 조회 시 ‘*’ 기호를 사용하며 조회 결과는 기술한 컬럼명 순으로 표시된다.

FROM : 조회 대상 컬럼이 포함된 테이블 명을 기술한다.

WHERE : 행을 선택하는 조건을 기술한다. 여러 개의 제한조건을 포함할 수 있으며, 각각의 제한 조건은 논리 연산자로 연결한다.

 

컬럼 별칭 : AS + 별칭 을 기술하여 별칭을 지을 수 있다. AS를 생략해도 되며 공백 등 특수문자가 포함된다면 “ “로 감싸야한다.

리터럴 : 임의로 지정한 문자열을 SELECT 절에 사용하면, 테이브에 존재하는 데이터처럼 사용할 수 있다. 문자 혹은 날짜 리터럴은 ‘ ‘ 기호를 사용해야 하며 Result Set의 모든 행에 반복 표시된다.

DISTICT : 컬럼에 포함된 중복값을 한 번씩만 표시하고자 할 때 사용하며 SELECT절에 1회만 기술 가능하다.

연결연산자 : || 를 사용하여 여러 컬럼을 하나의 컬럼인 것처럼 연결하거나, 컬럼과 리터럴을 연결할 수 있다.

WHERE절

여러 개의 조건을 만족하는 행을 골라낼 때 AND 혹은 OR를 사용할 수 있다.

NULL값 조회

IS NULL 과 NOT IS NULL 을 사용하여 조회한다.

비교 연산자

비교 결과는 논리 결과 중 하나(TRUE/FALSE/NULL)가 된다. 단, 비교하는 두 컬럼 값/표현식은 서로 동일한 데이터 타입이어야 한다.

BETWEEN AND

지정한 범위(상한, 하한 값 경계도 포함)에 포함되면 TRUE를 리턴한다.

포함되지 않는 걸 구할 땐 NOT BETWEEN AND

LIKE

비교하려는 값이 지정한 특정 패턴을 만족시키면 TRUE를 리턴하는 연산자로 %와 _를 와일드카드로 사용할 수 있다.

컬럼명 LIKE ‘문자 패턴’

‘글자%’ - 글자로 시작하는 값

‘%글자’ - 글자로 끝나는 값

‘%글자%’ - 글자가 포함된 값

‘___9%’ - 4번째 자리 수가 9

WHERE EMAIL LIKE '___#_%' ESCAPE '#';

→ ESCAPE 문자 앞에 언더바는 와일드카드, 뒤에 언더바는 문자 언더바

IN 연산자

비교하는 값 목록에 일치하는 값이 있는지 확인

컬럼명 IN (’D6’, ‘D9’)

반대로 제외한 나머지를 구할 땐 NOT IN을 사용하고, NULL값은 별도로 처리해야 한다.

NOT IN (’D6’, ‘D9’) OR 컬럼명 IS NULL;

연산자 우선순위

AND가 OR보다 우선 처리되며, 괄호를 이용하여 우선순위 변경이 가능하다.