티스토리 뷰

SQL

[SQL] 2. 데이터 제한 및 정렬

superkong1 2018. 1. 20. 08:44
반응형

2. 데이터 제한 및 정렬

데이터 제한 및 정렬 어떠한 조건에 해당하는 데이터만 뽑아내고 싶을 때에는 Where 절을 사용한다.

예시) emp 테이블에서 직업이 SALESMAN인 사원들의 이름과 월급을 출력 

select ename, sal 

from emp 

where sal='SALESMAN'; 

문자와 날짜는 양쪽에 싱글 쿼테이션 마크(' ')를 둘러줘야 한다.

조건절에 사용할 수 있는 연산자는 크게 4가지 종류가 있다.

  1. 산술 연산자: *, /, +, -
  2. 비교 연산자: >, <, >=, <=: =, !=, <>, ^= (뒤에 3가지는 '같지 않다'라는 뜻)
  3. 논리 연산자: and, or, not
  4. 기타 연산자: Between .. and , Like, in, is null

대부분 3가지의 연산자는 쉽게 적용할 수 있으므로 기타 연산자에 대하여 알아보자


Between .. and : 특정 범위(사이값)에 있는 데이터만 불러오기

Select ename, sal 

From emp 

where sal between 1000 and 3000; 

Like

Like는 보통 아래 키워드와 함께 사용된다.

  1. '%' : 이 자리에 뭐가 와도 관계없다. 자리 수 상관 없음(와일드 카드)
  2. '_' : 이 자리에 뭐가 와도 관계없음, 한 자리수를 의미한다.

이러한 특수문자를 사용한 조건은 나중에 많은 언어에서 사용하고 있는 정규식(Regular Expression)으로 이어진다.

예) 이름의 두번째 철자가 M인 사원들의 이름을 확인 

Select ename 

from emp 

where ename like '_M%'; 

하지만 이름에 %가 있는 경우에는 어떻게 검색할까?

이름에 '%'가 들어간 데이터를 한 건 입력해준다.

INSERT INTO EMP(empno, ename, sal) values( 1234, 'A%B', 3400);

 <추가로 들어간 A%B 직원의 데이터>


한 건의 데이터가 추가로 들어갔다. 

이때 A%B의 데이터만을 보고 싶다면 아래와 같이 입력한다. 

Select ename 

from emp 

where ename like '_m%%' escape 'm'; 

escape 'm': m 다음에 나오는 것은 와일드카드(%)가 아니라 특수문자(%)이다. 

→ m은 임의로 지정한것, 다른 알파벳을 넣어도 상관없음

in

in은 여러가지 조건을 and, or를 쓰지 않고 편하게 출력할 수 있게 한다. 

Select ename, job 

from emp 

where job not in('SALESMAN', 'ANALYST'); 

in 뒤에 특정 조건들을 넣어준다. 단, 한 컬럼에 속하는 조건만 적어준다.

Is null

is null은 데이터가 null인 경우를 확인해야할 때 사용한다. 

Select ename, comm 

from emp 

where comm is null; 

comm(커미션)이 null인 데이터만 출력한다. 0과 null은 다른 것이다. 

0은 데이터가 있지만, null은 데이터가 아에 없는것

어느 정도 조건문인 where절을 정리했다. 

이제 데이터를 정렬하는 order by 절에 대하여 알아보자.


order by

데이터를 정렬하는 절이며, 

order by 컬럼명 정렬순서 형태로 작성한다.

정렬순서는 ascending: 오름차순으로 정렬(기본 세팅 - 입력 시 asc까지 입력) 

descending: 내림차순으로 정렬(desc까지 입력)

가장 중요한 포인트는

Order by 절은 select 문에서도 맨 마지막 절에서 사용되고 실행 또한 맨 마지막에 실행된다.

는 것이다.

예시) 명령문 좌측에 붙어있는 것은 SQL문의 실행 순서

3 Select ename, sal 

1 from emp 

2 where job='SALESMAN' 

4 order by sal desc;


from emp로 데이터를 불러온 후 조건문인 

where job='SALESMAN'을 인식하여 데이터를 이에 해당하는 것만 분리, 

그 중 Select ename, sal를 통해 원하는 데이터만 출력할 준비를 하고 

마지막으로 출력하는 기준 order by sal desc 을 확인하여 재정렬 후 출력한다. 

위 SQL문 실행 순서를 보면 알 수 있듯이, 

where절은 select절 이전에 실행되기 때문에 

select절에서 사용하는 컬럼명 변경 및 축약(as - 참고)은 

where절에서 적용되지 않는다.



마지막 예시 문제 

 ▼ emp 테이블에서 직업을 ABCD로 정렬하고 최근에 입사한 직원부터 출력 

 Select ename, job, hiredate 

 from emp 

 order by job asc, hiredate desc; 


이제 오늘 배운것들만 잘 활용하면 어느정도 원하는 데이터만 구분하여 가져올 수 있다.


=================이 글은 Markdown을 활용해 작성하였습니다=================

반응형

'SQL' 카테고리의 다른 글

[SQL] 6. 그룹함수(복수행함수)  (0) 2018.01.23
[SQL] 5. 일반함수  (0) 2018.01.22
[SQL] 4.날짜함수 & 변환함수  (0) 2018.01.21
[SQL] 3. 문자함수 & 숫자함수  (0) 2018.01.20
[SQL] 1. select 문을 사용하여 데이터 검색  (0) 2018.01.18
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함