※ STANDARD JOIN

             1. STANDARD JOIN이란? - SQL의 표준이 되는 ANSI SQL 중 하나로 표준 조인이라고 더 불린다. JOIN 조건식에 ON절을 사용한다.

 

       2. INNER JOIN - JOIN 조건에 충족하는 데이터만을 출력

            Ex) SELECT S.STUDENT_NAME, R.TEST_SCORE FROM STUDENT S INNER JOIN RESULT R ON S.STUDENT_ID = R.STUDENT_ID;

 

       3. OUTER JOIN - JOIN 조건에 충족하지 않는 데이터도 출력

           ① LEFT OUTER JOIN - 왼쪽 테이블의 모든 데이터가 조건에 상관없이 출력되며 JOIN되는 데이터가 없는 오른쪽 테이블의 Row들은                    NULL값을 가진다.

           ② RIGHT OUTER JOIN - 오른쪽 테이블의 모든 데이터가 조건에 상관없이 출력되며 JOIN되는 데이터가 없는 왼쪽 테이블의 Row들은                  NULL값을 가진다.

           ③ FULL OUTER JOIN - 왼쪽, 오른쪽 테이블의 데이터가 모두 출력되며 중복값을 제거된다. JOIN되는 데이터가 없는 테이블의                            Row들은 NULL값을 가진다.

 

        4. NATURAL JOIN - A테이블과 B테이블이 동일하게 갖고 있는 컬럼들이 모두 동일한 데이터를 가지고 있으면 JOIN이 된다.                              SQL SERVER에서 사용 불가능하며 ON절을 사용하지 못한다.

 

        5. CROSS JOIN - 별도의 JOIN 조건이 없는 경우 사용되는 JOIN이며 조합할 수 있는 경우를 모두 출력한다.

 

※ JOIN

       1. JOIN이란? - 두 개 이상의 테이블을 연결하여 데이터를 출력하는 것

 

       2. EQUI JOIN - 두 테이블이 공통적으로 갖고 있는 컬럼의 데이터가 일치할 경우 사용하며 JOIN 조건식에 =연산자를 사용한다.

                     Ex) SELECT STUDENT_NAME, TEST_SCORE FROM STUDENT, SCORE WHERE STUDENT.STUDENT_ID = SCORE.STUDENT_ID;

 

       3. Non EQUI JOIN - 두 테이블의 JOIN 조건식에 =연산자를 제외한 비교 연산자(BETWEEN, >, >=, <, <=)를 사용한다.

             Ex) SELECT M.NAME, MS.RANK FROM MEMBER M, MEMBERSHIP MS WHERE M.CARD_USAGE BETWEEN MS.MIN AND MS.MAX;

 

 

       4. OUTER JOIN - JOIN 조건에 만족한 행과 만족하지 않는 행도 출력하는 것으로 LEFT OUTER JOIN과 LIGHT OUTER JOIN이 있다.                      조건절에서 모든 행이 출력되는 테이블의 반대편 테이블의 옆에 (+)를 붙여 작성한다.

             Ex) SELECT P.PRODUCT_ID, R.MEMBER_ID, R.CONTENT FROM PRODUCT P, REVIEW R WHERE P.PRODUCT_ID = R.PRODUCT_ID(+)

※ ORDER BY절

        1. ORDER BY절이란? - SELECT문에서 맨 마지막에 수행되는 절로 SELECT한 데이터를 정렬한다. 정렬의 기준이 되는 하나 이상의                         컬럼이 ORDER BY절 뒤에 오며 다음의 옵션이 따라붙을 수 있다. 만약 기준이 되는 컬럼의 데이터에 NULL이 포함되어 있을 경우                     NULL을 최댓값(SQL Server는 반대)으로 취급하므로 NULLS FIRST 또는 NULLS LAST을 사용해 NULL의 정렬상 순서를 변경 가능하다. 

             

             • ASC(Ascending) -  오름차순 (옵션 생략 시 ASC가 기본값)

                Ex) SELECT NAME, SCORE FROM STUDENT ORDER BY NAME;

             • DESC(Descending) - 내림차순

                Ex) SELECT NAME, SCORE FROM STUDENT ORDER BY NAME DESC;

 

        2. SELECT문의 논리적 실행 순서

             ------ SELECT

            ------ FROM

            ------ WHERE

            ------ GROUP BY

            ------ HAVING

            ------ ORDER BY

   

               

             

             

             

             

               

※ GROUP BY, HAVING절

              1. 집계 함수 - SELECT문 HAVING절에서만 사용가능하다.

 

집계 함수

 

테이블 예제

집계 함수 결과값

 

       2. GROUP BY절이란? - 데이터를 그룹별로 묶어주는 절이다. 그룹핑의 기준이 되는 하나 이상의 컬럼이 GROUP BY절 뒤에 온다.                          성능 향상을 위해서는 GROUP BY절 수행 전에 WHERE절을 사용해 데이터량을 최소로 줄여놓는 것이 바람직하다.  

             Ex) SELECT ID, SUM(SCORE) FROM TEST GROUP BY ID;

 

       3. HAVING절 - GROUP BY절 이후 수행되는 집계된 데이터에 대한 조건절로 집계 함수를 사용할 때 쓰인다.

             Ex) SELECT ID, SUM(SCORE) FROM TEST GROUP BY ID HAVING SUM(SCORE) > 150;

 

 

+ Recent posts