결과 행 제한하기 - LIMIT

 

1. 행수 제한

LIMIT구는 표준 SQL은 아니다.

MySQL과 PostgreSQL에서 사용할 수 있는 문법임에 주의!

 

LIMIT구는 SELECT 명령의 마지막에 지정하는 것으로 WHERE구나 ORDER BY 구의 뒤에 지정한다.

LIMIT으로 지정하는 것은 '최대 행 수' 이다.

 

- 정렬한 후 제한하기

내림차순으로 정렬 후 행수를 제한했다.

 

- LIMIT을 상요할 수 없는 데이터베이스에서의 행 제한

SQL Server에서는 LIMIT과 비슷한 기능을 하는 TOP를 사용할 수 있다.

SELECT TOP 3 * FROM sample33;

Oracle에서는 ROWNUM이라는 열을 사용해 WHERE 구로 조건을 지정하여 행을 제한할 수 있다.

SELECT * FROM sample33 WHERE ROWNUM <= 3;

단, 정렬하기 전에 처리되어 LIMIT로 행을 제한한 경우와 결과가 다르다.

 

 

2. 오프셋 지정 (건너뛸 행의 갯수 지정)

 

앞에 3개의 행을 건너뛰고(OFFSET 3), 3개의 행 만을 나타내도록(LIMIT 3) 하였다.

 

 

 

수치 연산

1. 사칙 연산

덧셈, 뺄셈, 곱셈, 나눗셈 연산 및 나눗셈의 나머지가 있다. ( + - * / % )

 

- 연산자의 우선순위

1순위 * . %

2순위 + -

 

2. SELECT 구로 연산하기

 

3. 열의 별명

별명은 예약어 AS를 사용해 지정한다.

예약어 AS는 생략할 수 있다.

이름에 ASCII 문자 이외의 것을 포함할 경우는 더블쿼트로 둘러싸서 지정해야 한다.(MySQL은 백쿼트)

SELECT price * quantity "금액" FROM sample34;

 

예약어를 더블쿼트로 감싸면 별명으로 사용할 수 있다.

SELECT price * quantity AS "SELECT" FROM sample34;

별명을 지을 때 숫자로 시작해서는 안 된다(물론 더블쿼트로 묶으면 가능하긴 하다)

 

=> 이름을 지정하는 경우 숫자로 시작되지 않도록 한다.

 

 

4. WHERE 구에서 연산하기

price * quantity의 별명으로 amount를 지정했지만 WHERE 구에서 별명을 사용할 수 없다.

왜냐하면 데이터베이스 서버 내부에서 WHERE구 -> SELECT 구의 순서로 처리되기 때문이다.

 

=> SELECT 구에서 지정한 별명은 WHERE 구 안에서 사용할 수 없다.

 

5. NULL 값의 연산

NULL이 포함된 연산을 하면 결과는 NULL이 된다.

 

6. ORDER BY 구에서 연산하기

ORDER BY 구에서도 연산할 수 있다.

 

 

ORDER BY 구는 서버에서 내부적으로 가장 나중에 처리되기 때문에, SELECT 구에서 지정한 별명을 ORDER BY에서도 사용할 수 있다.

 

=> ORDER BY 구에서는 SELECT 구에서 지정한 별명을 사용할 수 있다!

 

7. 함수

함수를 이용해 연산할 수 도 있다.

연산자도 함수와 같지만, 표기방법이 다를 뿐이다.

 

10 % 3 -> 1

MOD (10, 3) -> 1

 

 

8. ROUND 함수

반올림을 해주는 함수이다.

amount는 DECIMAL 형(소수점을 포함하는 수치를 저장하는 자료형)이다.

 

 

- 반올림 자릿수 지정

인수로 자릿수를 지정하면 해당 소수점 자리까지 반올림한다.

음수로 자릿수를 지정하면 정수 단위의 반올림도 가능하다.

 

(TRUNCATE 함수는 반올림 대신 버리는 함수)

+ Recent posts