SQL - ② 데이터 조회하기 (DMCCONET)

hoegon kim·2022년 10월 24일
0

SQL-PLUS

목록 보기
3/17
post-thumbnail

데이터 조회하기

학습내용

  • 1.특정 조건의 데이터만 조회하는 WHERE 조건
  • 2.정렬을 위한 ORDER BY절

학습목표

  • WHERE 절로 원하는 조건에 맞는 데이터만 검색할 수 있습니다.
  • ORDER BY 절로 테이블을 일정한 순서로 나열할 수 있습니다.

1.특정 조건의 데이터만 조회하는 WHERE 조건

  • WHERE 절은 테이블에 저장된 데이터 중에서 원하는 데이터만 선택적으로 추출하기 위해서 사용됩니다.


WHERE 비교연산자

예제

코드 설명 : 컬럼이 전체이고 테이블이 employee 에서
컬럼에 조건이 dno라는 이름의(부서번호) 10인 것만 추출하여라


WHERE 문자 데이터 조회

  • 문자 상수임을 알리기 위해서 ‘SCOTT’를 작은따옴표로 묶어주면 오류가 발생하지 않고 사원 정보를 검색하는 것을 확인할 수 있습니다.

코드 설명 : 전체 테이블의 정보를 다가져오고
WHERE 의 ename 중 ename 가 SCOTT 인사람의 데이터를 가져와라

문자면 ""를 사용하여 데이터를 추출하고
숫자면 ""가 없이 데이터를 추출한다.


WHERE 날짜 데이터 조회

날짜 상수 역시 문자 상수와 마찬가지로 작은따옴표로 묶어 주어야 한다.


WHERE 논리 연산자

오라클에서 사용가능한 논리 연산자 AND나 OR나 NOT가 있습니다.


AND 연산자

  • AND 연산자는 두 가지 조건을 모두 만족해야 할 경우에 사용합니다. 즉, AND 연산자는 두 조건이 모두 만족할 경우에만 결과가 참이고, 조건 중 하나라도 만족하지 않으면 결과가 거짓입니다.

예제

다음은 10번 부서 소속인 사원(dno=10)들 중에서 직급이 MANAGER인 사원(job='MANAGER')을 검색하기 위해서 AND 연산자를 사용한 예입니다.


OR 연산자

  • OR 연산자는 두 조건에 모두 만족하지 않을 경우는 결과가 거짓이고 제시한 조건에 한 가지라도 만족하면 결과가 참입니다.

예제

다음은 10번 부서에 소속된 사원(dno=10)이거나 직급이 MANAGER인 사원(job='MANAGER')을 검색하기 위해서 OR 연산자를 사용한 예입니다.


NOT 연산자

다음은 NOT 연산자가 논리값에 의해서 어떤 결과가 출력되는지를 나타내는 표입니다.

예제

10번 부서에 소속된 사원만 제외하고 나머지 사원의 정보를 출력하려면 부서번호가 10번인 사원을 조회하기 위한 조건 앞에 NOT을 붙이면 됩니다.


WHERE BETWEEN AND 연산자

BETWEEN AND 연산자는 특정 칼럼의 데이터 값이 하한값(A)와 상한값(B) 사이에 포함되는 로우를 검색하기 위한 연산자입니다.

예제

다음은 BETWEEN AND 연산자를 사용하여 급여가 1000에서 1500 사이인 사원을 출력한 예입니다.


WHERE IN 연산자

IN 연산자는 특정 칼럼의 값이 A, B, C 중에 하나라도 일치하면 참이 되는 연산자입니다.

예제

다음은 커미션이 300이거나 500이거나 1400인 사원을 검색하기 위해서 IN 연산자를 사용한 예입니다.


WHERE LIKE 연산자와 와일드카드

LIKE 연산자는 칼럼에 저장된 문자상수 중에서 LIKE 연산자에서 지정한 문자패턴과 부분적으로 일치하면 참이 되는 연산자로 이 씨 성을 갖는 사람을 찾거나 거주지가 서울인 사람을 찾는 것과 같이 칼럼에 저장된 데이터의 일부만 일치하더라도 조회가 가능하도록 하기 위해서 사용합니다.

