본문 바로가기
데이터베이스/기초 SQL 입문

복합조건 지정 및 데이터 정렬

by 스키피땅콩버터 2020. 9. 6.
반응형

복합 조건 :  WEHRE 절에 AND, OR를 이용해 여러 조건들을 지정할 수 있다.

ORDERBY 절을 이용해서 필요한 자료들이 먼저나올 수 있도록 정렬 작업을 할 수 있다.

 

1. AND로 조건 조합하기

-WHERE절에 여러 조건을 지정 할 때 

좌우에 있는 두 조건을 모두 만족하는 자료만 선택하기 위해  AND 연산자로 조건을 결합함

 

-AND연산을 집합으로 표현하면 교집합과 같음

 

-FW 포지션 선수 중 키가 190보다 큰 선수정보를 조회하고자 한다면 (두 개의 교집합을 구할 때) 

position = 'FW' 조건과 height > 190 조건 모두 만족하는 데이터를 조회해야 한다.

이럴때 AND연산자를 사용해서 조건을 결합함.

 

[pw포지션 선수중 키가 190보다 큰 선수이름, 팀id, 포지션, 키 조회]

 

 

2. OR로 조건 조합하기

 

- WHERE절에 여러 조건을 지정할 때 

좌우에 있는 두 조건 중 하나만 만족하더라도 자료를 추출할 수 있도록 OR연산자로 조건을 결합한다.

 

-OR연산을 집합으로 표현하면 합집합과 같음

 

- FW포지션 선수들 또는 포지션에 관계없이 키가 190 보다 큰 선수정보를 조회하고자 한다면

position = 'FW' 조건과 height > 190 조건 중 하나의 조건이라도 만족하는 데이터를 추출 해야 하므로 OR연산자를 사용해서 조건을 결합함

 

FW 포지션 선수 또는 키가 190보다 큰 선수이름, 팀id, 포지션, 키 조회

 

 

 

3. NOT연산자

 

NOT연산자는 단독으로 사용할 수 없고 조건 앞에 붙어서 조건 값 결과가 TRUE이면 FALSE를, FALSE이면 TRUE를 반환함

 

- WHERE NOT height >170으로 사용한 경우 키가 170보다 작거나 같은 자료가 선택됨

(WHERE height <= 170과 동일)

 

- NOT은 보통 IN, BETWEEN, LIKE, IS NULL 등의 조건과 같이 사용되는 경우가 많음

키가 170 에서 190사이에 해당 되지 않는 선수들만 선수이름, 팀id, 키조회

 

NOT연산자

연산자 의미
NOT 칼럼명 = {값} ~와 같지않다.
NOT 칼럼명 > {값} ~보다 크지않다. (작거나 같다)
NOT 칼럼명 < {값} ~보다 작지 않다.(크거나 같다)
NOT BETWEEN a AND b a와 b의 값 사이에 있지 않다.(a,b값을 포함하지 않는다.)
NOT IN (a,b,c,d) 목록(a,b,c,d)에 지정된 값과 일치하지 않는다.
NOT LIKE '%문자열%' 해당 문자열을 포함하지 않는다.
('%문자열%'  : 앞뒤에 뭐가와도 입력된문자열만 들어간것을 추출)

null이 아닌 애들만 뽑아내는 쿼리 예제

 

4. 논리 연산자 우선순위

-  WHERE 절에 AND, OR, 연산자를 조합해서 사용하는 경우에는 AND부터 처리하고 OR조건을 처리함

- AND 연산자 우선순위가 OR보다 높음

- 괄호 ()를 사용해서 순위를 강제로 변경 할 수 있음

 

1. position = 'MF 이고,  team_id가 'K01'인것 과 position이 GK인 애들 모두 조회

(position ='GK'은  team_id와 상관이없다.)

2. position ='GK'인 것과 position = 'MF'인 두 개 모두 다 team_id가 'K01'일 때만 나오게 하는 것

 

 

5. 데이터 정렬

-ORDER BY 절을 사용하여 데이터를 정렬된 형태로 조회할 수 있다.

