티스토리 뷰
2. 데이터 제한 및 정렬
데이터 제한 및 정렬 어떠한 조건에 해당하는 데이터만 뽑아내고 싶을 때에는 Where 절을 사용한다.
예시) emp 테이블에서 직업이 SALESMAN인 사원들의 이름과 월급을 출력
select ename, sal
from emp
where sal='SALESMAN';
문자와 날짜는 양쪽에 싱글 쿼테이션 마크(' ')를 둘러줘야 한다.
조건절에 사용할 수 있는 연산자는 크게 4가지 종류가 있다.
- 산술 연산자: *, /, +, -
- 비교 연산자: >, <, >=, <=: =, !=, <>, ^= (뒤에 3가지는 '같지 않다'라는 뜻)
- 논리 연산자: and, or, not
- 기타 연산자: Between .. and , Like, in, is null
대부분 3가지의 연산자는 쉽게 적용할 수 있으므로 기타 연산자에 대하여 알아보자
Between .. and : 특정 범위(사이값)에 있는 데이터만 불러오기
Select ename, sal
From emp
where sal between 1000 and 3000;
Like
Like는 보통 아래 키워드와 함께 사용된다.
- '%' : 이 자리에 뭐가 와도 관계없다. 자리 수 상관 없음(와일드 카드)
- '_' : 이 자리에 뭐가 와도 관계없음, 한 자리수를 의미한다.
이러한 특수문자를 사용한 조건은 나중에 많은 언어에서 사용하고 있는 정규식(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
- 데이터 분석
- 하둡설치
- 하둡
- hadoop2.7
- hadoop 2.7 install
- hadoop
- Big Data
- 하둡설치가이드
- hadoop install
- 하둡2.7
- 하둡 설치 가이드
- hadoop setup
- Data Analysis
- data
- 빅데이터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |