반응형

1. ROUND 함수 (반올림)

ROUND(숫자 , 출력을 원하는 자리수

- ROUND(123.456,2) = 123.46

- ROUND(123.456,-1) = 120

- ROUND(123.456,0) = 123


2. TRUNC 함수 (버림)

TRUNC(숫자, 원하는 자리수)

-TRUNC(123.456,2) = 123.45

-TRUNC(123.456,-1) = 120

-TRUNC(123.456,0) = 123


3. MOD , CEIL, FLOOR 함수

MOD - 나머지 값을 구하는 함수

CEIL - 주어진 숫자가 가장 가까운 큰 정수를 구하는 함수

FLOOR - 주어진 함수와 가장 가까운 작은 정수를 구하는 함수

-MOD(!24,3) = 1      = 124/3  .... 1   따라서 1만 보임

-CEIL(123.456) = 124

-FLOOR(123.456) = 123



CEIL 함수의 다른 사용법

12건의 데이터를 3줄씩 나누어 한조로 만드는 예

rownum 은 출력될 때 줄 번호


4. POWER 함수

숫자 1의 숫자 2의 승수를 구해주는 함수

POWER( 숫자1, 숫자2)

SELECT POWER(2,3) FROM dual ;  = 8        2의 3승





반응형

'오라클 > SQL' 카테고리의 다른 글

복수행 함수 (그룹 함수)  (1) 2014.10.08
sql 단일행 함수 - 정규식  (2) 2014.10.01
sql 단일행 함수 - 일반 함수  (0) 2014.09.30
sql 단일행 함수 - 형 변환 함수  (1) 2014.09.30
sql 단일행 함수 - 날짜 함수  (0) 2014.09.30
sql 단일행 함수 - 문자함수  (3) 2014.09.29
sql select문  (0) 2014.09.29
반응형

단일행 함수 - 여러 건의 데이터를 한번에 하나씩 처리하는 함수

-문자 함수

-숫자 함수

-날짜 함수

-변환 함수

-묵시적 데이터형 변환

-명시적 데이터형 변환 

-일반 함수

 

 

문자 함수

 

1. INITCAP 함수

영어에서 첫 글자만 대문자로 출력하고 나머지는 전부 소문자로 출력하는 함수

INITCAP(문자열 or 칼럼명)

 

2. LOWER 함수

입력되는 값을 전부 소문자로 변경하여 출력

LOWER(문자열 or 칼럼명)

 

3. UPPER 함수

입력되는 값을 전부 대문자로 변경하여 출력

UPPER(문자열 or 칼럼명)

 

4. LENGTH / LENGTHB 함수

입력된 문자열의 길이를 (바이트수를) 계산해주는 함수

 

5. CONCAT 함수 (|| 연산자와 동일한 기능)

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

 

6. SUBSTR 함수 (아주 중요)

주어진 문자열에서 특정길이의 문자를 골라낼 때 사용하는 함수

 

 

2번 칼럼과 3번 칼럼을 보면 시작 위치의 숫자를 -(마이너스)로 주었는데 이럴경우 뒤에서 부터(오른쪽) 자릿수를 계산해서 문자를 추출

 

ex) Student 테이블에서 jumin 칼럼을 사용해서 1 전공이 101번인 학생들의 이름과 생년월일 , 생일 하루전 날짜를 출력하세요

SCOTT>SELECT name,SUBSTR(jumin,3,4) "생일",SUBSTR(jumin,3,4)-1 "생일 1일전"

        2  FROM student

        3  WHERE deptno1=101 ;

 

7. SUBSTRB 함수

SUBSTR 함수와 동일하지만 추출할 자리수가 아니라 추출 할 바이트 수를 지정

 

8. INSTR 함수

이 함수는 주어진 문자열이나 칼럼에서 특정 글자의 위치를 찾아주는 함수

INSTR('문자열' 또는 칼럼, 찾는 글자, 시작위치, 몇 번째인지(기본 값 1))

 

9. LPAD 함수

원래 데이터를 두고 왼쪽에 빈자리가 있을 경우 왼쪽을 특정 기호나 문자로 채우라는 뜻

LPAD('문자열' 또는 칼럼명, 자리수, '채울문자')

 

※LPAD 퀴즈

emp 테이블을 사용하여 deptno가 10번인 사원들의 사원이름을 총 9바이트로 출력하되 빈 자리에는 해당 자리의 숫자로 채우시오


10. RPAD 함수

원래 데이터를 두고 오른쪽에 빈자리가 있을 경우 오른쪽을 특정 기호나 문자로 채우라는 뜻

RPAD('문자열' 또는 칼럼명, 자리수, '채울문자')


※RPAD 퀴즈

emp테이블에서 deptno가 10번인 사원들의 이름을 총 9자리로 출력하되 오른쪽 빈자리에는 해당 자리 수에 해당되는 숫자가 출력되도록 하시오


11. LTRIM 함수

LPRD,RPAD 와 반대로 LTRIM,RTRIM 함수는 제거하는 함수

LTRIM('문자열'or 칼럼명 , '제거할 문자')

 

