영우 글로벌 러닝 4차혁명 교육과정의 "방형욱" 강사님과 함께 공부한 내용입니다.

# Rollup

 

  - 컬럼의 개수가 n개면 n+1 가지 종류의 결과 생성

  - 컬럼의 나열 순서가 중요함

 

  select deptno, job, sum(sal)

  from emp

  group by deptno, job

 

  select deptno, job, sum(sal)

  from emp

  group by ROLLUP(deptno, job);

 

  select deptno, job, sum(sal)

  from emp

  group by GROUPING SETS((deptno, job), (deptno), ());

 

  cf. select deptno, decode(deptno, null, 'TOTAL', decode(job, null, 'DEPT_SUM', job)) as job, sum(sal)

      from emp

      group by ROLLUP(deptno, job);

 

# Cube

 

  - 컬럼의 개수가 n개면 2^n 가지 종류의 결과 생성

  - 컬럼의 나열 순서가 중요하지 않음

 

  select deptno, job, sum(sal)

  from emp

  group by CUBE(deptno, job);

 

  select deptno, job, sum(sal)

  from emp

  group by GROUPING SETS((deptno, job), (deptno), (job), ());

 

# 집계 기준 컬럼이 3개일 경우

 

  drop table emp2 purge;

 

  create table emp2

  as

  select  empno, ename, sal, job, deptno, decode(mod(empno, 2), 0, 'M', 'W') as gender

  from emp e

  union all

  select  empno, ename, sal+100, job, deptno, decode(mod(empno, 2), 0, 'W', 'M') as gender

  from emp e;

 

  select * from emp2;

 

    --

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by ROLLUP(deptno, job, gender)

  order by 1, 2, 3;

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by GROUPING SETS((deptno, job, gender), (deptno, job), (deptno), ())

  order by 1, 2, 3;

 

    --

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by CUBE(deptno, job, gender)

  order by 1, 2, 3;

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by GROUPING SETS((deptno, job, gender), (deptno, job), (deptno, gender), (job, gender), (deptno), (job), (gender), ())

  order by 1, 2, 3;

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by GROUPING SETS((deptno, job, gender), (job, gender), ())

  order by 1, 2, 3;

 

# GROUPING 함수

 

  drop table emp3 purge;

 

  create table emp3 as select * from emp;

 

  update emp3 set job = null where rownum = 1;

 

  select * from emp3;

 

  => grouping 함수를 사용하지 않을 경우 아래와 같이 질의 결과가 이상해집니다.

 

  select deptno, job, sum(sal) as sum_sal

  from emp3

  group by ROLLUP(deptno, job);

 

  select *

  from (select deptno, job, sum(sal) as sum_sal

        from emp3

        group by ROLLUP(deptno, job))

  where deptno is not null

  and job is null;

 

  => grouping 함수를 사용하면 이렇게 달라집니다.

 

  select deptno, job, sum(sal) as sum_sal,

         grouping(deptno) as g_deptno,

         grouping(job)    as g_job

  from emp3

  group by ROLLUP(deptno, job);

 

  select deptno, job, sum_sal

  from (select deptno, job, sum(sal) as sum_sal,

               grouping(deptno) as g_deptno,

               grouping(job)    as g_job

        from emp3

        group by ROLLUP(deptno, job))

  where g_deptno = 0

  and   g_job    = 1;

 

  select deptno, job, sum_sal

  from (select deptno, job, sum(sal) as sum_sal,

               grouping(deptno) as g_deptno,

               grouping(job)    as g_job

        from emp3

        group by ROLLUP(deptno, job))

  where g_deptno = 0

  and   g_job    in (0, 1);

 

# Composite column

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by deptno, job, gender;

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by rollup(deptno, job, gender);

 

    --> deptno, job, gender

    --> deptno, job

    --> deptno

    --> ()

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by rollup(deptno, (job, gender));

 

    --> deptno, job, gender

    --> deptno

    --> ()

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by rollup((deptno, job), gender);

 

    --> deptno, job, gender

    --> deptno, job

    --> ()

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by rollup((deptno, job, gender));

 

    --> deptno, job, gender

    --> ()

 

