본문 바로가기
Web & Mobile/SQL

Lecture 12 - SQL(2)

by Bennyziio 2019. 4. 14.
반응형

데이터베이스
    관리시스템
    저장소(실제 데이터가 존재)

    * 데이터는 입력시 정확히 입력해야함(보안 / 백업 중요)

    관리시스템
    1. 서버 -> 실제 저장소 관리의 영역
        * 시작 / 종료
    2. 클라이언트 -> 명령
        1) sqlplus
        2) sql developer
    저장소 - 엑셀의 구조로 데이터를 가지고 있다
    * 접속방법은 sqlplus로 접속한다.
    select * from tab;
    describe 테이블이름;    // 컬럼 정의
    
select * from 테이블명;    // 

select 컬럼(*)                                     // select(컬럼) 절 - 어떤 컬럼을 가져올래
from 테이블명                                    //  from 절
where 컬럼에 대한 조건                     // where(조건) 절
order by 정렬                                    // order by 절

원격 접속법

해당 구역의 정보를 알아야 한다

내림차순

문자함수

select 
* dual
        임시테이블 (1행 1열)

length

instr

lpad, rpad

trim - 공백 제거

replace

lower, upper

initcap

concat

substr

ex) k로 시작하는 사원명에 대한 정보, 사원번호(EMPNO), 사원명(ENAME), 부서번호(DEPNO) 출력

2가지 형식
1. like
2. substr

숫자함수

trunc - 내림


mod - 나머지

날짜 함수

sysdate

alter session 지정한 표기 형식으로 날짜 표기

다른 환경에서는 원래 표기 모양대로 돌아옴

hiredate

ex) 사원 테이블에서 사원들이 입사후 몇주가 경과되었는지 확인하는 법

날짜 함수

months_between

add_months

next_day

last_day

round

trunc

변환 함수

To_char

date 타입

Number 타입

자리수를 잘 보고 만들어야 에러가 안난다

To_number

 

To_date

일반 함수

Nvl

Nullif

39p
    단일행 함수
        문자함수(*)
        숫자함수
        날짜함수(*)
        변환함수(*)
        일반함수

    복수행 함수 (집계함수)

coalesce

case

job  - analyst면 급여를 10% 인상
       - clerk이면 급여를 20% 인상
       - manager이면 급여를 30% 인상
       - president이면 급여를 40% 인상
       - salesman이면 급여를 50% 인상
       - 기타면 급여인상 없음 : 출력

위 항목을 복사하여 메모장에 붙여넣고 c:\Oracle폴더에 ex01.sql(모든문서)로 저장함

메모장에 저장한 ex01.sql을 cmd 창에서 불러옴

l을 치면 작성한 내용을 보여줌

; 을 누르면 재실행

= 대신 비교연산자 다른거 작성하여 응용한다

Decode

decode(lower(job), .... 으로 작성

그룹함수

count

NULL이 아닌 값을 리턴한다(NULL은 전체 데이터 개수에서 뺌) - 개별 데이터 개수 리턴때 자주 사용

전체 데이터 개수를 리턴할때 자주 사용

sum

전체 직원 salary 총합

30번 부서의 총 salary 총합

avg

commissin에 대한 평균 (null값 포함)

commission에 대한 평균 (null값 제외)

null값을 0으로 치환한 후 평균 리턴

max, min

이미 ename에서 묶여버렸으므로 max값을 구할 수 없다.

복습
1. 사원 테이블의 사원명에서 2번째 문자부터 3개의 문자를 추출하시오.


2. 사원 테이블에서 입사일이 12월인 사원의 사번, 사원명 입사일을 검색하시오.

3. 다음과 같은 결과를 검색할 수 있는 SQL 문장을 작성하시오.

4. 다음과 같은 결과를 검색할 수 있는 SQL 문장을 작성하시오.

5. 사원 테이블에서 급여에 따라 사번, 급여, 등급을 검색하는 SQl 문장을 작성하시오. (HINT : CASE 함수 사용)

그룹 함수
group by

부서별 최고 급여액

부서별 직책별 salary

부서별 직책별 salary 합계

부서별 직책별 최소 salary

부서별 평균 급여

where 절의 조건은 단일행만 된다 그룹함수는 사용 안됨

Having

피벗 테이블

decode를 이용하여 전체 나열

group by를 이용하여 deptno 그룹별로 합침

부서별 합계를 넣기 위해 sum(sal) "부서별 합계"를 추가함

복습
1. 사원 테이블에서 최대 급여, 최소 급여, 전체 급여 합, 평균 급여를 검색하시오.


2. 사원 테이블에서 부서별 인원수를 검색하시오.


3. 사원 테이블에서 부서별 인원수가 6명 이상인 부서코드를 검색하시오.


4. 사원 테이블에서 급여가 높은 순서대로 등수를 부여하고자 한다. 다음과 같은 결과를 출력할 수 있는 SQL 문장을 작성하시오.
(Hint : Self Join, Non-Equi Join, GROUP BY, COUNT사용)

5. 사원 테이블로부터 부서명, 업무별 급여 합계를 계산하고자 한다. 다음과 같은 결과를 출력할 수 있는 SQL 문장을 작성하시오

 

반응형

'Web & Mobile > SQL' 카테고리의 다른 글

Lecture 16 - SQL(6)  (0) 2019.04.17
Lecture 15 - SQL(5)  (0) 2019.04.15
Lecture 14 - SQL(4)  (0) 2019.04.15
Lecture 13 - SQL(3)  (0) 2019.04.15
Lecture 11 - SQL(1)  (0) 2019.04.14

댓글