5장 SQL 주요 함수.

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
Chapter 04 SQL 고급.
02 SQL 언어 SQL 명령문의 종류와 사용 방법 오라클 오류 메시지.
Nested Queries CSED421: Database Systems Labs.
SQL 0613.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
제 7 장 함수 사용을 통해 엑셀 정복하기.
06 SQL 함수 SQL 함수의 개념 문자 함수 숫자 함수 날짜 함수 데이터 타입의 변환 일반 함수.
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
SELECT 문 사원 테이블의 모든 정보를 출력하는 예제 1. 비교 연산자 SELECT 문의 형태
8장 서브 쿼리.
SQL SQL 불펌하지 마세요!!!!!!!! 불펌 금지.
MySQL 및 Workbench 설치 데이터 베이스.
기본적인 SELECT문 작성.
데이터 베이스 설계 및 실습 #3 - SQL 함수.
SQL*PLUS.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
SQL 함수 SQL 함수.
14장 뷰.
6장 그룹 함수.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
Heesang kim PL/SQL 3 Heesang kim.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               SQL (2) - 함수, 뷰.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
3장 SQL*Plus 명령어.
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
6장. printf와 scanf 함수에 대한 고찰
2007 1학기 11 프로젝트 기초 실습.
Quiz #1.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
KIM HEESANG PL/SQL 2 KIM HEESANG
11장. 1차원 배열.
You YoungSEok Oracle 설치 You YoungSEok
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
04 데이터 타입 데이터 타입의 종류 데이터 타입의 특성 데이터 타입의 결정 전략.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express Slide 1 (of 27)
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
JA A V W. 03.
어서와 C언어는 처음이지 제14장.
인터넷응용프로그래밍 JavaScript(Intro).
JDBC Lecture 004 By MINIO.
1장. SELECT 문장을 이용하여 원하는 데이터 가져오기
Restricting and Sorting Data
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
연산자 (Operator).
ITQ 정보기술자격 국가공인 Excel 2007 Ⅱ 함수- 11회차 강사 : 박영민.
에어 조건문.
오라클 쿼리 문제 EMP (사원 테이블) DEPT (부서 테이블) 컬럼명 설명 EMPNO 사원번호 ENAME 사원명 JOB
기본적인 SELECT문 작성.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
Excel 일차 강사 : 박영민.
2nd day Indexing and Slicing
문성우 SQL 실습 Part Ⅰ 문성우.
에어 PHP 입문.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
3장 SQL*Plus 명령어.
Stored program 2 장종원
Chapter 10 데이터 검색1.
ITQ 정보기술자격 국가공인 Excel 2007 Ⅱ 함수- 12회차 강사 : 박영민.
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
SQL 함수.
Excel 일차 강사 : 박영민.
Microsoft Word 2002 제1장 문자열의 삽입과 변경.
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
Presentation transcript:

5장 SQL 주요 함수

목 차 DUAL 테이블 ROUND(반올림) 함수 TRUNC(버림) 함수 MOD(나머지 ) 함수 문자 처리 함수 날짜 관련 함수 목 차 DUAL 테이블 ROUND(반올림) 함수 TRUNC(버림) 함수 MOD(나머지 ) 함수 문자 처리 함수 날짜 관련 함수 형 변환 함수 NULL 변환 함수인 NVL C언어의 else if 문과 같은 DECODE 함수 조건에 따라 다양하게 처리하는 CASE 함수

1. 기본 SELECT 문 SELECT ~ FROM ~ SQL문의 특징 SELECT 컬럼들 대소문자를 구분하지 않음. 여러 줄로 나누어 입력 가능. 마지막 문은 버퍼에 저장 됨. 축약할 수 없음. 문장 끝에 ;(세미콜론)으로 끝내야 함.

DUAL 테이블 DUAL 테이블 SYS 사용자 소유 모든 사용자가 사용 가능 DUMMY라는 단 하나의 컬럼으로 구성 이 컬럼에는 길이가 1인 문자 한 개 저장. 산술 연산이나 가상 컬럼의 값을 한번만 사용하려 할 때 사용 SQL> DESC SYS.DUAL; SQL> SELECT * FROM DUAL; SQL> SELECT sysdate FROM DUAL;

숫자 함수 ROUND(반올림) 함수 TRUNC(버림) 함수 소수점이하 세째자리에서 반올림해서 둘째자리까지 나타냄 SQL> SELECT ROUND(45.293, 2)   2   FROM DUAL; 소수점 0번째자리에서 반올림해서 (-)첫째자리까지 나타냄 SQL> SELECT ROUND(45.293, -1) 2 FROM DUAL; TRUNC(버림) 함수 소수점 둘째자리까지 나타내고 그 아래는 버림 SQL> SELECT TRUNC( 45.196, 2) 2 FROM DUAL;

