본문 바로가기

SQL/SQL Tutorial

12.SQL SELETE 와 TOP , LIMIT , FETCH FIRST , ROWNUM

12.SQL SELETE 와 TOP , LIMIT , FETCH FIRST , ROWNUM

 

SQL SELECT TOP 절

반환할 레코드 수를 지정하는데 사용됩니다.

수천개의 레코드가 있는 대규모 테이블에서 유용합니다.

많은 수의 레코드를 그대로 반환하면 성능에 영향을 줄수 있습니다,

 

참고 : 모든 데이터베이스 시스템이 이 SELECT TOP 를 지원하는건 아닙니다.

MySQL 에서는 LIMIT 절을 이용해 제한된 수의 레코드를 선택하고

ORACLE 에서는 FETCH FIRST 와 ROW ONLY , ROWNUM 을 지원합니다.

 

MSSQL

SELECT TOP number|percent column_name(s)

FROM table_name

WHERE condition;

 

MYSQL

SELECT column_name(s)

FROM table_name

WHERE condition

LIMIT number;

 

ORACLE12

SELECT column_name(s)

FROM table_name

ORDER BY column_name(s)

FETCH FIRST number ROWS ONLY;

 

이전 ORACLE 구문

SELECT column_name(s)

FROM table_name

WHERE ROWNUM <= number;

 

이전 ORACLE 구문 (ORDER BY 포함)

SELECT * 

FROM (SELECT column_name(s) FROM table_name ORDER BY column_name(s))

WHERE ROWNUM <= number;

 

 

LIMIT

다음 SQL 문은 MYSQL 에 해당하는 예를 보여줍니다

SELECT * FROM Customers

LIMIT 3;

 

FETCH FIRST

다음 SQL 문은 ORCLE 에 대한 LIMIT 와 동일한 결과를 보여줍니다.

SELECT * FROM Customers

FETCH FIRST 3 ROWS ONLY;

 

SQL TOP PERCENT 예

다음 SQL 문은 "Customers" 테이블(SQL Server , MS Access 의 경우) 에서 총 결과 중 처음 50%를 선택합니다.

SELECT TOP 50 PERCENT * FROM Customers;

 

다음 SQL 문은 ORLCLE 에서 TOP PERCENT 와 동일한 결과를 보여줍니다.

SELECT * FROM Customers

FETCH FIRST 50 PERCENT ROWS ONLY;

 

 

-WHERE 절 추가

다음 SQL 문은 국가가 "Germany"인 "Customers" 테이블에서 처음 세개의 레코드를 선택합니다. ( SQL Server , MS Access 의 경우 )

SELECT TOP 3 * FROM Customers

WHERE Country = 'Germany';

 

다음 SQL 문은 MYSQL 에 해당하는 예를 보여줍니다.

SELECT * FROM Customers

WHERE Country = 'Germany'

LIMIT 3;

 

다음 SQL 문은 ORACLE 에 대한 동등한 예를 보여줍니다.

SELECT * FROM Customers

WHERE Country = 'Germany'

FETCH FIRST 3 ROWS ONLY;

 

-ORDER BY 키워드 추가

결과를 정렬하고 싶을때 키워드를 추가하고 , 정렬된 결과의 처음 3개 레코드를 반환합니다.

 

SQL Server , MS Access 의 경우

결과를 CustomerName 을 기준으로 사전순의 역순으로 정렬하고 처음3개의 레코드를 반환합니다.

TOP 과 ORDER BY 를 사용합니다.

SELECT TOP 3 * FROM Customers

ORDER BY CustomerName DESC;

 

다음 SQL 문은 MYSQL 에 해당하는 예를 보여줍니다.

ORDER BY 와 LIMIT 를 사용합니다.

SELECT * FROM Customers

ORDER BY CustomerName DESC

LIMIT 3;

 

다음SQL문은 ORACLE에 대한 동등한 예를 보여줍니다.

ORDER BY 와 FETCH FIRST 를 사용합니다.

SELECT * FROM Customers

ORDER BY CustomerName DESC

FETCH FIRST 3 ROWS ONLY

'SQL > SQL Tutorial' 카테고리의 다른 글

14.SQL MIN() , MAX()  (0) 2024.06.25
13.SQL Aggregate Functions (집계함수)  (0) 2024.06.25
11.SQL DELETE  (0) 2024.06.24
10.SQL UPDATE  (0) 2024.06.24
9.SQL NULL 값  (0) 2024.06.24