# Concatenated Groupings

  select deptno, job, gender, sum(sal)

  from emp2

  group by deptno, rollup(job), cube(gender);

 

           deptno    job         gender

                     ()          ()

 

           --> deptno, job, gender

           --> deptno, job

           --> deptno, gender

           --> deptno

 

  select deptno, job, gender, sum(sal)

  from emp2

  group by GROUPING SETS((deptno, job, gender), (deptno, job), (deptno, gender), (deptno));

 

'IT 공방 > SQL' 카테고리의 다른 글

ORA-65096 오류 해결  (0) 2019.10.07

1. WINDOW FUNTION

행과 행간의 관계를 쉽게 정의하기 위해 만든 함수

분석함수(ANALYTIC FUNCTION) 순위 함수(RANK FUNCTION)으로도 불림

중첩해서는 사용이 불가능하나 서브쿼리에서 사용 가능

 

. WINDOE FUNTION 종류

  1. 순위 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER 대부분의 DBMS에서 지원
  2. 집계 관련 함수 : SUM, MAX, MIN, AVG, COUNT 대부분의 DBMS에서 사용하나 SQL SERVER 경우 OVER 내의 ORDER BY 구문 지원하지 않음
  3. 그룹 순서 관련 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD ORACLE에서만 지원되는 함수
  4. 그룹 비율 관련 함수 : CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT, 1,2번은 전부, 3번은 표준에는 없지만 지원, 4번은 ORACLE에서만 지원
  5. 선형분석 포함하는 통계 함수

 

. SYNTAX

SELECT WINDOW_FUNCTION (ARGUMENTS)

OVER ( [PARTITION BY 칼럼] [ORDER BY 절] [WINDOWING 절] )

FROM 테이블 명;

- WINDOW_FUNCTION : 기존에 사용하던 함수도 있고, 새롭게 WINDOW 함수용으로 추가된 함수도 있다.

- ARGUMENTS (인수) : 함수에 따라 0 ~ N개의 인수가 지정될 수 있다.

- PARTITION BY 절 : 전체 집합을 기준에 의해 소그룹으로 나눌 수 있다.

- ORDER BY 절 : 어떤 항목에 대해 순위를 지정할 지 ORDER BY 절을 기술한다.

- WINDOWING 절 : WINDOWING 절은 함수의 대상이 되는 행 기준의 범위를 강력하게 지정할 수 있다.

ROWS는 물리적인 결과 행의 수를, RANGE는 논리적인 값에 의한 범위를 나타내는데, 둘 중의 하나를 선택해서 사용할 수 있다.

다만, WINDOWING 절은 SQL Server에서는 지원하지 않는다.

 

  1. BETWEEN 사용 타입

ROWS | RANGE BETWEEN

UNBOUNDED PRECEDING | CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING

AND

UNBOUNDED FOLLOWING | CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING

 

  1. BETWEEN 미사용 타입

ROWS | RANGE

UNBOUNDED PRECEDING | CURRENT ROW | VALUE_EXPR PRECEDING

 

 

2. 그룹 순위 함수

 

. RANK 함수

특정 항목에 대한 순위를 구하는 함수, 특정 범위내에서 순위를 구할수도 있음, 동일값에 대해서는 동일한 순서 부여

예제) RANK( ) OVER (ORDER BY SAL DESC) ALL_RANK : 전체 중에 연봉 순위

 RANK( ) OVER (PARTITION BY JOB ORDER BY SAL DESC) JOB_RANK : 그룹별로 나눈 연봉 순위

 

. DENSE_RANK 함수

동일한 건수를 하나의 건수로 취급

동점이 있을 같은 등수 예를 들어 순위는 1, 2, 2, 3, 4, 5, 5, 6

 

. ROW_NUMBER 함수

동일한 값이라도 고유의 순서를 부여함 예를 들어 순위는 1, 2, 3, 4, 5, 6, 7, 8 같은 값이여도 유니크한 순위를 정함

ORACLE 경우는 ROWID 적은 행부터 나옴

 

3. 일반 집계 함수

 

. SUM 함수

누적값 구할 있음

