Antworten:
Einfache Anführungszeichen geben den Anfang und das Ende einer Zeichenfolge in SQL an. Doppelte Anführungszeichen werden in SQL im Allgemeinen nicht verwendet, dies kann jedoch von Datenbank zu Datenbank variieren.
Halten Sie sich an einfache Anführungszeichen.
Das ist sowieso die Hauptverwendung. Sie können einfache Anführungszeichen für einen Spaltenalias verwenden. Dabei soll der Spaltenname, auf den Sie in Ihrem Anwendungscode verweisen, nicht der Name der Spalte in der Datenbank entsprechen. Zum Beispiel: PRODUCT.id
wäre besser lesbar als product_id
, also verwenden Sie eine der folgenden Methoden:
SELECT PRODUCT.id AS product_id
SELECT PRODUCT.id 'product_id'
Entweder funktioniert es in Oracle, SQL Server, MySQL ... aber ich weiß, dass einige gesagt haben, dass die TOAD IDE bei Verwendung des Ansatzes in einfachen Anführungszeichen etwas Kummer zu bereiten scheint.
Sie müssen einfache Anführungszeichen verwenden, wenn der Spaltenalias beispielsweise ein Leerzeichen enthält. Es product id
wird jedoch nicht empfohlen, dass ein Spaltenalias mehr als ein Wort enthält.
SELECT * FROM USERS 'Users'
funktioniert nicht in SQL Server, SELECT * FROM USERS "Users"
funktioniert aber .
SELECT PRODUCT.id 'product_id'
wird nicht in Oracle arbeiten. Einfache Anführungszeichen gelten nur für Zeichenliterale. Sie können nicht für Bezeichner in (Standard-) SQL verwendet werden (obwohl einige DBMS den SQL-Standard bei Anführungszeichen in Anführungszeichen einfach ignorieren)
Eine einfache Regel für uns, um uns daran zu erinnern, was in welchem Fall zu verwenden ist:
In MySQL und MariaDB, die ` ist (Graviszeichen) Symbol das gleiche wie das „ Symbol. Sie können verwenden “ , wenn Ihr SQL_MODE
ist ANSI_QUOTES
aktiviert.
Einfache Anführungszeichen begrenzen eine Zeichenfolgenkonstante oder eine Datums- / Zeitkonstante.
Doppelte Anführungszeichen begrenzen Bezeichner für z. B. Tabellennamen oder Spaltennamen. Dies ist im Allgemeinen nur erforderlich, wenn Ihr Bezeichner nicht den Regeln für einfache Bezeichner entspricht.
Siehe auch:
Sie können MySQL dazu bringen, doppelte Anführungszeichen gemäß dem ANSI-Standard zu verwenden:
SET GLOBAL SQL_MODE=ANSI_QUOTES
Sie können Microsoft SQL Server dazu bringen, doppelte Anführungszeichen gemäß dem ANSI-Standard zu verwenden:
SET QUOTED_IDENTIFIER ON
In ANSI SQL zitieren doppelte Anführungszeichen Objektnamen (z. B. Tabellen), die es ihnen ermöglichen, Zeichen zu enthalten, die ansonsten nicht zulässig sind, oder mit reservierten Wörtern identisch zu sein (Vermeiden Sie dies wirklich).
Einfache Anführungszeichen stehen für Zeichenfolgen.
MySQL kennt den Standard jedoch nicht (es sei denn, sein SQL_MODE wird geändert) und ermöglicht die austauschbare Verwendung für Zeichenfolgen.
Darüber hinaus verwenden Sybase und Microsoft auch eckige Klammern für die Angabe von Bezeichnern.
Es ist also ein bisschen herstellerspezifisch.
Andere Datenbanken wie Postgres und IBM halten sich tatsächlich an den Ansi-Standard :)
Der Unterschied liegt in ihrer Verwendung. Die einfachen Anführungszeichen werden meistens verwendet, um auf eine Zeichenfolge in WHERE, HAVING und auch in einigen integrierten SQL-Funktionen wie CONCAT, STRPOS, POSITION usw. zu verweisen.
Wenn Sie einen Alias verwenden möchten, zwischen dem Platz ist, können Sie doppelte Anführungszeichen verwenden, um auf diesen Alias zu verweisen.
Beispielsweise
(select account_id,count(*) "count of" from orders group by 1)sub
Hier ist eine Unterabfrage aus einer Auftragstabelle mit account_id als Fremdschlüssel, die ich aggregiere, um zu wissen, wie viele Bestellungen jedes Konto aufgegeben hat. Hier habe ich einer Spalte aus Gründen des Zwecks einen zufälligen Namen als "Anzahl" gegeben.
Schreiben wir nun eine äußere Abfrage, um die Zeilen anzuzeigen, in denen "count of" größer als 20 ist.
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;
Sie können den gleichen Fall auch auf allgemeine Tabellenausdrücke anwenden.