[SQL] 정렬 & 연산

가비·2020년 12월 19일
0

[SQL]

목록 보기
2/13

정렬

ORDER BY

SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명

# 검색 조건이 필요없는 경우 WHERE 구 생략 가능
SELECT 열명 FROM 테이블명 ORDER BY 열명

# 오름차순(기본값, 생략가능) 
# ❕ 데이터베이스 제품에 따라 기본값이 다르므로 주의
SELECT 열명 FROM 테이블명 ORDER BY 열명 ASC

# 내림차순
SELECT 열명 FROM 테이블명 ORDER BY 열명 DESC
  • 수치형은 대소관계, 문자열형은 사전식 순서에 의해 결정된다.
  • ORDER BY는 테이블에 영향을 주지 않는다.
    👉 SELECT 명령은 데이터를 검색하는 명령이기 때문에 데이터를 참조만 할 뿐 변경 하지 않는다.

복수 열 정렬

# 정렬 순서는 지정한 열명의 순서를 따른다.
SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명1 [ASC|DESC], 열명2 [ASC|DESC]

NULL 값 정렬

  • 가장 먼저 표시되거나 가장 나중에 표시된다.
  • 표준 SQL에서도 규정되어 있지 않아 제품에 따라 기준이 다르다.
    👉 MySQL의 경우 가장 작은 값으로 취급한다.

✔️ 같은 값을 가진 행이나 ORDER BY 구를 생략할때 순서는 어떻게 정해질까?

  • 순서는 일정하지 않다.
    👉 데이터베이스 서버 상황에 따라 어떤 순서로 행을 반환할지 결정된다.
    👉 언제나 같은 순서의 결과를 얻고 싶다면 반드시 ORDER BY 구로 순서를 지정해야 한다.

결과 행 제한

LIMIT

❗️ 표준 SQL이 아닌 MySQLPostgreSQL에서 사용하는 문법이다.

# OFFSET (기본값 0, 생략가능) 
SELECT 열명 FROM 테이블명 LIMIT 행수 OFFSET 시작행
# MySQL과 PostgreSQL 이외 데이터베이스에서는 👇
SELECT TOP 행수 열명 FROM 테이블명

# Oracle에서는 👇
ex. SELECT 열명 FROM 테이블명 WHERE ROWNUM <= 3;

수치 연산

+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지 # 데이터베이스 제품에 따라 % 대신 MOD 함수 사용.

SELECT 구 연산

# 콤마(,)로 구분하여 복수 식 지정 가능
SELECT *,FROM 테이블명
ex. SELECT *, 열명 * 열명 FROM 테이블명

# 결과값 열명 재지정
# AS 생략 가능
SELECT *, 열명 * 열명 AS 별명 FROM 테이블명
  • 콤마(,)로 구분하여 복의 식을 지정할 수 있으며 각각의 식에 별명을 붙일 수 있다.
  • 한글이나 숫자로 지정하는 경우 더블쿼트("")로 둘러싸서 지정한다. (MySQL의 경우 백쿼트)
    👉 더블쿼트로 둘러싸서 지정할 경우 예약어 사용 가능

WHERE 구 연산

SELECT *,FROM 테이블명
-> WHERE 식 조건;

✔️ 별명으로 검색하지 않는 이유

👉 데이터베이스 서버 내부에서 WHERE 구 -> SELECT 구 순서로 처리되는 데이터베이스가 많기 때문에 별명 열은 존재하지 않는다는 에러가 발생한다.
즉, SELECT 구에서 지정한 별명은 WHERE 구 안에서 사용할 수 없다.

NULL 값 연산

  • C나 PHP 같은 프로그래밍 언어와 달리 SQL에서는 NULL 값이 0으로 처리되지 않기때문에 결과는 NULL이 된다.

ORDER BY 구 연산

SELECT *,FROM 테이블명 ORDER BY# SELECT 보다 나중에 처리되기 때문에 별명 사용 가능
SELECT *,FROM 테이블명 ORDER BY 별명 

함수

함수명(인수1, 인수2)

ex.
# 10 % 3 -> 1
# MOD(10, 2) -> 1

ROUND

# 반올림
SELECT 열명, ROUND(열명) FROM 테이블명

# 반올림 자릿수 지정 (기본값 0, 생략가능)
# 1로 지정할 경우 둘째 자리에서 반올림 
SELECT 열명, ROUND(열명, 자리수) FROM 테이블명

0개의 댓글