데이터베이스
관리시스템
저장소(실제 데이터가 존재)
* 데이터는 입력시 정확히 입력해야함(보안 / 백업 중요)
관리시스템
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 |
댓글