예제) SELECT    MGR, ENAME, SAL,

SUM(SAL) OVER (PARTITION BY MGR ORDER BY SAL RANGE UNBOUNDED PRECEDING) as MGR_SUM

FROM EMP;

 

RANGE UNBOUNDED PRECEDING : 현재 행을 기준으로 파티션 내의 첫 번째 행까지의 범위를 지정한다.

 

. MAX 함수

INLINE VIEW 파티션별 최대값을 가진 추출 가능

예제) SELECT MGR, ENAME, SAL

FROM (SELECT MGR, ENAME, SAL,

MAX(SAL) OVER (PARTITION BY MGR) as IV_MAX_SAL

    FROM EMP)

WHERE SAL = IV_MAX_SAL ;

매니져 별로 연봉이 가장 높은 직원을 추출

 

. MIN 함수

예제) SELECT MGR, ENAME, HIREDATE, SAL,

              MIN(SAL) OVER(PARTITION BY MGR ORDER BY HIREDATE) as MGR_MIN

FROM EMP;

 

. AVG 함수

파티션별 ROWS 윈도우를 통해 평균값 구할 있음

예제) SELECT MGR, ENAME, HIREDATE, SAL,

     ROUND (AVG(SAL) OVER (PARTITION BY MGR ORDER BY HIREDATE ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)) as MGR_AVG

FROM EMP;

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING : 현재 행을 기준으로 파티션 내에서 앞의 한 건, 현재 행, 뒤의 한 건을 범위로 지정한다.

(ROWS는 현재 행의 앞뒤 건수를 말하는 것임)

 

. COUNT 함수

예제) SELECT ENAME, SAL,

     COUNT(*) OVER (ORDER BY SAL RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING) as SIM_CNT

FROM EMP;

RANGE BETWEEN 50 PRECEDING AND 150 FOLLOWING : 현재 행의 급여값을 기준으로 급여가 -50에서 +150의 범위 내에 포함된 모든 행이 대상이 된다.

(RANGE는 현재 행의 데이터 값을 기준으로 앞뒤 데이터 값의 범위를 표시하는 것임)

 

4. 그룹 순서 함수

 

. FIRST_VALUE 함수

파티션별 윈도우에 가장 먼저 나온 , SQL SERVER 미지원(MIN 활용 가능)

공동 함수 인정하지 않고 처음 나온 행만 처리, 의도적으로 나누고 싶다면 INLINE VIEW ORDER BY 절에 칼럼 추가

예제) SELECT DEPTNO, ENAME, SAL,

     FIRST_VALUE(ENAME) OVER (PARTITION BY DEPTNO ORDER BY SAL DESC, ENAME ASC ROWS UNBOUNDED PRECEDING) as RICH_EMP

 FROM EMP;

 

. LAST_VALUE 함수

파티션별 윈도우에 가장 나중에 나온 , SQL SERVER 미지원(MAX 활용 가능)

공동 함수 인정하지 않고 처음 나온 행만 처리, 의도적으로 나누고 싶다면 INLINE VIEW ORDER BY 절에 칼럼 추가

예제) SELECT DEPTNO, ENAME, SAL, LAST_VALUE(ENAME)

    OVER (PARTITION BY DEPTNO ORDER BY SAL DESC ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as DEPT_POOR

 FROM EMP;

 

ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING: 현재 행을 포함해서 파티션 내의 마지막 행까지의 범위를 지정한다.

 

. LAG 함수

파티션 윈도우에서 이전 몇번째 행의 값을 가져올 있음, SQL SERVER 미지원

NVL, ISNULL 기능과 같음

예제) SELECT ENAME, HIREDATE, SAL,

     LAG(SAL, 2, 0) OVER (ORDER BY HIREDATE) as PREV_SAL

 FROM EMP

 WHERE JOB = 'SALESMAN'

 

LAG(SAL, 2, 0)의 기능은 두 행 앞의 SALARY를 가져오고, 가져올 값이 없는 경우는 0으로 처리한다.

 

[실행 결과] ENAME  HIREDATE   SAL   PREV_SAL

 ---------  ------------- -------- ----------

