1 / 168

DB2 SQL

Baek, Jong Hwan – DB2 SQL 27 March 2011. DB2 SQL. IBM Presentation Template Full Version. Agenda. SQL 및 SELECT 문의 구조 SELECT 구문 작성 Single-Row 함수 Multi-Row 함수 집합 연산자 조인 서브쿼리 Data Definition Language Data Manipulation Language 계층구조. SQL 및 SELECT 문의 구조. 1. DDL 과 DML 이란 ?

belita
Télécharger la présentation

DB2 SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Baek, Jong Hwan – DB2 SQL 27 March 2011 DB2 SQL

  2. IBM Presentation Template Full Version Agenda • SQL 및 SELECT문의 구조 • SELECT 구문 작성 • Single-Row 함수 • Multi-Row 함수 • 집합 연산자 • 조인 • 서브쿼리 • Data Definition Language • Data Manipulation Language • 계층구조

  3. SQL 및 SELECT문의 구조 1. DDL과 DML이란? 2. SELECT문 구조 3. SELECT 문에 대한 연산 순서 4. BASIC SELECT 문 5. WHERE 절 6. GROUP BY 절 7. HAVING 절 8. ORDER BY 절

  4. 1. DDL과 DML이란? • DDL은 Data Definition Language의 약자로, Database의 Schema를 생성, 변경, 삭제하는 Database 정의 언어입니다. DDL은 Table 생성에 필요한 제약조건의 생성, 변경 및 삭제 그리고 속성의 정의 등 다양한 Schema 세부 내용을 정의를 할 수 있습니다. 생성할 문장은 CREATE, ALTER, DROP, TRUNCATE, COMMENT 등으로 시작합니다. • DML이란 Data Manipulation Language의 약어로 SELECT, INSERT, DELETE 그리고 UPDATE 문장을 통틀어 칭합니다. 자료의 조작을 위해 필요한 DML을 항목별로 확인하면 다음과 같습니다.

  5. 2. SELECT 문 구조

  6. 3. SELECT 문에 대한 연산 순서

  7. 4. BASIC SELECT 문 가장 간단한 형태로 SELECT 구문은 반드시 다음을 포함해야 합니다.   보여줄 Column들을 구체화하는 SELECT절   SELECT 절에 리스트 된 Column을 포함하는 Table들을 구체화 할 FROM절 SQL> SELECT * FROM employees;

  8. 5. WHERE 절 Table로 부터 추출한 전체 Data 중 필요한 Data만 여과하는 조건절입니다. 특정 값을 입력할 수 있으며 또는 Sub-Query 를 사용한 세부 집합을 이용할 수도 있습니다. SQL> SELECT empno, lastname, job, workdept FROM employee WHERE workdept = ‘A00’ ; SQL> SELECT empno, lastname, job, workdept FROM employee WHERE workdept = (SELECT deptno FROM department WHERE deptname ='PLANNING' AND deptno ='B01')

  9. 6. GROUP BY 절 GROUP BY 절은 해당 Row들이 Table에서 어떻게 그룹화되는지 보여줍니다. GROUP화하여 Data를 보기 위해서는 일반적으로 GROUP 함수를 사용해야 합니다. GROUP 함수  하나의 테이블에 있는 row들을 몇 개의 그룹 집단으로 분류하기 위해 GROUP BY 절을 사용하며, GROUP에 대한 요약 정보를 확인하기 위해서 GROUP 함수를 사용합니다.  GROUP 함수는 SELECT list 뿐만 아니라, ORDER BY 및 HAVING 절에도 나타날 수 있습니다.  GROUP 함수에 대한 data type은 CHARACTER, VARCHAR, SMALLINT, DECIMAL, INTEGER, NUMBER 그리고 DATE 등에서 사용할 수 있습니다.

  10. 7. HAVING 절 HAVING 절은 GROUP 함수를 통해 그룹화된 집단들의 조건을 제어합니다. 예를 들면, 부서별 봉급이 50000 이상인 경우에 해당하는 부서별 사원번호를 추출해야 할 경우에 각 부서별로 그룹화후 해당 부서별 봉급이 50000 이상인 행(row)를 가져오는 것입니다. SQL> SELECT firstnme, workdept, AVG(salary) FROM employee GROUP BY workdept HAVING AVG(salary) > 50000

  11. 8. ORDER BY 절 쿼리 결과에서 추출된 행(row)의 순서가 아직 정의되지 안을 경우, ORDER BY 절을 이용해서 행(row)을 정렬하는데 사용할 수 있습니다. 만약 ORDER BY 절이 사용되지 않는다면 정렬 순서가 정해지지 않게 됩니다. 다수의 컬럼들을 쿼리결과 집합으로 정렬할 수 있습니다. 정렬작업에 있어서의 제약사항은 주어진 Table의 컬럼수에 한정된다는 것입니다. ORDER BY 절에서 해당 컬럼들에 대한 구분자는 ( , ) 입니다. 오름차순(ASC) 또는 내림차순(DESC)으로 정렬을 할 수 있습니다. SQL> SELECT lastname, salary FROM employee ORDER BY empno, salary DESC;

  12. SELECT 구문 작성 1. Writing SQL Statements 2. Column Alias & Table Alias 3. Display Table Structure 4. Arithmetic Expressions (산술 연산자) 5. Concatenation Operator 6. Duplicate Rows 1) Eliminating Duplicate Rows (distinct 처리) 7. Using the WHERE Clause 8. Character Strings and Dates 9. Comparison Conditions

  13. SELECT 구문 작성 10. Other Comparison Conditions 1) BETWEEN Condition 2) IN Condition 3) NOT IN의 함정 4) LIKE Condition 11. NULL VALUE 정의 12. EXISTS 술어 사용 13. GROUP BY 절 14. 그룹함수 15. GROUP BY with ROLLUP and CUBE Operators 16. ROLLUP Operator 17. CUBE Operator 1) CUBE Operator: Example

  14. SELECT 구문 작성 18. Composite Columns 1) Composite Columns: Example 19. HAVING 절 1) Review of the HAVING Clause 20. ORDER BY 절 (Descending, Ascending) 1) Sorting in Descending Order 2) Sorting by Column Alias 3) Sorting by Multiple Columns 21. 논리 연산자 1) AND 연산자 2) OR 연산자 3) NOT 연산자

  15. 1. Writing SQL Statements 다음의 간단한 Rule과 Guideline을 사용하면 쉽게 SQL문을 작성하고 편집할 수 있습니다.  SQL문들은 하나 이상의 Line으로 구성될 수 있습니다.  SELECT, FROM 등과 같은 구성 단어들은 두줄에 걸쳐서 사용할 수 없습니다.  각 절들은 가독성과 편집의 편의성을 위해 Line을 구분하여 작성합니다.  핵심 구성 단어(SELECT, FROM, ...) 등은 주로 대문자를 사용하여, 나머지는 소문자를 사용하여 기입합니다.

  16. 2. Column Alias & Table Alias 컬럼명이 길거나 테이블명이 길어서 또는 다른 이유 때문에 테이블이나 컬럼에 별명(Alias)를 지정하기도 합니다. 하지만 Alias의 지정이 필수사항은 아니며 어떤 경우에 Alias를 사용하는것이 유익한지 알아 보겠습니다.  Table Column명을 가상의 이름으로 바꾸고 싶을 때 사용합니다.  Column 별 계산식이 많을 때 사용합니다.  Alias 명의 가독성을 높이기 위해 space를 사용할 경우 “ “을 사용합니다.

  17. 2. Column Alias & Table Alias SQL> SELECT name, job, salary + comm as pay FROM staff WHERE (salary + comm) < 50000 ORDER BY pay; SQL> SELECT empno, job FROM employee, emp WHERE employee.empno = emp.empno; 1 라인 근처 오류: SQL0203N 컬럼 “empno"에 대한 참조가 앰비규어스합니다. empno, job 컬럼이 employee, emp 두 테이블에 동일하게 있습니다.

  18. 3. Display Table Structure 조회 할 테이블의 속성을 파악 해야 할 일들이 종종 발생합니다. 예를 들면 A Table과 B Table간의 데이터를 JOIN 하기 위해 해당 테이블 컬럼의 데이터 타입이 동일한지, 삽입 데이터의 최대 크기가 몇 자리 인지 등등 많은 이유로 Table의 속성을 확인하게 됩니다.

  19. 4. Arithmetic Expressions (산술 연산자) SELECT 문을 사용하다 보면 연산할 일이 많이 발생합니다. 예를 들면, 기본급에 보너스를 포함한 금액을 보고 싶을 경우, 다음과 같이 ‘salary + comm’ 으로 표현합니다. 또한 현재일 기준으로 근무 일수를 구할 경우에도 사용할 수 있습니다. 즉, 산술 연산자는 decimal type 뿐만 아니라, date type 등 여러 목적으로 사용 가능 합니다. 산술 연산자는 FROM 절을 제외한 모든 절에 사용 가능 합니다. SQL> SELECT salary, salary + 300, salary + comm FROM employee;

  20. 5. Concatenation Operator Concatenation Operator는 컬럼 또는 문자열을 다른 컬럼과 연관시켜 하나의 컬럼으로 보이게 합니다. 주로 ‘컬럼명||컬럼명’ 형태로 사용하게 됩니다. SQL> SELECT firstnme||' '||midinit||' '||lastname as full_name FROM employee FETCH FIRST 5 ROWS ONLY" 위의 예제는 컬럼 firstnme, midinit, lastname 등을 연관지어 하나의 컬럼으로 보이게 만들었으며, 이 세 컬럼을 full_name 라는 Alias를 주어 조회하고 있습니다. full_name Alias의 사용은 SELECT 절의 가독성을 훨씬 높이는 효과가 있습니다.

  21. 6. Duplicate Rows 관련된 Table의 정보를 조회할 때 몇 천건의 중복된 Data가 한 번에 조회될 때, 중복되지 않은 유일한 Data 값만 보기를 원할 경우가 있습니다. 이럴 경우 사용합니다. • Eliminating Duplicate Rows (distinct 처리) SQL> SELECT bonus FROM employee WHERE bonus = 400; SQL> SELECT distinct bonus FROM employee WHERE bonus = 400;

  22. 7. Using the WHERE Clause WHERE 절은 Table에 있는 Data에 일정 조건을 추가함으로써 조건에 부합하는 Data만 검색 합니다. 예를 들어 설명하면, employee Table의 전체 Data 42건 중 WHERE bonus = 400 조건에 부하는 7의 Data만 검색합니다. SQL> SELECT count(*) FROM employee; SQL> SELECT count(*) FROM employee WHERE bonus = 400;

  23. 8. Character Strings and Dates WHERE 절에는 숫자 상수를 제외한 문자열 및 Date 데이터를 검색하기 위해 작은 따옴표로 감싸야 합니다. 또한 검색어의 모든 문자열은 대, 소문자가 구분됩니다. 예를 들어 해당 Table의 Data는 ‘FIELDREP’ 인데, WHERE 조건절에서 ‘fieldrep’로 조회한다면 Data를 전혀 검색할 수 없습니다. SQL> SELECT job FROM employee1 WHERE job = 'fieldrep'; SQL> SELECT job FROM employee1 WHERE job = 'FIELDREP';

  24. 8. Character Strings and Dates 날짜와 관련한 데이터를 조회할 때는 해당 데이터의 Date Format을 명확히 알아야 합니다. 아래의 구문과 같이 잘못된 Format인 ‘일-월-연’ 으로 검색을 하면 ‘날짜 시간 값의 문자열 표현 구문이 올바르지 않습니다.’ 라는 오류 메시지를 받게 됩니다. SQL> SELECT empno, birthdate FROM employee WHERE birthdate = '28-03-1976' 1 라인 근처 오류: SQL0180N 날짜 시간 값의 문자열 표현 구문이 올바르지 않습니다. SQL> SELECT empno, birthdate FROM employee WHERE birthdate = '1976-03-28';

  25. 9. Comparison Conditions WHERE 절에서 주로 사용하는 비교 연산자 입니다. SQL> SELECT FIRSTNME||MIDINIT||LASTNAME as Full_name FROM employee WHERE birthday = '1963-08-24' => birthday가 1963년 8월 24일생 직원을 검색합니다. WHERE salary >= 152750 => salary 가 152,750 이상에 해당하는 직원을 검색합니다. WHERE lastname <> 'HAAS' => lastname 이 ‘HASS’가 아닌 직원을 검색합니다.

  26. 10. Other Comparison Conditions 1) BETWEEN Condition 첫번째 조건과 두번째 조건 사이에 존재하는 모든 값을 검색합니다. 예를 들면, 생일이 1976년 3월 28일에서 2002년 3월 28일인 직원을 모두 조회할 경우 “between ‘1976-03-28’ and ‘2002-03-28’”으로 검색할 수 있습니다. SQL> SELECT empno, birthdate FROM employee WHERE birthdate between '1976-03-28' and '2002-03-28';

  27. 10. Other Comparison Conditions 2) IN Condition IN 조건은 어떤 Data Type에서도 사용 할 수 있으며, 범위 검색이 아니라 지정한 값에 대한 검색입니다. 그리고 문자열 검색 또는 날짜 검색일 경우 '' 으로 검색 데이터를 감싸야 합니다. SQL> SELECT empno, firstnme, midinit, lastname FROM employee WHERE firstnme in ('DANIEL','MAUDE','REBA') SQL> SELECT empno, firstnme, midinit, lastname FROM employee WHERE firstnme = 'DANIEL' OR firstnme = 'MAUDE' OR firstnme = 'REBA'

  28. 10. Other Comparison Conditions 3) NOT IN의 함정 NOT IN 연산자는 IN 연산자의 반대 개념으로 알고 있습니다. 그럼 다음의 예제를 보겠습니다. SQL> SELECT firstnme, midinit, lastname FROM employee WHERE midinit is null; SQL> SELECT firstnme, midinit, lastname FROM employee WHERE midinit = 'S'; SQL> SELECT firstnme, midinit, lastname FROM employee1 WHERE midinit in ( NULL,'S'); SQL문을 보시면 Null 검색을 하지만, 검색에 해당하는 Data를 가져오지 못하고 있습니다. 그 이유는 NULL은 항상 IS NULL 또는 IS NOT NULL로 비교되어야 하기 때문입니다. 즉 midinit = NULL 이란 조건은 항상 false를 return 합니다. NOT IN 연산자에 NULL이 포함되면 어떠한 경우 일지라도 한 건도 Data를 검색하지 못합니다. 왜 그럴까에 대한 답은 아래의 SQL문을 풀어보면 쉽게 알 수 있습니다.

  29. 10. Other Comparison Conditions 3) LIKE Condition LIKE 검색은 와일드카드 조회를 할 경우 많이 사용합니다. 검색 조건에는 문자열 또는 숫자들에 사용할 수 있습니다. 조건절에서 ‘_’를 사용할 경우 한글자에 대한 와일드카드이고, 해당 검색 다음에 ‘%’는 검색어 다음의 와일드카드 입니다. SQL> SELECT firstnme, midinit, lastname FROM employee WHERE firstnme like 'D_____'; SQL> SELECT firstnme, midinit, lastname FROM employee WHERE firstnme like 'D%';

  30. 11. NULL VALUE 정의 Null 값은 사용할 수 없는 값, 할당이 안 된 값, 미지의 값을 의미합니다. Null 값에 대해서 이해하는 것이 무척 애매할 수 있어 예를 들어 설명하겠습니다. ‘A’ 회사에 신입사원이 입사를 하여 연수를 받고 있다면, 분명 사번은 할당 받을 것입니다. 하지만 연수원 신분이므로 아직 담당부서를 배정 받지는 못했을 것입니다. 이럴 경우 그 신입사원의 직원 Table에 있는 담당 부서의 값은 Null 값으로 남겨두고, 향후 부서를 배정받을 경우 정보를 갱신하게 됩니다. Null 값에 대한 조회는 is Null 또는 is not Null로 합니다. SQL> SELECT firstnme, midinit, lastname FROM employee WHERE midinit is null SQL> SELECT firstnme, midinit, lastname FROM employee WHERE midinit is not null;

  31. 12. EXISTS 술어 사용 Main Query가 Sub Query의 결과 값의 존재 유무에 대한 체크만 할 경우 사용합니다. EXISTS 술어는 부속 조회의 응답 집합에 하나 이상의 행을 포함하면 참이 되고, 행을 포함하지 않으면 거짓이 됩니다. EXISTS 술어의 경우 조회 데이터에 대한 참, 거짓만 구별하고 데이터를 보여 주는 것이 아니므로 일반적으로 수행속도에 유리합니다. SQL> UPDATE employee SET deptno = '' WHERE deptno = 'E21'; SQL> commit; SQL> SELECT empno, firstnme, midinit, lastname, workdept FROM employee X WHERE NOT EXISTS ( SELECT 1 FROM dept WHERE X.workdept = workdept ) ORDER BY empno;

  32. 13. GROUP BY 절 GROUP BY 절은 검색할 데이터에 대한 그룹화 작업을 위해 필요한 절입니다. 대부분의 경우 GROUP 함수와 함께 사용을 합니다. SQL> SELECT workdept, AVG(salary + bonus) as total FROM employee GROUP BY workdept;

  33. 14. 그룹 함수 그룹함수는 전체 데이터를 특정 기준에 따라 Grouping을 해야 할 때 사용하는 함수입니다. 일반 함수와는 다르게 그룹 집합에 대한 주어진 결과값을 다룹니다. 다음은 부서별 연봉의 평균을 조회한 내용입니다. SQL> SELECT workdept, AVG(salary + bonus) as total FROM employee GROUP BY workdept;

  34. 15. GROUP BY with ROLLUP and CUBE Operators ROLLUP과 CUBE를 활용하게 되면 많은 소계항목과 합계를 단순하게 작성할 수 있습니다. 먼저 첫번째 예제인 ROLLUP을 활용한 데이터 검색을 보면, DEPTNO, JOB 별로 연봉의 합계 그리고 각 부서 직원의 연봉합계, 전 직원의 연봉합계를 한번에 확인할 수 있습니다. SQL> SELECT workdept, job, sum(salary+bonus) total_sal FROM employee GROUP BY ROLLUP(workdept, job) ORDER BY workdept, total_sal, job SQL> SELECT workdept, job, sum(salary+bonus) total_sal FROM employee WHERE workdept is not null GROUP BY CUBE(workdept, job) ORDER BY workdept, job ROLLUP 과 다르게 각 부서와 상관없이 JOB 별 합계를 보여주고 있는 점입니다.

  35. 16. ROLLUP Operator ROLLUP 연산자는 통계와 요약정보를 작성하는데 사용되는데, 주로 GROUP BY 절과 함께 사용하여 소계와 합계를 동시에 보여줍니다. ROLLUP 연산자는 소계 작성에 필요한 컬럼들이 많을 경우 특히 유용합니다. SQL> SELECT workdept, job, sum(salary) FROM employee WHERE workdept is not null GROUP BY ROLLUP(workdept, job) ORDER BY workdept, job;

  36. 17. CUBE Operator CUBE 연산자는 모든 합계 함수 즉, AVG, SUM, MAX, MIN 그리고 COUNT 등에 사용할 수 있습니다. ROLLUP 연산자가 가능한 소계 조합을 작성하는데 반해, CUBE 연산자는 cross-tabular 보고서를 작성하기 위해서 사용하는 결과 집합을 생성하는데 사용됩니다. 또한 GROUP BY 절에서 구체적으로 그룹지을 수 있는 가능한 모든 소계 집합를 작성합니다. SQL> SELECT workdept, job, sum(salary) FROM employee WHERE workdept is not null GROUP BY CUBE(workdept, job) ORDER BY workdept, job

  37. 19. HAVING 절 HAVING 절은 GROUP BY에 의해서 그룹화 된 데이터들을 그룹별로 제약하기 위해 사용합니다. 다음의 예는 부서별 연봉이 제일 작은 직원을 조회하고 그 직원들 중 연봉이 $50000 이하인 직원만 조회합니다. 이 경우 부서별로 그룹핑을 하여 제일 작은 연봉을 받는 사람을 검색한 후 그 연봉이 $50000 인 직원을 조회합니다. SQL> SELECT workdept, min(salary + bonus) as total_sal FROM employee GROUP BY workdept HAVING min(salary + bonus ) <= 50000; HAVING 절은 다음의 절차로 조회가 진행됩니다.  조회할 Data를 그룹핑합니다.  그룹핑 후 그룹함수를 적용합니다.  HAVING 절의 제약조건에 맞는 Data들을 보여 줍니다.

  38. 20. ORDER BY 절 (Descending, Ascending) ORDER BY절을 이용하여 조회된 데이터들에 대한 오름차순 또는 내림차순 정렬을 할 수 있습니다. ORDER BY 절의 형식은 ‘ORDER BY column1 [desc/asc]’ 입니다. • 내림차순/오름차순 정렬 기본적으로 ORDER BY 컬럼명이 나올 경우 기본값으로 ASC가 반영됩니다. 그렇지 않고 내림차순 정렬을 필요로 할 경우 DESC 구문을 사용합니다. SQL> SELECT empno, firstnme, midinit, lastname, workdept, job FROM employee WHERE workdept = 'A00' AND job not in ('CLERK') ORDER BY empno; SQL> SELECT empno, firstnme, midinit, lastname, workdept, job FROM employee WHERE workdept = 'A00' AND job not in ('CLERK') ORDER BY empno desc;

  39. 20. ORDER BY 절 (Descending, Ascending) 2) 컬럼 별칭으로 정렬 컬럼에 대한 별칭을 사용하여 정렬을 할 수 있습니다. SQL> SELECT empno||firstnme||midinit||lastname as FullName, workdept, job FROM employee WHERE workdept = 'A00' AND job not in ('CLERK') ORDER BY FullName;

  40. 20. ORDER BY 절 (Descending, Ascending) 3) 다중 컬럼 정렬 • 다중 컬럼 정렬 다중 컬럼에 대한 오름차순/내림차순 정렬을 개별적으로 수행할 수 있습니다. SQL> SELECT empno, birthdate, workdept FROM employee ORDER BY empno, birthdate desc, workdept;

  41. 21. 논리 연산자 논리 연산자는 두 개의 결과 집합에 대하여 참, 거짓을 나타내는 연산자 입니다. 예를 들면, A 조건을 만족하고 B조건을 만족하지 않을 경우, AND 조건은 ‘거짓’ OR 조건은 ‘참’이 됩니다.

  42. 21. 논리 연산자 • AND 연산자 선택된 두 개의 조건(workdept, job)이 모두 참이어야 합니다. 다음의 예를 보면 deptno가 ‘A00’ 이고 job이 ‘CLERK’ 인 직원을 조회할 경우, 두 조건에 모두 만족하는 직원만 조회를 합니다. SQL> SELECT empno, firstnme, midinit, lastname, workdept, job FROM employee WHERE workdept = 'A00' AND job = 'CLERK'; < AND 조건의 True/False/Null 에 대한 Metrics >

  43. 21. 논리 연산자 2) OR 연산자 선택된 조건들 중에서 참인 것 하나만 있으면 참이 됩니다. 즉, 부서번호와 JOB 등 두 개의 조건 중 하나만 일치하면 참이 됩니다. SQL> SELECT empno, firstnme, midinit, lastname, workdept, job FROM employee WHERE workdept = 'ABS' OR job = 'CLERK'; < OR 조건의 True/False/Null 에 대한 Metrics >

  44. 21. 논리 연산자 3) NOT 연산자 해당 하는 조건이 아닌 것만 참이 됩니다. 예를 들면, NOT MANAGER 이면 MANAGER가 아닌 직원들을 조회합니다. SQL> SELECT empno, firstnme, midinit, lastname, workdept, job FROM employee WHERE workdept = 'A00' AND job not in ('CLERK'); < NOT 조건의 True/False/Null에 대한 Metrics >

  45. Single-Row 함수 • 함수의 정의 • 단일행 데이터 변환함수 1) LOWER 2) UPPER 3) INITCAP 4) CONCAT 5) SUBSTR 6) LENGTH 7) INSTR 8) LPAD | RPAD 9) TRIM 10) REPLACE 11) ROUND 12) TRUNC 13) MOD

  46. Single-Row 함수 2. 단일행 데이터 변환함수 14) SYSDATE 15) 산술연산을 사용한 날짜처리 16) LAST_DAY 17) ROUND 18) TRUNC 19) VARCHAR2 또는 CHAR TYPE을 NUMBER TYPE으로 변환함수 20) VARCHAR2 또는 CHAR TYPE을 DATE TYPE으로 변환함수 21) NUMBER TYPE을 VARCHAR2 TYPE으로 변환하기 위한 함수 22) NVL 23) NULLIF 24) COALESCE 25) CASE 26) DECODE

  47. 1. 함수의 정의 DB2에서 제공하는 함수들은 SQL의 기능을 더욱 다양하게 사용할 수 있게 합니다. 또한 데이터타입의 변환, 데이터 포맷의 변경, 개별 데이터변환, 데이터 계산 등 활용범위가 다양합니다. 함수의 분류는 여러가지 기준으로 할 수 있으나, 여기서는 크게 단일 데이터 변화함수와 다중 데이터 변환함수로 분류하여 설명하겠습니다.

  48. 2. 단일행 데이터 변환함수 단일 데이터 변환함수는 주로 데이터 아이템들을 조작하기 위해 사용하는데, 하나이상의 argument들을 받아서 하나의 값으로 return 합니다. 사용되는 영역은 변수, 컬럼명, 상수 등 입니다. 단일 데이터 변환함수의 특징은  쿼리를 할 때 SELECT list에 나타난 Data 개별을 변환하는데 사용됩니다.  하나의 입력 값에 대해서 하나의 결과값을 반환합니다.  SELECT, WHERE, ORDER BY 절에 주로 사용합니다.

  49. 2. 단일행 데이터 변환함수 • LOWER SQL> SELECT lower('ABCDEFG') FROM sysibm.sysdummy1; 1 -------- abcdefg

  50. 2. 단일행 데이터 변환함수 2) UPPER SQL> SELECT upper('abcdefg') FROM sysibm.sysdummy1 ; 1 -------- ABCDEFG

More Related