MOD(나머지) 함수 급여를 100으로 나눈 나머지 조회 SQL> SELECT MOD(sal, 100) 2 FROM emp; 직원들 중 사번이 홀수인 직원 조회 SQL> SELECT * 2 FROM emp 3 WHERE MOD(empno, 2) = 1;

환경 변수 설정 저장 환경변수를 로그인할 때마다 적용하기 원할때 SQL> ed d:\oracle\product\10.1.0\db_1\dbs\login.sql set pagesize 50 set linesize 120

문자 처리 함수

대문자로 변환하는 UPPER 함수 문자열을 모두 대문자로 변경하여 조회 SQL> SELECT UPPER('Welcome to Oracle 10g')    2  FROM DUAL; 사원명을 대문자로 변경 조회 SQL> SELECT UPPER(ename)    2  FROM emp;

소문자로 변환하는 LOWER 함수 문자열을 모두 소문자로 변경하여 조회 SQL> SELECT LOWER('Welcome to Oracle 10g')    2  FROM DUAL; 사원명을 소문자로 변경 조회 SQL> SELECT LOWER(ename)    2  FROM emp;

이니셜만 대문자로 변환하는 INITCAP 함수 문자열의 첫글자를 대문자로 SQL> SELECT INITCAP('Welcome to Oracle 10g')    2  FROM DUAL; 사원명의 첫글자를 대문자로 SQL> SELECT INITCAP(ename)    2  FROM emp;

문자열의 길이를 알려주는 LENGTH 함수 문자열의 길이 조회 SQL> SELECT LENGTH('Welcome to Oracle 10g')    2  FROM DUAL; 사원명과 사원명의 길이 조회 SQL> SELECT ename, LENGTH(ename)    2  FROM emp;

INSTR(‘문자열’, ‘찾는 문자’, 시작위치, 반복횟수 ) -> 위치 번호 반환 SQL> SELECT INSTR('Welcome to Oracle 10g', ‘o', 3, 2)    2  FROM DUAL; 문자열에서 o를 세번째부터 두번째나오는 위치 조회 SQL> SELECT INSTR('Welcome to Oracle 10g', ‘o')    2  FROM DUAL; 문자열에서 o가 나오는 위치 조회

특정문자가 출현하는 위치 INSTR 함수 –cont’d 사원명에 ‘A’자가 나오는 위치 조회 SQL> SELECT ename, INSTR(ename, ‘A’)    2  FROM emp; 이름에 ‘A’가 속해 있지 않으면 0(zero) 반환

SUBSTR(‘문자열’, 시작 위치, 개수) -> 문자열 반환 SQL> SELECT SUBSTR('Welcome to Oracle 10g', 4, 3)    2  FROM DUAL; 문자열에서 네번째부터 세 개 조회 사번, 입사일, 입사년도 조회 SQL> SELECT empno, hiredate, SUBSTR(hiredate, 1, 2)    2  FROM emp; 입사일의 첫번째부터 두 개 조회 이름의 뒤에서 세번째부터 두 글자 조회 SQL> SELECT ename, SUBSTR(ename, -3, 2)    2  FROM emp;

