148 votes

Quel est le but du mot clé SQL "AS" ?

Vous pouvez définir des alias de table en SQL en tapant l'identifiant juste après le nom de la table.

SELECT * FROM table t1;

Vous pouvez même utiliser le mot-clé AS pour indiquer l'alias.

SELECT * FROM table AS t1;

Quelle est la différence entre les deux, le cas échéant ?

Je vois que les vieux DBA ont tendance à écrire des déclarations sans AS mais la plupart des nouveaux tutoriels l'utilisent.

Mise à jour : Je sais à quoi servent les alias de table et de colonne. Je suis curieux de savoir quelle est la raison d'avoir un mot-clé distinct pour définir les alias alors que cela fonctionne aussi sans.

12 votes

Desde msdn.microsoft.com/fr/us/library/ms179300.aspx La clause AS est la syntaxe définie dans la norme ISO pour attribuer un nom à une colonne du jeu de résultats. Il s'agit de la syntaxe préférée à utiliser dans SQL Server 2005.

3 votes

Il est également utilisé pour séparer la déclaration d'une procédure avec son script. CREATE PROC Test @Param1 INT AS SELECT @Param1

144voto

Sachin Shanbhag Points 20979

Il n'y a pas de différence entre les deux affirmations ci-dessus. AS est simplement une manière plus explicite de mentionner l'alias

12 votes

En fait, il n'y a pas de différence en SQL mais certains outils/bibliothèques dépendants peuvent dépendre de ce petit mot-clé. Par exemple : JDBC 4.0. Selon que vous utilisez des alias avec ou sans 'AS cause', vous obtiendrez un comportement différent - voir cette réponse. stackoverflow.com/a/4271250/814304 . Je voudrais recommander de TOUJOURS utiliser la forme complète de sémantique pour éviter de tels problèmes.

0 votes

Puis-je avoir des alias pour plus d'une colonne ? Par exemple, deux colonnes avec des alias uniques ?

0 votes

@Keynes Oui. Il suffit de concaténer (||) les colonnes et de leur donner un alias, par exemple : SELECT foo || bar AS foobar.

41voto

XstreamINsanity Points 1061

Tous ceux qui ont répondu avant moi ont raison. Vous l'utilisez en quelque sorte comme un nom raccourci alias pour une table lorsque vous avez de longues requêtes ou des requêtes qui ont des jointures. Voici quelques exemples.

Exemple 1

SELECT P.ProductName,
       P.ProductGroup,
       P.ProductRetailPrice
FROM   Products AS P

Exemple 2

SELECT P.ProductName,
       P.ProductRetailPrice,
       O.Quantity
FROM   Products AS P
LEFT OUTER JOIN Orders AS O ON O.ProductID = P.ProductID
WHERE  O.OrderID = 123456

Exemple 3 L'utilisation du mot-clé AS est une bonne pratique et est très recommandée, mais il est possible d'effectuer la même requête sans mot-clé (et je le fais souvent).

SELECT P.ProductName,
       P.ProductRetailPrice,
       O.Quantity
FROM   Products P
LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID
WHERE  O.OrderID = 123456

Comme vous pouvez le constater, j'ai omis le mot clé AS dans le dernier exemple. Et il peut être utilisé comme un alias.

Exemple 4

SELECT P.ProductName AS "Product",
       P.ProductRetailPrice AS "Retail Price",
       O.Quantity AS "Quantity Ordered"
FROM   Products P
LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID
WHERE  O.OrderID = 123456

Sortie de l'exemple 4

Product             Retail Price     Quantity Ordered
Blue Raspberry Gum  $10 pk/$50 Case  2 Cases
Twizzler            $5 pk/$25 Case   10 Cases

21voto

onedaywhen Points 24594

Lorsque vous n'êtes pas sûr de la syntaxe à choisir, en particulier lorsqu'il ne semble pas y avoir beaucoup de choses pour séparer les choix, consultez un livre sur les heuristiques. Pour autant que je sache, le seul livre d'heuristique pour SQL est 'Joe Celko's SQL Programming Style' :

Un nom de corrélation est plus souvent appelé un alias, mais je serai formel. En SQL-92, ils peuvent avoir une option AS et il doit être utilisé pour indiquer clairement que quelque chose est que l'on donne un nouveau nom à quelque chose. [p16]

De cette façon, si votre équipe n'aime pas la convention, vous pouvez blâmer Celko - je sais que je le fais ;)


MISE À JOUR 1 : IIRC pendant une longue période, Oracle n'a pas pris en charge l'option AS (précédant le nom de la corrélation), ce qui peut expliquer pourquoi certains vieux routiers ne l'utilisent pas habituellement.


MISE À JOUR 2 : le terme "nom de corrélation", bien qu'utilisé par la norme SQL, est inapproprié. Le concept sous-jacent est celui d'un variable de gamme '.


MISE À JOUR 3 : Je viens de relire ce que Celko a écrit et il a tort : la table n'est pas renommée ! Je pense maintenant :

Un nom de corrélation est plus souvent appelé un alias, mais je vais être formel. En SQL standard, ils peuvent avoir une option AS mais il ne doit pas être utilisé car il peut donner l'impression que quelque chose est renommé alors que ce n'est pas le cas. En fait, il devrait être omis pour renforcer l'idée qu'il s'agit d'une variable de plage.

13voto

Buhake Sindi Points 38654

El AS Le mot-clé est de donner un ALIAS à votre table de base de données ou à la colonne de la table. Dans votre exemple, les deux déclarations sont correctes, mais il y a des circonstances où la clause AS est nécessaire (bien que la clause AS ne soit pas utilisée). AS l'opérateur lui-même est facultatif), par exemple

SELECT salary * 2 AS "Double salary" FROM employee;

Dans ce cas, le Employee La table a un salary et nous voulons juste le double du salaire avec un nouveau nom Double Salary .

Désolé si mon explication n'est pas efficace.


Mise à jour d'après votre commentaire, vous avez raison, ma déclaration précédente était invalide. La seule raison à laquelle je peux penser est que la AS existe depuis longtemps dans le monde SQL qu'elle a été incorporée dans les SGBD actuels pour des raisons de compatibilité ascendante.

3 votes

Non, AS n'est pas nécessaire, même dans ce cas. Essayez SELECT 1 + 1 "result" .

6voto

Nicholas Knight Points 9293

L'utilisation est plus évidente si vous n'utilisez pas 'SELECT *' (qui est une mauvaise habitude dont vous devriez vous défaire) :

SELECT t1.colA, t2.colB, t3.colC FROM alongtablename AS t1, anotherlongtablename AS t2, yetanotherlongtablename AS t3 WHERE t1.colD = t2.colE...

3 votes

Je sais à quoi servent les alias de table. Je suis curieux de savoir quelle est la raison d'avoir un mot-clé distinct pour définir les alias alors que cela fonctionne aussi sans.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X