※ 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;

 

 

※ WHERE절

        1. WHERE절이란? - INSERT를 제외한 SELECT, UPDATE, DELETE문을 수행할 때 원하는 데이터만 골라 수행하도록 하는 구문

 

        2. WHERE절 연산자

             ① 비교 연산자 - 빈 문자열이나 NULL에 비교 연산자를 사용할 수 없다. (올바른 결과가 출력되지 않음)

 

 

                       ② 부정 비교 연산자 - 빈 문자열이나 NULL에 부정 비교 연산자를 사용할 수 없다. (올바른 결과가 출력되지 않음)

 

 

             ③ SQL 연산자

 

            ④ 부정 SQL 연산자 

 

            ⑤ 논리 연산자 - 논리 연산자는 ( ) → NOT → AND → OR 순으로 처리된다.

 

 

※ 함수

        1. 문자 함수

 

함수 설명
CHR(ASCII 코드) ASCII 코드에 매핑된 문자나 숫자를 반환하는 함수

Ex)
CHR(65) → A
LOWER(문자열) 문자열을 소문자로 변환하는 함수

Ex)LOWER('SQLD') → sqld 
UPPER(문자열) 문자열을 대문자로 변환해주는 함수

Ex)
UPPER('sqld') → SQLD
LTRIM(문자열, 특정 문자)  특정 문자가 있으면 문자열 왼쪽부터 제거하고 없으면 공백만 제거

 Ex)LTRIM('      SQLD')→ SQLD
Ex)LTRIM('SQLD', 'SL')→ QLD
RTRIM(문자열, 특정 문자) 특정 문자가 있으면 문자열 오른쪽부터 제거하고 없으면 공백만 제거
TRIM(위치 특정 문자 FROM 문자열)   위치(LEADING-왼쪽 or TRAILING-오른쪽 or BOTH-좌우)가 있으면         그쪽부터 특정 문자가 있으면 제거하고 위치가 없으면           양쪽 공백만 제거

Ex)TRIM(LEADING 'S' FROM 'SQLD') → QLD
SUBSTR(문자열, 시작점, 길이)          문자열을 시작점부터 길이만큼 자르거나 길이가 없으면               시작점부터 문자열 끝까지 자르고 반환
LENGTH(문자열) 문자열의 길이를 반환하는 함수
REPLACE(문자열, 변경할 문자열, [대체 문자열])     문자열에서 변경할 문자열을 찾아 대체문자열로 바꾸는 함수로         대체 문자열이 없으면 변경할 문자열을 제거한다.

Ex) REPLACE('SQLD', 'D', 'P') → SQLP

 

        2. 숫자 함수

 

함수 설명
ABS(숫자) 숫자의 절대값을 반환하는 함수
SIGN(숫자) 숫자가 음수면 -1, 양수면 1, 0이면 0을 반환
ROUND(숫자, n) 숫자의 소수점 n번째에서 반올림. n이 음수면 n번째 정수 부분에서 반올림하고 n이 없으면 소수점에서 반올림

Ex) ROUND(167.25, -2) → 200
TRUNC(숫자, n) 숫자의 소수점 n번째까지 반환. n이 음수면 n번째 정수 부분까지 출력하고 n이 없으면 정수 부분만 출력한다.
CEIL(숫자) 숫자보다 크거나 같은 최소 정수 반환

Ex) CEIL(47.25) → 48
Ex) CEIL(-12.33) → -12
FLOOR(숫자) 숫자보다 작거나 같은 최대 정수 반환

Ex) FLOOR(47.25) → 47
Ex) FLOOR(-12.33) → -13
MOD(숫자1, 숫자2)     숫자1를 숫자2로 나눈 나머지를 반환. 숫자2가 0이면 숫자1를        반환하고 두 숫자 모두 음수면 나머지도 음수

 

              3. 날짜 함수

 

함수 설명
SYSDATE 현재 날짜 출력
EXTRACT(특정 날짜 단위 FROM 날짜 데이터) 날짜 데이터에서 특정 날짜 단위만 출력
ADD_MONTH(날짜 데이터, 특정 개월 수)   날짜 데이터에 특정 개월 수를 더한 날짜 출력. 결과값이 존재할 수    없는 일자를 갖고 있는 경우 해당 월의 마지막 일자로 변경

Ex) ADD_MONTH(DATE '2022-02-28', 1) 2022-03-31

 

              4. 변환 함수

                 ① 암시적 형변환 - 데이터베이스가 자동으로 데이터 유형을 변환하나 에러와 성능 저하가 발생가능

                 ② 명시적 형변환 - 변환 함수를 사용하여 개발자가 데이터 유형을 변환

 

함수 설명
TO_NUMBER(문자열) 문자열을 숫자형으로 변환하나 문자열이 숫자형이 아닐 경우 에러 발생
TO_CHAR(숫자 or 날짜, 포맷) 숫자나 날짜 데이터를 포맷 형식의 문자형으로 변환
TO_DATE(문자열, 포맷) 문자열을 포맷 형식의 날짜형으로 변환

 

        5. NULL 관련 함수

 

함수 설명
NVL(인수1, 인수2) 인수1의 값이 NULL인 경우 인수2를 반환하고 NULL이 아닐 경우 인수1을 반환
NULLIF(인수1, 인수2) 인수1과 인수2가 같으면 NULL을 반환하고 같지 않으면 인수1을 반환
COALESCE(인수1, 인수2, 인수3 ...) NULL이 아닌 최초의 인수를 반환

 

        6. CASE문 - WHEN의 조건에 참이면 THEN을 실행하고 거짓이면 ELSE를 실행

                       • CASE ~

                            WHEN ~ THEN ~

                            ELSE ~

                          END

+ Recent posts