ALLEN    1981-02-20 1600              0

WARD    1981-02-22 1250              0

TURNER 1981-09-08 1500        1600

MARTIN 1981-09-28 1250        1250

 

. LEAD 함수

파티션 윈도우에서 이후 몇번째 행의 값을 가져올 있음, SQL SERVER 미지원

NVL, ISNULL 기능과 같음

예제) SELECT ENAME, HIREDATE,

     LEAD(HIREDATE, 1) OVER (ORDER BY HIREDATE) as "NEXTHIRED"

 FROM EMP;

 

[실행 결과] ENAME HIREDATE NEXTHIRED

----------- ------------ ---------------

ALLEN    1981-02-20 1981-02-22

WARD    1981-02-22 1981-04-02

TURNER 1981-09-08 1981-09-28

MARTIN 1981-09-28

 

5. 그룹 비율 함수

 

. RATIO_TO_REPORT 함수

파티션 전체 SUM(칼럼)값에 대한 행별 칼럼 값의 백분율을 소수점으로 구함

결과 값은 > 0 & <= 1이고, 합계는 1, SQL SERVER 미지원

예제 ) ELECT ENAME, SAL, ROUND(RATIO_TO_REPORT(SAL) OVER (), 2) as R_R

 FROM EMP

 WHERE JOB = 'SALESMAN';

전체 중에 로우 연봉이 차지하는 비율이 나오게 , 개별 RATIO 전체 합은 1

 

. PERCENT_RANK 함수

윈도우에 제일 먼저 나오는 것을 0, 제일 늦게 나오는 것을 1 하여 순서별 백분율을 구함

결과 값은 > 0 & <= 1이고,  SQL SERVER 미지원

예제) SELECT DEPTNO, ENAME, SAL, PERCENT_RANK() OVER (PARTITION BY DEPTNO ORDER BY SAL DESC) as P_R

 FROM EMP;

3개의 로우가 된다면 0, 0.5, 1 순서로 되고, 5개의 로우라면 0, 0.25, 0.5, 0.75, 1 추출됨 ORDER BY역할

 

. CUME_DIST 함수

파티션별 윈도우의 전체건수에서 현재 행보다 작거나 같은 건수에 대한 누적 백분율

결과 값은 > 0 & <= 1이고,  SQL SERVER 미지원

예제) SELECT DEPTNO, ENAME, SAL, CUME_DIST() OVER (PARTITION BY DEPTNO ORDER BY SAL DESC) as CUME_DIST

 FROM EMP;

5개의 로우가 선택되면 0.2, 0.4, 0.6, 0.8, 1 값이 추출 ORDER BY역할

동일 순서면 뒤의 행의 함수 결과 값을 따름 예를 들면, 0.4, 0.4, 0.6, 0.8, 1

 

. NTILE 함수

파티션별 전체 건수를 ARGUMENT 값으로 N 등분 결과, 조를 나누는 것과 같음

예제) SELECT ENAME, SAL, NTILE(4) OVER (ORDER BY SAL DESC) as QUAR_TILE

 FROM EMP;

4개의 파티션으로 나뉘면, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4 등으로 로우가 추출되어서 파티션별 조를 정할 있음


'자격증 공방 > SQLD' 카테고리의 다른 글

제 4-8장 절차형 SQL  (0) 2018.07.11
제 4-7절 DCL  (0) 2018.07.11
제 4-5절 그룹함수  (0) 2018.07.11
제 4-4절 서브쿼리  (0) 2018.07.11
제 4-3절 계층형 질의와 셀프 조인  (0) 2018.07.11

 

1. 내장함수

 

벤더에서 제공하는 함수 내장함수 vs 사용자가 정의할 있는 함수

내장 함수 - 단일행 함수

       - 다중행 함수  - 집계함수

   - 그룹함함수

   - 윈도우함수

입력되는 값이 아누리 많아도 출력은 하나만 된다는 M : 1관계

 

단일행 함수의 종류 (oracle/sqlserver)

종류

내용

함수

문자형

문자를 입력하면 문자나 숫자값 반환

Lower, upper, substr/substiring, length/len, Ltrim, Rtrim, trim, ASCII