12. RTRIM 함수

RTRIM('문자열'or 칼럼명 , '제거할 문자')

 

13. REPLACE 함수

주어진 첫 번째 문자열이나 칼럼에서 문자1 을 문자2로 바꾸어 출력하는 함수

REPLACE('문자열'or 칼럼명, '문자1','문자2')

 

 REPLACE 퀴즈 1

professor 테이블에서 102 번 학과에 소속된 교수들의 이름을 가운데 이름만 '#'으로 변경해서 출력

 

student 테이블에서 1 전공이 101번인 학생들의 이름과 주민등록번호를 출력하되 주민등록번호의 뒤 7자리는 '*'로 표시되게 출력 

 

student 테이블에서 1전공이 102번인 학생들의 이름과 전화번호, 전화번호에서 국번 부분만 '*' 처리하여 출력

 

student 테이블에서 detptno1 이 101번인 학과 학생들의 이름과 전화번호, 전화번호에서 지역번호와 국번을 제외한 나머지 번호를 '*'로 표시해서 출력

반응형

'오라클 > SQL' 카테고리의 다른 글

복수행 함수 (그룹 함수)  (1) 2014.10.08
sql 단일행 함수 - 정규식  (2) 2014.10.01
sql 단일행 함수 - 일반 함수  (0) 2014.09.30
sql 단일행 함수 - 형 변환 함수  (1) 2014.09.30
sql 단일행 함수 - 날짜 함수  (0) 2014.09.30
sql 단일행 함수 - 숫자함수  (0) 2014.09.30
sql select문  (0) 2014.09.29
반응형

계정 → 관리자 : sys, system
       ↘

            일반용 : scott , HR 
                          -> sample schema 설치해야 생김 (연습용 자료)

리눅스 -> $ sqlplus scott/tiger
          프로그램이름  계정  암호


오라클 -> sql> Conn scott/tiger

 

/home/oracle 디렉토리에 test_data.sql 넣고 scott 계정으로 로그인

sql에 적용방법 : scott> @/home/oracle/test_data.sql

 

sql로그인 하기

$ sqlplus scott/tiger

scott>

 

 -데이터베이스가 종료되어 있어서 연습용 계정으로 접속 안되고 에러 나는 경우

 

sys/oracle as sysdba 로 관리자 계정으로 접속후 startup으로 db시작

그 후 연습용 계정으로 로그인 sql> conn scott/tiger

 

현재 접속해 있는 계정 확인 = show user

set sqlprompt "_user>" 명령어 치면 프롬포트 모양이 계정이름으로 변경됨

 

로그인 할때 ORA-28000: the account is locked 라는 메세지가 나오면

관리자 계정으로 접속해 락 해제해주고 연습용 계정으로 로그인

sql> alter user scott identified by tiger account unlock ;

sql> conn scott/tiger

 

오라클 Table

행 - column

열 - row

 

/ -> 제일 마지막으로 쳤던 쿼리 입력

 

칼럼 길이 조정 하는 방법

데이터가 숫자일 경우

COL empno FOR 9999 : empno 라는 칼럼의 길이를 숫자 4자리까지 들어가게 설정

  (한자리당 9 하나씩)

데이터가 문자일 경우

COL ename FOR a8 : ename 라는 칼럼의 길이를 8바이트 까지 들어가게 설정    

 

 

 

표현식 사용하여 출력

select 구문뒤 '(홀따옴표) 로 묶어서 사용

(리터럴 안에 홀 따옴표가 있을 경우 홀따옴표 1개를 출력하기 위해 2개를 사용)

ex) 교수님 's 매너 최고!!를 출력하기 위해 '교수님 ''s 매너 최고!!'

 

별칭 사용

select 칼럼명 " " 를 사용

ex) name 의 칼럼명을 이름으로 출력하기 위해 select name "이름"

 

Alias 연습문제 1 > emp 테이블을 사용하여 empno 를 입사번호, ename 을 사원이름, job을 직급으로 별명을 설정하여 출력

> select empno "입사번호" , ename "사원이름" , job "직급" from emp ;

 

Alias 연습문제 2 > dept 테이블을 사용하여 deptno 를 부서번호, dname 부서명, loc를 부서의 지역으로 별명을 설정하여 출력

> select deptno "부서번호" , dname "부서명" , loc "부서의 지역" from dept ;

 

 

DISTINCT 명령어 - 중복된 값을 제거하고 출력

정렬 <-이전 10g R2 이후-> 정렬x  hash함수 사용

hash = 입력값이 같으면 출력값이 같고, 입력값이 다르면 출력값이 다르게 나오는 함수

DISTINCT 함수는 컬럼이 많으면 사용하면 안됨 , SELECT문 뒤에 와야한다.

 

연결 연산자

|| 사용

 

연결 연산자 문제 1 > 아래 그림과 같이 출력

select name||' 의 ID는 '||ID||' 이고 , 체중은 '||weight||' 입니다. ' "ID 와 체중 "FROM student ;

 

 

연결 연산자 문제 2 > 아래 그림과 같이 출력

> select ''||ENAME||'('||JOB||') ,'||ENAME||''''||JOB||'''' "이름과 직업" FROM emp ;

 

원하는 조건만 골라내기 - WHERE

SELECT [Column or Expression]

FROM [Table or View]

WHERE 원하는 조건

where 절은 반드시 from 절 아래에 와야 함

- 숫자 조회시 그대로 쓰면 되지만 문자와 날짜를 조회 할 때는 해당 문자나 날짜에 홀따옴표를 붙여야 함

- 문자는 대소문자 구분을 하고 날짜는 대소문자 구분 없음

 

기본 산술연산자 사용

일반적으로 사용되는 산수 계산 잘 됨. (사칙연산 할때 우선순위 조심)

 

다양한 연산자 활용

 

 

BETWEEN 사용하여 사이 값 출력

ex)2000 ~ 3000 사이인 사람들의 empno,ename,sal 출력

BETWEEN - SELECT empno,ename,sal FROM emp WHERE sal BETWEEN 2000 AND 3000 ;

연산자 활용 - SELECT empno,ename,sal FROM emp WHERE sal >= 2000 AND SAL <= 3000 ;

위와같이 특정 구간의 값을 검색할 때 BETWEEN 연산자보다 비교 연산자를 사용하여 쓰는 것이 훨씬 빠르다.

 

IN 연산자로 여러 조건을 간편하게 검색

SELECT empno,ename,deptno

   2  FROM emp

   3  WHERE deptno IN (10,20) ;

- emp 테이블에서 deptno 가 10,20 인 모든 사원들의 empno, ename, deptno 출력

 

LIKE 연산자로 비슷한 것들 모두 찾기

 

   

 

LIKE 연산자를 쓸 때 문자나 날짜를 처리하기 위해 홀따옴표를 사용

 - % : 글자수 제한 없고 (0개 포함) 어떤 글자가 와도 상관 없음

 - _ (Underscore) : 글자수는 한글자만 올 수 있고 어떤 글자가 와도 상관없음

 

ex) 이름 글자수가 3글자 인데 성은 "박" 이고 마지막 글자가 "주" 인 사람을 찾는다면

      WHERE name LIKE '박_주' ;  이런식으로 검색

※LIKE 연산자를 쓸 때 % 나 _ 를 가장 먼저 쓰면 안된다. 먼저 쓰게 될 경우 인덱스 때문에 속도가 느리게 검색된다.

 

값이 무엇인지 모를 경우 - IS NULL / IS NOT NULL

NULL 값은 값이 얼마인지 모른다는 의미

ex) 1 ~100 사이의 값이 들어와야 하는 곳에 값이 안들어오면 NULL, 초과해서 들어오면 N/A 

 

NULL값을 조회하고 싶으면 IS NULL 

NULL값을 제외하고 조회하고 싶으면 IS NOT NULL

 

 

 

검색조건이 두 개 이상일 경우 조회

두 조건을 동시에 만족해야 하는 경우 AND, 두 조건중 하나만 만족해도 되는 경우 OR

 

 

정렬하여 출력하기 - ORDER BY 절

정렬의 기본값은 오름차순. (날짜는 최근 날짜가 더 큼)

오름차순 = ASC  내림차순 = DESC

 

ename 순서대로 오름차순 정렬             

SELECT ename,sal,hiredate

   2 FROM emp ;

   3 ORDER BY ename ;

 

dept 순으로 오름차순으로 선 정렬후 동일 dept가 있을시 sal 값으로 내림차순으로 정렬

SELECT ename,sal,hiredate,deptno

   2 FROM emp

   3 ORDER BY deptno ASC , sal DESC ;

 

ORDER BY 2,1 ; 이런식으로 숫자로 사용할 때 도 있는데 이 숫자의 의미는 SELECT 절에 오는 컬럼의 순서를 뜻함. 즉 2 란 sal을 뜻 하고 1 은 ename을 뜻함.

sal로 먼저 정렬 후 동일한 sal 값이 있을 경우 ename으로 한번 더 정렬을 하라는 의미

SELECT ename, sal, hiredate

  2 FROM emp

  3 WHERE SAL > 1000

  4 ORDER BY 2,1 ;

 

집합 연산자

 연산자 종류

 내 용 

 UNION

 두 집합의 결과를 합쳐서 출력. 중복 값 제거하고 정렬함 

 UNION ALL

 두 집합의 결과를 합쳐서 출력. 중복 값 제거 안하고 정렬 안 함

 INTERSECT

 두 집합의 교집합 결과를 출력함. 정렬함

 MINUS

 두 집합의 차집합 결과를 출력함. 정렬함. 쿼리의 순서 중요함

 

※ 위 4가지 집합 연산자를 사용할 경우 주의 사항

- 두 집합의 SELECT 절에 오는 칼럼의 개수가 동일해야 함

- 두 집합의 SELECE 절에 오는 칼럼의 데이터 형이 동일해야 함

- 두 집합의 칼럼명은 달라도 상관없음

반응형

+ Recent posts