Respostas:
Aspas simples são usadas para indicar o início e o fim de uma string no SQL. As aspas duplas geralmente não são usadas no SQL, mas podem variar de banco de dados para banco de dados.
Continue usando aspas simples.
Esse é o uso principal de qualquer maneira. Você pode usar aspas simples para um alias de coluna - onde deseja que o nome da coluna que você referencia no código do aplicativo seja algo diferente do que a coluna é realmente chamada no banco de dados. Por exemplo: PRODUCT.id
seria mais legível como product_id
, então você pode usar um dos seguintes:
SELECT PRODUCT.id AS product_id
SELECT PRODUCT.id 'product_id'
Ou funciona no Oracle, SQL Server, MySQL ... mas sei que alguns disseram que o TOAD IDE parece dar um pouco de tristeza ao usar a abordagem de aspas simples.
Você precisa usar aspas simples quando o alias da coluna incluir um caractere de espaço, por exemplo product id
, mas não é recomendável que o alias da coluna tenha mais de uma palavra.
SELECT * FROM USERS 'Users'
não funciona no SQL Server, mas SELECT * FROM USERS "Users"
funciona.
SELECT PRODUCT.id 'product_id'
vai não trabalhar na Oracle. Aspas simples são apenas para literais de caracteres. Eles não podem ser usados para identificadores (standard) SQL (embora alguns DBMS simplesmente ignorar o padrão SQL quando se trata de identificadores entre aspas)
Uma regra simples para lembrarmos o que usar; nesse caso:
No MySQL e MariaDB, o ` (crase) símbolo é o mesmo que o " símbolo. Você pode usar " quando o seu SQL_MODE
foi ANSI_QUOTES
ativado.
Aspas simples delimitam uma constante de seqüência de caracteres ou uma constante de data / hora.
Aspas duplas delimitam identificadores para, por exemplo, nomes de tabelas ou nomes de colunas. Geralmente, isso só é necessário quando seu identificador não se encaixa nas regras de identificadores simples.
Veja também:
Você pode fazer o MySQL usar aspas duplas pelo padrão ANSI:
SET GLOBAL SQL_MODE=ANSI_QUOTES
Você pode fazer o Microsoft SQL Server usar aspas duplas pelo padrão ANSI:
SET QUOTED_IDENTIFIER ON
No ANSI SQL, aspas duplas citam nomes de objetos (por exemplo, tabelas) que permitem que eles contenham caracteres não permitidos de outra forma ou sejam iguais às palavras reservadas (evite isso, na verdade).
Aspas simples são para seqüências de caracteres.
No entanto, o MySQL ignora o padrão (a menos que seu SQL_MODE seja alterado) e permite que eles sejam usados de forma intercambiável para strings.
Além disso, Sybase e Microsoft também usam colchetes para citar identificadores.
Portanto, é um pouco específico do fornecedor.
Outros bancos de dados, como o Postgres e a IBM, realmente aderem ao padrão ansi :)
A diferença está no seu uso. As aspas simples são usadas principalmente para referenciar uma string em WHERE, HAVING e também em algumas funções SQL internas, como CONCAT, STRPOS, POSITION etc.
Quando você deseja usar um alias com espaço entre eles, pode usar aspas duplas para se referir a esse alias.
Por exemplo
(select account_id,count(*) "count of" from orders group by 1)sub
Aqui está uma subconsulta de uma tabela de pedidos com account_id como chave estrangeira que estou agregando para saber quantos pedidos cada conta fez. Aqui, dei a uma coluna qualquer nome aleatório como "contagem de" para fins de propósito.
Agora vamos escrever uma consulta externa para exibir as linhas em que "contagem de" é maior que 20.
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;
Você também pode aplicar o mesmo caso às expressões de tabela comum.