숫자형

숫자 입력하면 숫자값 반환

Abs, mod, round, trunc, sign, chr/char, ceil/ceiling floor, exp, log, ln, power, sin, cos, tan

날짜형

DATE 타입의 값을 연산

Sysdate/getdate, extract/datepart, to_number(to_char('YYYY','MM','DD')/YEAR,MONTH,DAY

변환형

문자, 숫자, 날짜형 값의 데이터 타입 변환

To_number, to_char, to_date / cast, convert

NULL관련

NULL처리하기 위한 함수

NVL/ISNULL, NULLIF, COALESCE

 

특징

  1. Select, where, order by 절에서 사용가능
  2. 행들에 대한 개별적인 작용하여 조작
  3. 여러 인자를 입력해도 하나의 결과만 리턴
  4. 인자로 상수, 변수, 표현식 사용 가능하고 하나의 인수를 가지는 경우도 있고 여러개의 인수도 가질 있음
  5. 함수의 중첩 가능

 

2. 문자형함수


함수

설명

LOWER(문자열)

소문자로 변경

UPPER(문자열)

대문자로 변경

ASCII(문자열)

숫자를 ASCII코드로 변경

CHR/CHAR(ASCII번호)

ASCII코드를 문자나 숫자로 변경

CONCAT(문자열1, 문자열2)

Oracle, mysql에서만, 문자열1 문자열2 연결, || + 함수와 동일

SUBSTR/SUBSTRING(문자열, M[, N ])

문자열 m위치에서 n개의 문자 길이에 해당하는 문자 추출, n 생략되면 추출

LENGTH/LEN(문자열 [, 지정문자])

문자열의 개수를 숫자값으로 변환

LTRIM(문자열 [, 지정문자])

첫문자부터 지정문자가 나타나면 해당 문자 제거, sqlserver 사용 불가

RTRIM(문자열 [, 지정문자])

마지막문자부터 지정문자가 나타는 동안 해당 문자 제거, sqlserver 사용 불가

TRIM ([leading|trailing|both] 지정문자 from 문자열)

머리말, 꼬리말 또는 양쪽 지정문자 제거, sqlserver 사용 불가

 


 

DUAL 테이블의 특성

  • 사용자 SYS 소유, 모든 사용자가 엑세스 가능한 테이블
  • DUMMY 테이블
  • 'X'라는 값이 들어있는 1건을 포함
  • SQLserver 에서는 select 있어도가능하여 DUAL 필요없음

 

3. 숫자형 함수


함수

설명

ABS(숫자)

절대값

SIGN(숫자)

양수인지, 음수인지, 0인지 구별

MOD(숫자1, 숫자2)

숫자1 숫자2 나누어 나머지 리턴,  % 함수랑 동일

CEIL/CEILING(숫자)

올려서 정수로 반환

FLOOR(숫자)

내려서 정수로 반환

ROUND(숫자 [, m])

소수점 m 자리에서 반올림

TRUNC(숫자 [, m])

소수점 m 자리에서 버림, sqlserver에서 사용불가

 SIN, COS, TAN

삼각함수

EXP, POWER, SQRT, LOG, LN

지수, 거듭제곱, 제곱근, 자연로그 리턴

 


 

4. 날짜형 함수

 

함수

설명

SYSDATE/GETDATE( )

현재 날짜와 시간

EXTRACT('YEAR'|'MONTH'|'DAY' from d)

/DATEPART('YEAR'|'MONTH'|'DAY', d)

날짜데이터에서 // 데이터 출력

시분초도 가능

TO_NUMBER(TO_CHAR(d,'YYYY')/ YEAR(d)

TO_NUMBER(TO_CHAR(d,'MM')/ MONTH(d)

TO_NUMBER(TO_CHAR(d,'DD')/ DAY(d)

날짜데이터에서 // 데이터 출력

TO_NUMBER제외하면 문자열로 출력됨

 

5. 변환형 함수


특정 데이터 타입을 다양한 형식으로 출력하고 싶을 경우에 사용되는 함수

종류

설명

명시적 데이터 유형 변환

데이터 변환형 함수로 데이터 유형을 변환하도록 명시해주는 경우

암시적 데이터 유형 변환

테이터베이스가 자동으로 데이터 유형을 변환하여 계산하는 경우

암시적 데이터 변환은 성능저하 발생, 알아서 계산하지 않는 에러 발생할 있어서 명시적 데이터 유형 변환 방법 사용 필요

 

Oracle 함수

설명

TO_NUMBER(문자열)

숫자로 변환

TO_CHAR(숫자|날짜 [, FORMAT])

문자열로 변환

TO_DATE(문자열 [, FORMAT])

날짜로 변환

 

SQL server 함수

설명

CAST(expression AS date_type[(length)])

목표 데이터 유형으로 변환

CONVERT (date_type [(length)], expression[, style])

목표 데이터 유형으로 변환

예제  SELECT TEAM_ID, CAST(ZIP_CODE1 AS INT) + CAST(ZIP_CODE2 AS INT) 우편번호합 FROM TEAM;

 

6. CASE 표현


단일행 CASE 표현의 종류

함수

설명

  CASE

     SIMPLE_CASE_EXPRESSION 조건

     ELSE 표현절

  END

 

SIMPLE_CASE_EXPRESSION 조건에 따라서

맞으면 then 수행 아니면 else 수행 ( EQUI = 조건 )

CASE EXPR WHEN COMPARISON_EXPR THEN RETURN_EXPR ELSE 표현절 END

  CASE

     SEARCHED_CASE_EXPRESSION 조건

     ELSE 표현절

  END

 

SEARCHED_CASE_EXPRESSION 조건에 따라서 맞으면 then 수행 아니면 else 수행

( EQUI 뿐만 아니라 = , >, >= , < , <= 가능) 중첩사용 가능

CASE WHEN CONDITION THEN RETURN_EXPR ELSE 표현절 END

 

  DECODE(표현식, 기준값, 값1, … , default)

오라클에서만 사용하는 함수

표현식 값이 기준값이면 1출력, 기준값이 없음 디폴트값

SIMPLE_CASE_EXPRESSION 조건이랑 동일

예시 중첩 : SELECT ENAME, SAL,

CASE WHEN SAL >= 2000

THEN 1000

ELSE (CASE WHEN SAL >= 1000 THEN 500 ELSE 0 END)

END as BONUS FROM EMP;

 

7. NULL 관련 함수

 

. NVL/ISNULL 함수

 

NULL 특성

  • 정의되지 않은 값으로 0 또는 공백과는 다르다
  • NOTNULL, PK아니면 널값 포함 가능하다
  • 값을 포함하는 연산의 경우 결과는

 

함수

설명

NVL(표현식1, 표현식2) /

ISNULL(표현식1, 표현식2)

표현식1 결과값이 NULL이면 표현식 2값이 출력된다.

, 표현식 1, 2 데이터 타입이 같아야함

NULLIF(표현식1, 표현식2)

표현식1 표현식2 같으면 NULL, 같지 않으면 표현식1 출력

COALESCE(표현식1, 표현식2 )

임의의 개수 표현식에서 NULL 아닌 최초의 표현식을 나타냄

 

. NULL 공집합

  • 일반적인 NULL/ISNULL 함수 사용
  • 공집합의 NULL/ISNULL 함수 사용 : 공집합을 대상으로 하지 않음

 

. NULLIF

. COALESCE

표현식1, 2 둘중 1번의 값이 있음 1번을 2번에 값이 있음 2번을 1,2 둘다 있다면 1번을 둘다 없다면 NULL 표현

 

 분모에 0이면 무조건 에러, null 무슨 연산을 하여도 null


'자격증 공방 > SQLD' 카테고리의 다른 글

제 3-8절 ORDER BY절  (0) 2018.07.07
제 3-7절 GROUP BY, HAVING 절  (0) 2018.07.07
제 3-5절 WHERE 절  (0) 2018.07.07
제 3-4절 TCL (TRANSACTION CONTROL LANGUAGE)  (0) 2018.07.07
제 3-3절 DML (DATA MANIPULATION LANGUAGE)  (0) 2018.07.07

+ Recent posts