Réponses:
Les guillemets simples sont utilisés pour indiquer le début et la fin d'une chaîne en SQL. Les guillemets doubles ne sont généralement pas utilisés dans SQL, mais cela peut varier d'une base de données à l'autre.
Restez à utiliser des guillemets simples.
C'est la principale utilisation de toute façon. Vous pouvez utiliser des guillemets simples pour un alias de colonne - où vous voulez que le nom de la colonne que vous référencez dans votre code d'application soit autre que ce que la colonne est réellement appelée dans la base de données. Par exemple: PRODUCT.id
serait plus lisible en tant que product_id
, vous utilisez donc l'un des éléments suivants:
SELECT PRODUCT.id AS product_id
SELECT PRODUCT.id 'product_id'
Soit fonctionne dans Oracle, SQL Server, MySQL… mais je sais que certains ont dit que l'IDE TOAD semble donner du fil à retordre lors de l'utilisation de l'approche des guillemets simples.
Vous devez utiliser des guillemets simples lorsque l'alias de colonne comprend un caractère espace, par exemple product id
, mais il n'est pas recommandé qu'un alias de colonne soit composé de plusieurs mots.
SELECT * FROM USERS 'Users'
ne fonctionne pas dans SQL Server, mais SELECT * FROM USERS "Users"
fonctionne.
SELECT PRODUCT.id 'product_id'
ne pas travailler dans Oracle. Les guillemets simples sont uniquement pour les littéraux de caractères. Ils ne peuvent pas être utilisés pour les identifiants en SQL (standard) (bien que certains SGBD ignorent simplement le standard SQL en ce qui concerne les identifiants entre guillemets)
Une règle simple pour nous de nous rappeler quoi utiliser dans ce cas:
Dans MySQL et MariaDB, le symbole ` (backtick) est le même que le " symbole. Vous pouvez utiliser " lorsque votre SQL_MODE
est ANSI_QUOTES
activé.
Les guillemets simples délimitent une constante chaîne ou une constante date / heure.
Les guillemets doubles délimitent les identificateurs, par exemple les noms de table ou les noms de colonne. Cela n'est généralement nécessaire que lorsque votre identifiant ne correspond pas aux règles des identifiants simples.
Voir également:
Vous pouvez faire en sorte que MySQL utilise des guillemets doubles selon la norme ANSI:
SET GLOBAL SQL_MODE=ANSI_QUOTES
Vous pouvez faire en sorte que Microsoft SQL Server utilise des guillemets doubles selon la norme ANSI:
SET QUOTED_IDENTIFIER ON
Dans ANSI SQL, les guillemets doubles citent des noms d'objets (par exemple des tables) qui leur permettent de contenir des caractères non autorisés autrement, ou d'être les mêmes que des mots réservés (éviter cela, vraiment).
Les guillemets simples sont pour les chaînes.
Cependant, MySQL est inconscient de la norme (à moins que son SQL_MODE ne soit modifié) et leur permet d'être utilisés de manière interchangeable pour les chaînes.
De plus, Sybase et Microsoft utilisent également des crochets pour la citation des identifiants.
C'est donc un peu spécifique au fournisseur.
D'autres bases de données telles que Postgres et IBM adhèrent en fait à la norme ansi :)
La différence réside dans leur utilisation. Les guillemets simples sont principalement utilisés pour référencer une chaîne dans WHERE, HAVING et également dans certaines fonctions SQL intégrées comme CONCAT, STRPOS, POSITION, etc.
Lorsque vous souhaitez utiliser un alias avec un espace entre les deux, vous pouvez utiliser des guillemets doubles pour faire référence à cet alias.
Par exemple
(select account_id,count(*) "count of" from orders group by 1)sub
Voici une sous-requête d'une table de commandes ayant account_id comme clé étrangère que j'agrège pour savoir combien de commandes chaque compte a passées. Ici, j'ai donné à une colonne un nom aléatoire comme "nombre de" pour des raisons de finalité.
Écrivons maintenant une requête externe pour afficher les lignes où "count of" est supérieur à 20.
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;
Vous pouvez également appliquer le même cas aux expressions de table commune.