결과 행 제한하기 - 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 함수는 반올림 대신 버리는 함수)
'SQL > SQL 첫걸음' 카테고리의 다른 글
15강[CASE 문으로 데이터 변환하기], 16강[행 추가하기 - INSERT] (1) | 2022.10.07 |
---|---|
13강[문자열 연산], 14강[날짜 연산] (0) | 2022.10.04 |
9강[정렬 - ORDER BY], 10강[복수의 열을 지정해 정렬하기] (0) | 2022.10.02 |
7강[조건 조합하기], 8강[패턴 매칭에 의한 검색] (1) | 2022.09.29 |
5강[테이블 구조 참조하기], 6강[검색 조건 지정하기] (1) | 2022.09.28 |