SQL SELECT TOP, LIMIT, ROWNUMClauses
Clause SQL SELECT TOP
L'instruction SELECT TOP est utilisée pour limiter le nombre de lignes dans l'ensemble de résultats renvoyé en SQL. Elle est généralement utilisée lorsque vous n'avez besoin d'interroger que les premières lignes de données, en particulier lorsque l'ensemble de données est très volumineux, car elle peut améliorer considérablement les performances des requêtes.
La clause SELECT TOP est très utile pour les grandes tables contenant des milliers d'enregistrements.
Remarque :
SELECT TOPUtilisé dans SQL Server et MS Access, tandis que dans MySQL et PostgreSQL, on utiliseLIMITmot-clé.- Avant la version 12c, Oracle n'avait pas de mot-clé directement équivalent ; il pouvait
ROWNUMimplémenter une fonctionnalité similaire, mais dans la version 12c et supérieure, il a introduitFETCH FIRST。 - Lors de l'utilisation
TOPouLIMIT, il est préférable de l'associer àORDER BYla clause, pour garantir que les lignes renvoyées soient les premières lignes dans un ordre spécifique.
Syntaxe SQL Server / MS Access
SELECT TOP number|percent column1, column2, ... FROM table_name;
number|percent : spécifie le nombre de lignes ou le pourcentage à renvoyer.
number: nombre spécifique de lignes.percent: pourcentage du jeu de données.
Syntaxe MySQL
SELECT column1, column2, ... FROM table_name LIMIT number;
Syntaxe Oracle
SELECT column1, column2, ... FROM table_name FETCH FIRST number ROWS ONLY;
Syntaxe PostgreSQL
SELECT column1, column2, ... FROM table_name LIMIT number;
Exemples
Supposons que nous ayons une table nommée Employees, qui contient les données suivantes :
| EmployeeID | EmployeeName | Salaire |
|---|---|---|
| 1 | John Smith | 50000 |
| 2 | Maria Garcia | 60000 |
| 3 | Liam Johnson | 70000 |
| 4 | Emma Wilson | 80000 |
| 5 | Oliver Brown | 90000 |
SQL Server et MS Access renvoient les 3 premières lignes de données :
SELECT TOP 3 EmployeeName, Salary FROM Employees;
Renvoyer les 10 % premiers des données :
SELECT TOP 10 PERCENT EmployeeName, Salary FROM Employees;
MySQL renvoie les 3 premières lignes de données :
SELECT EmployeeName, Salary FROM Employees LIMIT 3;
PostgreSQL renvoie les 3 premières lignes de données :
SELECT EmployeeName, Salary FROM Employees LIMIT 3;
Oracle renvoie les 3 premières lignes de données :
SELECT EmployeeName, Salary FROM Employees FETCH FIRST 3 ROWS ONLY;
Base de données de démonstration
Dans ce tutoriel, nous utiliserons la base de données d'exemple EXAMPLE.
Ci-dessous se trouvent les données sélectionnées dans la table "Websites" :
mysql> SELECT * FROM Websites; +----+---------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+---------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Example | http://www.example.com/ | 5000 | USA | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
Exemple MySQL SELECT LIMIT
L'instruction SQL suivante sélectionne les deux premiers enregistrements de la table "Websites" :
Exemple
Après avoir exécuté le SQL ci-dessus, les données sont les suivantes :
Exemple SQL SELECT TOP PERCENT
Dans Microsoft SQL Server, vous pouvez également utiliser un pourcentage comme paramètre.
L'instruction SQL suivante sélectionne les 50 premiers pour cent des enregistrements de la table websites :
Exemple
Les opérations suivantes peuvent être exécutées dans une base de données Microsoft SQL Server.