오라클에서 가장 많이쓰는 명령어인 select를 이번 글을 통해 한꺼번에 정리해보도록 하겠습니다.
select는 선택해서 조회하는 개념이라 간단하게만 살펴보고, 오라클에서 제공해주는 SCOTT계정과 HR계정을 통해 select를 사용해 실제 출력하는 화면을 보여드릴게요. 문제로 실습해 볼것들이 많으면 다음글에는 문제만 올리겠습니다.
먼저 제가 사용하는 개발툴은 Eclipse Mars.1 Release (4.5.1) / ApacheTomcat 8.0 / Oracle Database 11g Release Enterprise / SQL Developer 4.1.2 를 사용합니다.
■ Select 간단 정리
1. 용도 ▶ 데이터 검색, 칼럼을 가공 처리하여 조회 가능
2. 테이블의 전체 조회 ▶ select * from 테이블명;
3. 테이블내의 몇가지 칼럼조회 ▶ select 칼럼1, 칼럼2 from 테이블명;
4. 테이블내의 몇가지 칼럼중 특정 데이터만 조회 ▶ select 칼럼1, 칼럼2 from 테이블명 where 칼럼3="값"
5. 칼럼에 별칭(alias)을 붙여 조회
▶ select 칼럼1 "별칭1", 칼럼2 as "별칭2" , 칼럼 별칭3 from 테이블명;
( 3가지 방법이 있지만 , 공백이나 특수문자등이 있을땐 쌍따음표 꼭 사용 )
6. [distinct] 중복된 값 제거하고 조회
▶ select DISTINCT 칼럼1,칼럼2 from 테이블명;
( 반드시 select 옆에 위치해야 하며, 모든 칼럼에 적용되니 성능저하에 주의 )
7. [ || ] 연결 연산자 로 칼럼 붙여서 조회
▶ select 칼럼1 || 칼럼2 from 테이블명;
8. [order by]정렬기능
▶ 제일 마지막에… ORDER BY 칼럼명1 [asc /desc], 칼럼명2 [asc/desc] ( asc는 오름차순 / desc는 내림차순 )
9. 조건문 ▶ 기본문법…… where 칼럼1 연산자 주어진값
연산자 ▼
10. [group by] 특정 칼럼을 기준으로 한 그룹으로 묶어 합계,평균등을 조회
▶ select 칼럼1, 칼럼2, 칼럼3 from 테이블 group by 칼럼1;
ex) select seq, avg, sum from emp group by seq;
→ seq를 기준으로 emp 테이블의 평균과 합계를 그룹으로 묶어 조회
11. [having] 그룹으로 묶인 기준 칼럼이나 함수에 조건을 걸어 조회
▶ select 칼럼1, 칼럼2, 칼럼3 from emp group by 칼럼1 having 칼럼2 < 값;
ex) select seq, avg, sum from emp group by seq having sum > 3000;
→ seq를 기준으로 그룹이 된 값들 중에 합계가 3000이상인것을 조회
제가 알고있는 select의 기본문법을 적어봤습니다. 역시 이렇게 글로만 적어놓으니 한눈에 보기 불편한점이 많아 예제를 통해 시각적으로 편하게 이해할 수 있게 예제를 통해 정리해볼게요.
■ Select 예제로 공부해보기 (scott계정)
▲ Scott 계정으로 접속
▲ Scott 계정의 테이블중 EMP테이블
※ SCOTT 계정의 EMP 테이블
[ EMPNO = 번호 ] [ ENAME = 이름 ] [ JOB = 업무 ] [ MGR = 직속상사 ]
[ HIREDATE = 고용날짜 ] [ SAL = 월급 ] [ COMM = 커미션 ] [ DEPTNO = 부서]
글이 무작정 길어질것을 고려해 사진의 길이는 300px로 제한하겠습니다.
1 ▼ 직원들의 사번, 이름, 업무를 조회 2 ▼ 이 회사에 어떤 업무들이 있는지 조회
3 ▼ 급여가 많은 순으로 이름,부서코드,급여 조회
4 ▼ 급여가 3000 이상인 직원 사번,이름,부서 급여 조회
5 ▼ 급여가 1500이상 2500이하를 받는 직원의 이름,부서,업무를 조회
여기선 두가지방법으로 테스트 실습했습니다.
AND 조건연산자를 이용한 방법과 Beetween and 연산자를 이용한 방법입니다.
둘 다 출력되는 결과값은 같습니다.
제 개인적인 생각으로는 Beteen and 연산자를 사용하면
코딩의 속도를 빠르게 할 수 있겠네요.
6 ▼ 이름이 s로 시작하는 직원의 이름과 부서, 업무 조회
7 ▼ 1982년도에 입사한 직원의 이름과 부서, 입사일자를 조회
------------------------------------------------------------------------
8 ▼ 커미션을 받지 못하는 직원의 이름,업무,급여,커미션을 조회
9 ▼ 사번이 7092,7788,7566인 사원의 이름 업무, 급여, 입사일자를 조회
10 ▼ 같은 부서내에서 같은 업무를 하는 직원의 급여가 많은순으로 조회
■ Select 심화예제 9가지
1 ▼ 커미션이 급여보다 10% 이상 많은 직원의 이름, 급여, 커미션을 조회
2 ▼ 이름에 L자가 2개 있고, 부서가 30번이거나 관리자가 7782인 직원의 이름,부서,관리자 조회
3 ▼ 현재까지 근무한 근무일수를 몇주 / 몇일로 조회
4 ▼ 10번 부서 직원들 중 현재까지의 근무월수를 계산해서 조회
5 ▼ 30번 부서중에서 입사일자로부터 돌아오는 화요일을 계산해서 조회
6 ▼ 모든직원에 대해 입사한 달의 근무일수를 계산해서 조회
7 ▼ 업무가 analyst면 급여를 10%증가
clerk이면 급여를 15% 증가
manager이면 급여를 20% 증가시켜
이름 / 업무 / 급여 / 증가된급여를 조회
8 ▼ emp테이블에 등록되어 있는 인원수 / 커미션을받는 직원수
커미션의 평균 / 부서의 수 조회
8 ▼ 부서인원이 4명보다 많은 부서에 대해
부서번호 / 인원수 / 급여의 합을 조회
9 ▼ 각 년도별 인원수 / 최소급여 / 최대급여 / 평균급여 / 급여의합을 계산해서 최근 년도부터조회
▼ 관련글
2015/12/17 - 오라클〃[공부]1. 간단한 기초 정리
2015/12/17 - 오라클〃[공부]2. Oracle 기본 데이터 타입
2015/12/18 - 오라클〃[공부]3. DML / DDL / DCL 비교
2015/12/20 - 오라클〃[공부]5. Oracle 숫자 내장함수(Function)
2015/12/20 - 오라클〃[공부]6. Oracle 문자 내장함수
'프로그래밍 > DataBase' 카테고리의 다른 글
오라클〃[공부]8. Oracle 변환 내장함수 (0) | 2015.12.20 |
---|---|
오라클〃[공부]7. Oracle 날짜 내장함수 (0) | 2015.12.20 |
오라클〃[공부]6. Oracle 문자 내장함수 (0) | 2015.12.20 |
오라클〃[공부]5. Oracle 숫자 내장함수(Function) (0) | 2015.12.20 |
오라클〃[공부]3. DML / DDL / DCL 비교 (0) | 2015.12.18 |
오라클〃[공부]2. Oracle 기본 데이터 타입 (0) | 2015.12.17 |
오라클〃[공부]1. 간단한 기초 정리 (0) | 2015.12.17 |
오라클〃OracleServiceORCL 편하게 끄는 방법 (0) | 2015.12.17 |