라이크연산자의 pattern 은 와일드카드가 적용되며,
pattern에는 두 가지 와일드카드가 사용되며 이 와일드카드 덕분에 임의의 문자 또는 문자열을 포함한 값을 찾을 수 있습니다.

와일드카드(%) 사용하기

사원 테이블 중 F로 시작 하는 이름을 갖는 사원을 검색하기 해서는 검색하고자 하는 값을 정확히 모를 경우 즉, 특정 문자 포함되기만 하고 그 이전이나 이후에 어떤 문자가 몇 개가 오든지 상관없다는 의미를 표현하기 위해서는 LIKE 연산자와 함께 ‘%’를 사용해야 합니다.

와일드카드(_) 사용하기

'_’ 기호는 단 한 문자에 대해서만 와일드카드 역할을 하기 때문에 ‘_’를 기술한 위치에 어떤 문자가 오든 상관없다는 의미로 사용됩니다. 그렇기 때문에 ‘_’ 기호는 사용되는 위치와 순서에 중요합니다.


WHERE IS NULL과 IS NOT NULL

  • 어떤 컬럼을 NULL 즉, 모르는 값과 같다(=)라는 것은 의미상으로 말이 되지 않기 때문에 = 대신 IS NULL 연산자를 사용해야 합니다.

  • IS NULL 연산자 역시 조건절에 사용되면 대상 컬럼과 연산자, 비교할 값 세부분으로 구성되어야 합니다.

  • 칼럼 값이 NULL인지 조회합니다!

칼럼이 NULL 아닌 자료만 추출하면 되므로 IS NOT NULL 연산자를 사용하면 됩니다.

2.정렬을 위한 ORDER BY절

  • 정렬이란 크기 순서대로 나열하는 것을 의미합니다.

오름차순(ascending) 정렬 방식

  • 작은 것이 위에 출력되고 아래로 갈수록 큰 값이 출력

내림차순(descending) 정렬 방식

  • 큰 값이 위에 출력되고 아래로 갈수록 작은 값이 출력

정렬 방식에 여러 가지 조건 제시
로우를 정렬하기 위해서는 SELECT 문에 ORDER BY 절을 추가하고 어떤 컬럼을 기준으로 어떤 정렬을 할 것인지를 결정해야 합니다.


오름차순(ascending) 정렬 방식 ASC

오름차순 정렬은 작은 값부터 큰 값으로 정렬하는 것을 의미합니다.(예:1~9, ‘A’~‘Z’) 이를 위해서는 ASC를 칼럼 다음에 기술해야 하는데 만일 생략하게 되면 디폴트로 ASC로 지정되어 있기 때문에 오름차순으로 출력됩니다.

다음은 급여 컬럼을 기준으로 오름차순으로 정렬한 예입니다.

정렬방식을 지정하지 않은 경우에는 디폴트로 오름차순으로 정렬합니다.


내림차순(descending) 정렬 방식 DESC

내림차순 정렬은 큰 값부터 작은 값으로 정렬을 하는 것이다.(예:9~1, Z~A)

이번에는 급여를 많이 받는 사람부터 적게 받는 사람 순으로 순차적으로 출력해 봅시다.

큰 값이 위에 출력되고 아래로 갈수록 작은 값이 출력되도록 하려면 내림차순(descending) 으로 정렬해야 하기 때문에 칼럼 다음에 DESC를 기술해야 합니다.


정렬 방식에 여러 가지 조건 제시

급여를 많이 받는 사람부터 적게 받는 사람 순으로 순차적으로 출력하는 결과 화면을 살펴보면 동일한 급여를 받는 사람이 존재합니다.

급여가 같은 사람이 존재할 경우 이름의 철자가 빠른 사람부터 출력되도록 하려면 정렬 방식을 여러 가지로 지정해야 합니다.

0개의 댓글