복합 조건 : WEHRE 절에 AND, OR를 이용해 여러 조건들을 지정할 수 있다. ORDERBY 절을 이용해서 필요한 자료들이 먼저나올 수 있도록 정렬 작업을 할 수 있다. |
1. AND로 조건 조합하기
-WHERE절에 여러 조건을 지정 할 때
좌우에 있는 두 조건을 모두 만족하는 자료만 선택하기 위해 AND 연산자로 조건을 결합함
-AND연산을 집합으로 표현하면 교집합과 같음
-FW 포지션 선수 중 키가 190보다 큰 선수정보를 조회하고자 한다면 (두 개의 교집합을 구할 때)
position = 'FW' 조건과 height > 190 조건 모두 만족하는 데이터를 조회해야 한다.
이럴때 AND연산자를 사용해서 조건을 결합함.
2. OR로 조건 조합하기
- WHERE절에 여러 조건을 지정할 때
좌우에 있는 두 조건 중 하나만 만족하더라도 자료를 추출할 수 있도록 OR연산자로 조건을 결합한다.
-OR연산을 집합으로 표현하면 합집합과 같음
- FW포지션 선수들 또는 포지션에 관계없이 키가 190 보다 큰 선수정보를 조회하고자 한다면
position = 'FW' 조건과 height > 190 조건 중 하나의 조건이라도 만족하는 데이터를 추출 해야 하므로 OR연산자를 사용해서 조건을 결합함
3. NOT연산자
NOT연산자는 단독으로 사용할 수 없고 조건 앞에 붙어서 조건 값 결과가 TRUE이면 FALSE를, FALSE이면 TRUE를 반환함
- WHERE NOT height >170으로 사용한 경우 키가 170보다 작거나 같은 자료가 선택됨
(WHERE height <= 170과 동일)
- NOT은 보통 IN, BETWEEN, LIKE, IS NULL 등의 조건과 같이 사용되는 경우가 많음
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 '%문자열%' | 해당 문자열을 포함하지 않는다. ('%문자열%' : 앞뒤에 뭐가와도 입력된문자열만 들어간것을 추출) |
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보다 큰애들 중에서 작은애들 순서로 나오는 것 확인할 수 있다.
7. 내림차순 정렬
- 내림차순 (DESENDING) 정렬 수행 시 DESC키워드를 지정해야 함.
- 숫자, 문자, 날짜 값을 큰 값부터 먼저 표기
- NULL값은 내림차순 정렬에서 제일 처음에 표시됨
- NULL값은 NULLS FIRST나 NULLS LAST키워드를 사용하여 순서를 변경할 수 있음
예제)
8. 여러 칼럼을 이용해서 정렬하기
-ORDER BY절에 여러 칼럼을 이용해 정렬 작업을 수행 할 수 있음
-ORDER BY절에 콤마로 구분하여 여러 컬럼을 사용함
-여러 컬럼을 사용해 정렬하는 경우 각 칼럼에 오름차순, 내림차순을 개별적으로 지정함
예제 1)
이럴 경우에는 deptNo칼럼이 내림차순으로 먼저 정렬이 된 후 그 정렬된 값 안에서 SAL*2이 작은 값부터 큰 값으로 정렬되어 조회되는 것을 확인할 수 있습니다.
예제 2)
SELECT절에 칼럼이 없어도 조회 조건에 hiredate라는 칼럼으로 조회 시 잘 조회되는 것을 확인할 수 있다.
잘 조회되었는지 확인해보려면 SELECT에 hiredate라는 칼럼을 추가 후 다시 조회해도 값이 똑같은 순서로
조회되는 것을 확인할 수 있다.
예제 3)
desc 하게 되면 null값이 있는 경우엔 null 값이 제일 앞에 나오는 것을 확인할 수 있습니다.
Asc일 때는 null값이 제일 마지막에 조회된다.
하지만 이때, null값만 제일 앞으로 가져오고 싶을 때 : nulls first 사용해주면 된다.
null값만 제일 뒤로 보내고 싶을 때 : 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 |