06. SQL- 정렬을 이용한 자료검색
학습목표
1. ORDER BY절을 이용해서 검색 행을 정렬한다.
2. 다양한 방법으로 정렬을 수행한다.
3. 정렬을 이용해서 묶음 검색한다.
part 1. ORDER BY절을 이용해서 검색 행을 정렬한다.
정렬 검색
‐ ORDER BY : 지정된 컬럼을 대상으로 정렬을 수행한다.
‐ ASC는 오름차순 정렬, DESC는 내림차순 정렬을 지정한다.
.default : ASC ‐ 정렬대상인 컬럼이 여러 개인 경우 앞에 지정한 컬럼이 동일 한 값에 대해서 뒤에 지정 된 컬럼으로 정렬된다
‐ 정렬하지 않는 SELECT문의 출력 순서는 의미가 없다.
‐ 정렬 대상으로는 컬럼 이외에 다음의 것들이 사용 가능하다.
.별명, 수식, 검색 항목 순서
• 원칙 : RDB에서 행의 순서나 컬럼의 순서는 의미가 없다.
‐ 순서는 Application이다
part 2. 다양한 방법으로 정렬을 수행한다.
주의사항
part 3. 정렬을 이용해서 묶음 검색한다.
묶음 검색
• 업무별로 사원의 급여를 검색한다.
ORDER BY 업무에 defalut 값이 ASC여서 자동으로 오름차순 정렬로 나왔다.
• 부서별로 사원의 급여를 검색한다.
ORDER BY 부서번호에 defalut 값이 ASC여서 자동으로 오름차순 정렬로 나왔다. 그러나 sal은 DESC인 내림차순 정렬을 사용하여 부서번호마다. 내림차순으로 정렬되었다.
의미 없는 검색
‐ 결과에 ORDER BY절의 의미가 없다.
• 카디널리티(Cardinality)
‐ 중복 정도 ‐ 성별 : 카디널리티가 낮다.
‐ 이름 : 카디널리티가 높다.
실습
1. 성적순으로 학생의 이름을 검색한다.
SELECT sno, sname, avr
FROM student
ORDER BY avr DESC;
2. 학과별 성적순으로 학생의 정보를 검색한다.
SELECT *
FROM student
ORDER BY major, avr DESC;
3. 학년별 성적순으로 학생의 정보를 검색한다.
SELECT *
FROM student
ORDER BY syear DESC, avr DESC;
4. 학과별 학년별로 학생의 정보를 성적순으로 검색한다.
SELECT *
FROM student
ORDER BY major, syear DESC, avr DESC;
5. 학점 순으로 과목 이름을 검색한다.
SELECT cno, cname, st_num
FROM course
ORDER BY st_num DESC;
6. 각 학과별로 교수의 정보를 검색한다.
SELECT *
FROM professor
ORDER BY section;
7. 지위별로 교수의 정보를 검색한다.
SELECT *
FROM professor
ORDER BY orders DESC;
8. 각 학과별로 교수의 정보를 부임일자 순으로 검색한다.
SELECT *
FROM professor
ORDER BY section, hiredate;
9. 급여가 10% 인상된 경우 부서별로 각 사원의 연봉을 연봉순으로 검색한다.
SELECT eno, ename, sal*1.1, NVL(comm,0), ((sal*1.1)+NVL(comm,0)) 연봉, dno
FROM emp
ORDER BY dno, 연봉 DESC;
10. 보너스가 100% 인상된 경우 업무별로 각 사원의 연봉을 연봉순으로 검색한다.
SELECT eno, ename, sal, NVL(comm*2,0), (sal+NVL(comm*2,0)) 연봉, dno
FROM emp
ORDER BY dno, 연봉 DESC;