특정문자를 왼쪽삽입하는 LPAD함수(오른쪽정렬후) SQL> SELECT LPAD('Oracle 10g', 20, ‘#')    2  FROM DUAL; 20자리의 문자열에 오른쪽정렬하고 왼쪽부터 빈곳에 #으로 채움 LPAD(‘문자열’, 전체자릿수 , ‘채우려는 문자’) 특정 문자를 오른쪽에 삽입하는 RPAD 함수(왼쪽 정렬 후 ) SQL> SELECT RPAD('Oracle 10g', 20, ‘#')    2  FROM DUAL; 20자리의 문자열에 왼쪽정렬하고 오른쪽부터 빈곳에 #으로 채움

왼쪽에서 특정 문자를 삭제하는 LTRIM 함수 문자열 왼쪽의 a를 삭제 SQL> SELECT LTRIM('aaaOracle 10gaaa', ‘a') 2 FROM DUAL; 문자열 왼쪽의 공백 삭제 SQL> SELECT LTRIM(‘ Oracle 10g ‘ ) 2 FROM DUAL;

오른쪽에서 특정 문자를 삭제하는 RTRIM 함수 문자열 오른쪽의 x를 삭제 SQL> SELECT RTRIM(‘xxxOracle 10gxxx', ‘x') 2 FROM DUAL; 문자열 오른쪽의 공백 삭제 SQL> SELECT RTRIM(‘ Oracle 10g ‘ ) 2 FROM DUAL; 특정 문자를 삭제하는 TRIM 함수 문자열 양쪽의 ‘A’ 삭제 SQL> SELECT ename, TRIM(‘A‘ from ename ) 2 FROM emp;

문자 함수 예제 사원명이 Smith 인 사람 검색 SQL> SELECT * 2 FROM emp 3 WHERE UPPER(ename)=‘SMITH’; 사원명이 대소문자인지 모르므로 Upper, lower, Initcap 함수 사용 이름의 세번째 자리가 ‘R’인 사원 검색 SQL> SELECT * 2 FROM emp 3 WHERE SUBSTR(ename, 3, 1) = ‘R’; Where ename like ‘__R%’ 이름의 끝자리가 ‘N’인 사원 검색 SQL> SELECT * 2 FROM emp 3 WHERE SUBSTR(ename, -1, 1) = ‘N’; Where ename like ‘%N’

문자 함수 예제 87년도에 입사한 사원 검색 SQL> SELECT * 2 FROM emp 3 WHERE hiredate like ‘%87%’; Where hiredate between ‘1987/1/1’ and ‘1987/12/31’ Where substr(hiredate, 1, 2)=’87’ 직원 이름이 5글자인 직원의 이름 소문자와 입사일, 급여 검색 SQL> SELECT LOWER(ename), hiredate, sal 2 FROM emp 3 WHERE LENGTH(ename) = 5;

날짜 관련 함수 날짜 연산 날짜 + 숫자 (결과: 날짜) : 일 수를 날짜에 더한다. 날짜 – 숫자 (결과: 날짜) : 날짜에서 일 수를 뺀다. 날짜 – 날짜 (결과: 숫자(일 수)) : 한 날짜에서 다른 날짜를 뺀다. 날짜 + 숫자/24 (결과: 날짜) : 날짜에 시간을 더한다.

SYSDATE 함수 날짜 연산 오늘 날짜 조회 SQL> SELECT SYSDATE 2 FROM DUAL; 어제 날짜 조회 직원의 이름, 입사일, 근무일수 조회 SQL> SELECT ename, hiredate, SYSDATE - hiredate   2  FROM emp;

MONTHS_BETWEEN ( 날짜, 날짜 ) -> 숫자 ADD_MONTHS ( 날짜, 숫자 ) -> 날짜 두 날짜 사이의 개월 수 계산 함수 직원의 근무 개월수 조회 SQL> SELECT SYSDATE, hiredate, MONTHS_BETWEEN(SYSDATE, hiredate)   FROM emp; MONTHS_BETWEEN ( 날짜, 날짜 ) -> 숫자 ADD_MONTHS 함수 ADD_MONTHS ( 날짜, 숫자 ) -> 날짜 입사일에서 6개월이 지난 날짜 조회 SQL> SELECT hiredate, ADD_MONTHS(hiredate, 6)   2   FROM emp;

LAST_DAY 함수 NEXT_DAY 함수 NEXT_DAY(날짜, 요일) 어떤 날짜(date) 달의 마지막 날 입사일 달의 마지막 날 조회 SQL> SELECT  LAST_DAY(hiredate)   2  FROM emp; NEXT_DAY 함수 NEXT_DAY(날짜, 요일) day(요일) : Date 의 돌아오는 day 요일 일, 월, 화, 수, 목, 금, 토 1, 2, 3, 4, 5, 6, 7 입사일이후 첫번째 금요일 조회 SQL>SELECT hiredate, NEXT_DAY(hiredate, '금'), NEXT_DAY(sysdate,’수’)   2  FROM emp;

날짜 형식 변경 date format을 우리식으로 하기위해 국제언어시스템을 Korean으로 SQL> alter session set NLS_LANGUAGE=Korean; SQL> alter session set NLS_DATE_FORMAT=‘YYYY-MON-DD’; SQL> select * from emp; 이번달 마지막날짜와 다가오는 일요일 조회 SQL> SELECT  LAST_DAY(sysdate), NEXT_DAY(SYSDATE, 1)   2  FROM DUAL; 입사일이후 6개월이 지난후 돌아오는 토요일 조회 SQL> SELECT NEXT_DAY(ADD_MONTHS(hiredate, 6), 7)   2  FROM emp; SQL> alter session set NLS_DATE_FORMAT=‘RR/MM/DD’;

날짜 함수 날짜 함수 ROUND 명시한 ‘날짜 형식 모델’을 기준으로 하여 날짜를 반올림. ‘일’에서 반올림해서 ‘월’까지 표시 ‘월’에서 반올림해서 ‘년’까지 표시

날짜 함수 날짜 함수 (8) TRUNC 명시한 ‘날짜 형식 모델’을 기준으로 하여 날짜를 절삭. ‘일’이하 절사 ‘월’이하 절사

형 변환 함수 숫자를 문자로 변환 문자를 숫자로 변환 날짜를 문자로 변환 문자를 날짜로 변환

문자열을 날짜 형으로 변환하는 TO_DATE 2006년1월1일부터 현재까지 경과된 일수 조회 SQL> select sysdate, sysdate – to_date('2006/01/01', 'YYYY/MM/DD')    2 FROM DUAL;

SQL>c/round/trunc 날짜 함수 TRUNC SQL>c/round/trunc 날짜형식이 생략되면 가장 가까운 날짜로 반올림등 연산 Round문에서 사용한 질의어 복사해서 SQL plus로 해결

날짜나 숫자 형을 문자로 변환하는 TO_CHAR TO_CHAR(number | date, 'format') Format : 출력 형식으로 ‘’로 나타냄

날짜나 숫자 형을 문자로 변환하는 TO_CHAR 오늘날짜를 시분초까지 출력하라 SQL> SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD, HH24:MI:SS')     FROM DUAL; 현재 시간에 3시간을 더한 시각 조회 SQL> SELECT TO_CHAR(SYSDATE +3/24, 'yyyy“년” mm“월” dd”일“ hh”시” mi”분“’)   FROM DUAL;

숫자 출력 형식

숫자 출력 형식 sal을 6자리로 바꾸고 앞에 $를 붙여 출력하는 예제 SQL> SELECT ename, TO_CHAR(sal, '$999,999')   2  FROM emp; sal을 6자리로 바꾸고 앞에 \(원화)를 붙여 출력하는 예제 SQL> SELECT ename, TO_CHAR(sal, 'L999,999')   2   FROM emp;

NULL 변환 함수인 NVL NVL (변수/식, 원하는값): ‘식’이 null 이면 ‘원하는 값’으로 변환 NVL( A, B) : A가 null이면 B값으로 바꿈. 단 A, B는 같은 데이타형이어야 함 이름, 급여, 커미션, 커미션을 합한 년봉을 조회 SQL> SELECT ename, sal, comm, sal*12 +NVL(comm, 0)   2   FROM emp; 커미션이 널값이면 0으로 바꿈

Mgr은 숫자형이므로 먼저 문자형으로 바꾸고 NULL 변환 함수인 NVL –cont’d SQL> DESC emp 상사(mgr)가 없으면 ‘CEO’로 변경하여 출력 SQL> SELECT ename, NVL( mgr, ‘CEO’)   2   FROM emp; SQL> SELECT ename, NVL( TO_CHAR(mgr, ‘9999’), ‘CEO’) Mgr은 숫자형이므로 먼저 문자형으로 바꾸고 null 이면 ‘CEO’로 변경

C언어의 else if 문과 같은 DECODE 함수

C언어의 else if 문과 같은 DECODE 함수 부서번호가 10 이면 ‘accounting’, 20 이면 ‘research’, 30 이면 ‘sales’, 40이면 ‘operations’의 부서명을 DNAME으로 하여 이름, 부서번호, 부서명 조회 SQL> SELECT ename, deptno,   2            DECODE(deptno, 10, ‘ACCOUNTING’,   3                              20, ‘RESEARCH’,   4                              30, ‘SALES’,   5                              40, ‘OPERATIONS’) dname   6   FROM emp;

C언어의 else if 문과 같은 DECODE 함수 직급이 ‘MANAGER’이면 15%, ‘CLERK’이면 5%인상하여 ‘Up Sal’로 하여 이름, 직급, ‘Up Sal ‘조회 SQL> SELECT ename, job,   2         DECODE(job, ‘CLERK’, sal*1.05,   3                      ‘MANAGER’, sal*1.15,   4                          sal) as “인상급여”   5      FROM emp;

조건에 따라 다른 처리가 가능한 CASE 함수 CASE 표현식 WHEN 조건1 THEN 결과1 WHEN 조건2 THEN 결과2                ELSE 결과N END

조건에 따라 다른 처리가 가능한 CASE 함수 각 부서번호에 해당되는 부서명을 이름, 부서번호와 함께 조회 SQL> SELECT ename, deptno,   2       CASE WHEN deptno = 10 THEN ‘ACCOUNTING’   3                   WHEN deptno = 20 THEN ‘RESEARCH’   4                   WHEN deptno = 30 THEN  ‘SALES’   5                   WHEN deptno = 40 THEN  ‘OPERATIONS’   6        END  dname   7   FROM emp;

조건에 따라 다른 처리가 가능한 CASE 함수 직급이 ‘CLERK’이면 20%, ‘ANALYST’이면 15%, ‘MANAGER’이면 10% 인상하여 이름, 직급, 급여, 인상된 급여를 조회하시오 SQL> SELECT ename, job, sal,   2         CASE WHEN job= ‘CLERK’ THEN sal*1.20   3                   WHEN job= ‘ANALYST’ THEN sal*1.15   4                   WHEN job=‘MANAGER’ THEN sal*1.10 5 ELSE sal 6       END AS 인상된급여   7      FROM emp;