Answers:
单引号用于指示SQL中字符串的开头和结尾。在SQL中通常不使用双引号,但是每个数据库的双引号可能会有所不同。
坚持使用单引号。
无论如何,这是主要用途。您可以为列别名使用单引号-您希望在应用程序代码中引用的列名与数据库中实际调用的列不同。例如:的PRODUCT.id
可读性更高product_id
,因此您可以使用以下两种方式之一:
SELECT PRODUCT.id AS product_id
SELECT PRODUCT.id 'product_id'
两者都可以在Oracle,SQL Server,MySQL中工作……但是我知道有些人说过,在使用单引号方法时,TOAD IDE似乎会带来一些麻烦。
如果列别名包含空格字符(例如),则必须使用单引号product id
,但是不建议将列别名超过一个单词。
SELECT * FROM USERS 'Users'
在SQL Server中SELECT * FROM USERS "Users"
不起作用,但可以。
SELECT PRODUCT.id 'product_id'
会不会在甲骨文工作。单引号仅用于字符文字。它们不能用于(标准)SQL中的标识符(尽管某些DBMS在涉及带引号的标识符时只是忽略了SQL标准)
我们记住在这种情况下使用什么的简单规则:
在MySQL和MariaDB的,在`(反引号)符号是一样的“符号,你可以用”当你的SQL_MODE
已经ANSI_QUOTES
启用。
单引号分隔字符串常量或日期/时间常量。
双引号分隔标识符,例如表名或列名。通常,只有在您的标识符不符合简单标识符的规则时,才需要这样做。
也可以看看:
您可以按照ANSI标准使MySQL使用双引号:
SET GLOBAL SQL_MODE=ANSI_QUOTES
您可以使Microsoft SQL Server根据ANSI标准使用双引号:
SET QUOTED_IDENTIFIER ON
在ANSI SQL中,双引号引起了对象名(例如表)的引用,这使它们可以包含其他不允许的字符,或者与保留字相同(实际上请避免使用)。
单引号用于字符串。
但是,MySQL遗忘了该标准(除非更改了SQL_MODE),并允许将它们互换地用于字符串。
此外,Sybase和Microsoft还使用方括号来标识标识符。
因此,这是特定于供应商的。
其他数据库(例如Postgres和IBM)实际上遵守ansi标准:)
不同之处在于它们的用法。单引号通常用于在WHERE,HAVING和一些内置SQL函数(例如CONCAT,STRPOS,POSITION等)中引用字符串。
如果要使用介于两者之间有空格的别名,则可以使用双引号引用该别名。
例如
(select account_id,count(*) "count of" from orders group by 1)sub
这是来自一个具有account_id作为外键的订单表的子查询,我正在汇总这些查询以了解每个帐户下了多少个订单。在这里,为了方便起见,我在任一栏中给了一个随机名称作为“ count of”。
现在,让我们编写一个外部查询来显示“ count of”大于20的行。
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;
您也可以将相同的情况应用于通用表表达式。