내가 보려고 정리한 DB

[데이터베이스] SELECT - 1

nacastle 2020. 5. 7. 06:15

 

'SELECT' Graphic Syntax Diagram 

 

 

- Graphic Syntax Diagram의 기본 구조 설명 (여기 참고)

 

>주경로와 곁가지

주경로: 여러 키워드 중 반드시 하나는 필요한 경우

곁가지: 키워드나 파라미터가 옵션

 

>Multipart Diagrams

신택스 다이어그램이 너무 길어 한 줄로 표현되지 않을 때 여러 줄로 나누어 표현한 것

왼쪽부터 시작해 오른쪽 끝에 다다르면 다음 줄 왼쪽부터 읽으면 됨

 

>도형

사각형: 키워드 혹은 명령어 (대문자로 표시)

타원형: 파라미터 (A-1 확인)

원형: punctuation(쉼표, 마침표와 같은 구두점), operator(연산자), delimiter(구분자 , ; : $), terminator(종결자?)

 

>Syntax Loop ????????????????????

 

 ----1번 라인-------------------------------------------------------------------------------------------------------------------

- SELECT

테이블에 있는 데이터를 조회하는 명령어

 

- hint

SQL 튜닝의 핵심부분으로 일종의 지시구문

Optimizer에 의존하여 나온 실행 계획보다 훨씬 효율적인 실행계획을 사용자가 구사할 수 있다.

Optimizer의 실행 계획을 개발자가 원하는 대로 바꿀 수 있게 해준다.

테이블이나 인덱스의 잘못된 실행 계획을 개발자가 직접 바꿀 수 있도록 도와주는 것

형식: /*+ 힌트내용 */

 

cf) Optimizer, 튜닝

Optimizer: SQL을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리경로를 생성해 주는 DBMS 내부의 핵심엔진

튜닝: SQL 문을 최적화하여 빠른 시간내에 원하는 결과값을 얻기 위한 작업

 

 

- DISTINCT

특정 열 내 중복된 데이터를 필터링해서 조회

ex) SELECT DISTINCT JOB FROM EMP;

 

- UNIQUE

기본 키에 참여하고 있지 않은 특정 열에 중복 값이 입력되지 않도록 하는 키워드

 

- DISTINCT와 UNIQUE의 차이점

일단 둘은 동의어

DISTINCT가 표준 SQL키워드, UNIQUE는 오래된 syntax(문법)

DISTINCT는 주로 만들어진 데이터를 읽을 때, UNIQUE는 데이터를 주입할 때 사용

 

- ALL

특정 열 내 모든 행을 리턴하는 키워드

 

- select_list

조회하고싶은 컬럼(=attribute, feature, field, variable = 열)

 

----2번 라인-------------------------------------------------------------------------------------------------------------------

- FROM (키워드)

FROM절은 조작할 테이블 소스를 불러오는 키워드(?)

 

- table_reference (parameter: table)

조작할 테이블

 

- join_clause (parameter: table) ?????????????????????

두개 이상의 테이블에 대해서 결합하여 나타낼 때

종류: 이너 조인, 아우터 조인, 크로스 조인, 셀프 조인

 

- where_clause (parameter: condition)

일종의 조건문...where 뒤의 조건문을 만족하는 row를 출력하겠다는 뜻

 

- hierachical_query_clause (계층구조 쿼리, 여기 참고)

데이터를 수직적인 계층구조로 리턴할 때 사용

구조: START WITH, CONNECT BY 키워드로 이뤄짐

ex) SELECT LEVEL, empno, ename, mgr

  FROM emp

 START WITH job = 'PRESIDENT'

CONNECT BY PRIOR  empno = mgr;

 

- group_by_clause 

데이터들을 원하는 그룹으로 나눌 수 있다.

 

----3번 라인-------------------------------------------------------------------------------------------------------------------

- HAVING-condition (키워드, 파라미터(조건))

집계함수를 가지고 조건비교를 할 때 사용

WHERE 절에는 집계함수를 사용할 수 없다... 그럴때 HAVING절 사용

(cf. 집계함수

입력이 여러개의 로우이고, 출력이 하나인 결과인 것

ex) count, sum, avg, max, mim ...)

 

- model_clause (파라미터: 조건)

스프레드시트와 같이 계산식을 사용하여 그 결과를 깔끔한 가상의 셀 형태로 볼 수 있다.

 

 

 

 

 

반응형