티스토리 뷰

 

※본 포스팅은 위의 책을 기반으로 작성되었습니다. 

 

이전 포스팅

 

  • DBMS 개념
 

[Database] 2. SQL (1) - DML 1

※본 포스팅은 위의 책을 기반으로 작성되었습니다. 이전 포스팅 DBMS 개념 [Database] 1. DBMS 개념 ※본 포스팅은 위의 책을 기반으로 작성되었습니다. 목적 DB, DBMS 개념을 이해한다. Contents 데이터

j-sik.tistory.com


목적

  • SELECT의 사용법

 

Contents

  • SELECT 문법

 

※ 지속적으로 SQL문 예제를 업데이트할 예정입니다.


 

1. SECLECT 문법 

 

SELECT  [ ALL | DISTINCT ] [TABLE.]{ * | [AS] COLUMNS 속성이름(들)}  ········································································· ⑤
FROM                                                                                       ·········································································· ①
        {테이블 [AS 테이블 이름 별칭]}
        [IINER JOIN | LEFT [OUTER] JOIN | RIGHT [OUTER] JOIN
         {테이블이름 [ON 검색조건]}
        | FULL [OUTER] JOIN {테이블이름}]]
[WHERE 검색조건(들)]   ······························································································································································ ②
[GROUP BY {속성이름, [...., N]}]  ··············································································································································· ③
[HAVING 검색조건(들)]     ·························································································································································· ④
[질의 UNION 질의 | 질의 UNION ALL 질의]  ·························································································································· ⑦
[ORDER BY {속성이름 [ ASC | DESC],[ ..., n]}] ························································································································· ⑥

 

 기본적인 문법은 위와같다. []는 선택적이며, {}는 필수, | 는 OR이라고 생각하고 읽으면 된다.

위 표의 번호는 SQL문의 내부적인 실행 순서이다. FROM을 통해 Table을 가져오고, WHERE 절로 필터링한다.

필터링된 데이터중 하위 번호들의 요구에 따라 데이터를 정리하고, SELECT문의 요구에 맞게 출력한다.

 

2. GROUP BY / HAVING 

GROUP BY

 GROUP BY + 컬럼명 으로 사용하며, 해당 칼럼의 도메인으로 묶어준다. 집계 함수와 많이 사용된다.

 

HAVING

 HAVING절은 GROUP BY와 함께 쓰인다. HAVING 절의 역할은 GROUP BY로 묶인 그룹을 제한하는 역할을 한다. 

WHERE이랑 무엇이 다르냐 하고 헷갈릴 수 있는데, WHERE절이 먼저 데이터를 필터링하고, HAVING절은 그룹화가 된, 데이터를 필터링한다고 생각하면 둘의 차이를 이해하기 쉽다. 

 

 

 

3. JOIN

 한 테이블의 행을 다른 테이블의 행에 연결하여 두 개 이상의 테이블을 결합하는 연산이다.  참조를 하는 테이블을 자식테이블이라고 하고, 참조를 받는 테이블을 부모 테이블이라고 한다. 참조하는 자식 테이블에서 해당 칼럼을 외래 키라고 부른다. 일반적으로 부모 테이블에 기본키(Primary Key)를 외래 키로 두는데, 그 이유는 당연하다. 참조하는 자식 테이블 입장에서는 개체 무결성이 보장되지 않으면, 참조에 모호성이 발생하게 되기 때문이다. 그렇다고 반드시 기본키만 외래 키다 라고는 할 수없다. 개체 무결성이 보장되는 다른 후보 키들도 충분히 외래 키가 될 수 있다. 주로 기본키가 많이 쓰일  뿐이다.

 

JOIN절의 종류는 크게 두가지로 나눌 수 있다.

 

 

INNER JOIN 

 

INNER JOIN은 교집합으로 표현될 수 있다.

Table 1과 Table 2를 INNER JOIN 했을 때, 둘 다 참조하는 값이 있는 레코드에 대해서만 불러온다.  


SELECT COLUMNS

FROM table1 INNER JOIN table2 ON <condition>;

 

 

 

OUTER JOIN

 

 OUTER JOIN은 LEFT , RIGHT , FULL OUTER JOIN으로 나뉘는데, 개념은 같다. 

위 그림은 Table1 과 Table 2를 LEFT JOIN 했을 때, Table 1으로 레코드를 불러온다. Table 1에 레코드는 존재하나 Table 2를 참조하는 값이 없다 해도 일단 불러온다. RIGHT는 LEFT의 정반대라고 보면 된다.

 

그럼 FULL OUTER JOIN은...?

LEFT, RIGHT의 합집합이다. Table 1과 Table 2가 모두 참조하는 값이 있든 없든 다 불러온다.


SELECT COLUMNS

FROM table1 {LEFT|RIGHT|FULL [OUTER]} JOIN table 2 ON <condition>;

3. 부속 질의 (SUB QUERY)

 하나의 SQL문에 중첩된 질의를 의미한다. 부속 질의는 괄호로 묶어서 표현하며, 그 부속 질의만으로도 단독 실행이 되는 SQL문이어야 한다.

 

부속 질의는 들어가는 위치에 따라 종류를 구별한다.

 

스칼라 질의 (SELECT 부속 질의)

SELECT 절에서 사용되며, 단일 값을 반환한다.

 

인라인 뷰 (FROM 부속 질의)

결과를 뷰 형태로 반환한다.

 

중첩 질의 (WHERE 부속 질의)

결과를 한정시키기 위해 사용된다.

 

 

 

 


포스팅에 문제가 있거나, 설명이 잘못된 부분 지적 환영합니다.

더 나은 퀄리티의 콘텐츠를 제공할 수 있도록 노력하겠습니다.

읽어주셔서 감사합니다. 

'공부 > Database' 카테고리의 다른 글

[Database] 2. SQL (1) - DML 1  (0) 2021.09.26
[Database] 1. DBMS 개념  (0) 2021.09.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함