1. 성질
- 정렬
- 오름차순, 내림차순 정렬 순서 전달 가능( 기본 : 오름차순 )
- 정렬을 수행하지 않으면 데이터의 입력 순서대로 출력
- order by 절에 컬럼을 나열하여 1차정렬, 2차정렬, 3차정렬 ... 가능
- 각 컬럼별로 정렬순서 전달 가능(asc: 오름차순 | desc: 내림차순)
예제) student 테이블에서 모든 학생의 이름, 학년, 키를 출력하되, 학년별로 키가 큰 순서대로 출력(단, 4학년부터 출력)
select name, grade, height
from student
order by grade desc, height desc ;
출력하면
다음과 같은 결과를 얻을 수 있다.
2. 컬럼 별칭을 사용한 정렬
2-1) 별칭 또는 컬럼명을 섞어서 정렬해도 가능하다.
select name, grade as 학년, height as 키
from student
order by 학년 desc, 키 desc ;
select name, grade as 학년, height as 키
from student
order by grade desc, 키 desc ;
둘 다 다음과 같은 동일한 결과를 얻을 수 있다.
2-2) 컬럼별칭의 쌍따옴표 전달
select name, grade as "grade!", height as 키
from student
order by grade! desc, 키 desc ; -- 에러 발생 : 이유는 별칭의 order by 뒤에 grade! 양 옆에 쌍따옴표가 없기때문
select name, grade as "grade!", height as 키
from student
order by "grade!" desc, 키 desc ; -- 정상출력(반드시 쌍따옴표와 함께 전달)
select name, grade as grade, height as "키"
from student
order by grade desc, 키 desc ; -- 정상출력(쌍따옴표 생략 가능)
-- 키는 단독으로 쓸 수 있었기 때문에 반드시 쌍따옴표 가져갈 필요는 없다.
참고) 문자의 정렬 규칙 : 맨 왼쪽부터 비교한다.
3. distinct
- 중복행을 제거하여 한 번만 출력하기 위해 사용
- select 절 바로 뒤에 단 한번만 사용
select distinct deptno
from emp;
다음과 같이 출력
select distinct deptno, job
from emp
order by deptno, job;
[ 연습문제 ]
1. EMP 테이블에서 가장 최근에 입사한 순으로 사원번호, 이름, 업무, 급여, 입사일자, 부서번호를 출력하여라.
sol)
select empno, ename, job, sal, hiredate, deptno
from EMP
order by hiredate desc;
2. EMP 테이블에서 (JOB이 PRESIDENT이고 급여가 1500 이상)이거나 업무가 salesman인 사원의 사원번호, 이름, 업무, 급여를 출력하여라.
sol)
select empno, ename, job, sal
from EMP
where (job = 'PRESIDENT' and sal>=1500) or job = 'SALESMAN' ;
3. EMP 테이블에서 급여가 1100 이상이거나, 이름이 M으로 시작하지 않는 사원의 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라.
sol)
select empno, ename, job, sal, hiredate, deptno
from EMP
where sal>=1100 or ename not like 'M%';
'SQL' 카테고리의 다른 글
6. 문자열 함수(2) (2) | 2024.10.16 |
---|---|
5. 문자열 함수(1) (0) | 2024.10.15 |
4. 연결연산자(||), 논리연산자 (4) | 2024.10.15 |
2. 계정 접속과 권한 (1) | 2024.10.15 |
1. Select ~ From (2) | 2024.10.14 |