-ORDER BY를 지정하지 않으면 DB내부에 저장된 순서대로 표시됨

-ORDER BY 절은 항상 SELECT 문의 마지막에 작성함

-ORDER BY 절에는 컬러명, 표현식, SELECT, 별칭 절에 나온 열의 순서를 나타내는 숫자를 지정할 수 있다.

-DISTINCT를 사용하지 않은 경우, SELECT 절에 없는 칼럼 기준으로 정렬할 수 있음.

 

6. 오름 차순 정렬

- 기본 정렬 순서는 오름차순 (ASCENDING) 정렬이다. ASC

("ORDER BY 칼럼" 뒤에 아무것도 안 붙여주면 기본값으로 오름차순으로 정렬됩니다.)

- 숫자 값은 작은 값부터, 날짜 값은 과거 값부터, (과거 -> 미래), 문자 값은 영문자 순으로 표시됨

- NULL값은 오름 차순 정렬에서 마지막에 표시됨

 

예제)

키가 190보다 큰 선수들 이름, 팀id, 키 조회/결과는 키가 작은 선수부터 나오도록 정렬

->키가 190보다 큰애들 중에서 작은애들 순서로 나오는 것 확인할 수 있다.

 

 

7. 내림차순 정렬

- 내림차순 (DESENDING) 정렬 수행 시 DESC키워드를 지정해야 함.

- 숫자, 문자, 날짜 값을 큰 값부터 먼저 표기

- NULL값은 내림차순 정렬에서 제일 처음에 표시됨

- NULL값은 NULLS FIRST나 NULLS LAST키워드를 사용하여 순서를 변경할 수 있음

 

예제)

키가 190보다 큰 선수들 이름, 팀id, 키 조회 / 결과는 키가 큰 선수부터   나오도록 정렬 

 

8. 여러 칼럼을 이용해서 정렬하기

-ORDER BY절에 여러 칼럼을 이용해 정렬 작업을 수행 할 수 있음

-ORDER BY절에 콤마로 구분하여 여러 컬럼을 사용함

-여러 컬럼을 사용해 정렬하는 경우 각 칼럼에 오름차순, 내림차순을 개별적으로 지정함

 

예제 1)

정렬 조건 두개 넣었을때

이럴 경우에는 deptNo칼럼이 내림차순으로 먼저 정렬이 된 후 그 정렬된 값 안에서 SAL*2이 작은 값부터 큰 값으로 정렬되어 조회되는 것을 확인할 수 있습니다.

 

 

예제 2)

SELECT절에 칼럼이 없어도 조회 조건에 hiredate라는 칼럼으로 조회 시 잘 조회되는 것을 확인할 수 있다.

잘 조회되었는지 확인해보려면 SELECT에 hiredate라는 칼럼을 추가 후 다시 조회해도 값이 똑같은 순서로 

조회되는 것을 확인할 수 있다.

 

예제 3)

desc 하게 되면 null값이 있는 경우엔 null 값이 제일 앞에 나오는 것을 확인할 수 있습니다.

Asc일 때는 null값이 제일 마지막에 조회된다.

 

하지만 이때, null값만 제일 앞으로 가져오고 싶을 때 : nulls first 사용해주면 된다.

nulls first조회 결과

 

 

null값만 제일 뒤로 보내고 싶을 때 : nulls last 

nulls last 조회 결과

 

예제 4)

칼럼명 대신에 숫자로 대신하여 조회할 수도 있다.

여기서 team_id는 오름차순 정렬, height는 내림차순 정렬 따로따로 정렬을 준 것이다.

 

'데이터베이스 > 기초 SQL 입문' 카테고리의 다른 글

변환 함수  (0) 2020.09.13
날짜 연산 및 날짜 함수  (0) 2020.09.11
문자 숫자 함수  (0) 2020.09.06
SQL문 작성 규칙 및 SELECT사용법  (0) 2020.09.01
데이터베이스의 개념 및 SQL정의  (0) 2020.08.30