Do different databases use different name quote?

2020-01-22 12:58发布

For example, mysql quote table name using

SELECT * FROM `table_name`;

notice the `

Does other database ever use different char to quote their table name

3条回答
祖国的老花朵
2楼-- · 2020-01-22 13:03

This use of quotes is called delimited identifiers. It's an important part of SQL because otherwise you can't use identifiers (e.g. table names and column names) that:

  • Include whitespace: "my table"
  • Include special characters and punctuation: "my-table"
  • Include international characters: "私のテーブル"
  • Are case-sensitive: "MyTable"
  • Match SQL keywords: "table"

The standard SQL language uses double-quotes for delimited identifiers:

SELECT * FROM "my table";

MySQL uses back-quotes by default. MySQL can use standard double-quotes:

SELECT * FROM `my table`;
SET SQL_MODE=ANSI_QUOTES;
SELECT * FROM "my table";

Microsoft SQL Server and Sybase uses brackets by default. They can both use standard double-quotes this way:

SELECT * FROM [my table];
SET QUOTED_IDENTIFIER ON;
SELECT * FROM "my table";

InterBase and Firebird need to set the SQL dialect to 3 to support delimited identifiers.

Most other brands of database use double-quotes correctly.

查看更多
霸刀☆藐视天下
3楼-- · 2020-01-22 13:19

SQL Server uses [square brackets] or "double quotes" when QUOTED_IDENTIFIER option is ON.

I believe double quotes are in the SQL-92 standard.

查看更多
闹够了就滚
4楼-- · 2020-01-22 13:21

Succinctly, yes.

The SQL standard uses double quotes around the name to indicate a 'delimited identifier'.

Informix by default uses single and double quotes interchangeably to indicate character strings. However, by setting the environment variable DELIMIDENT you can turn on the SQL standard behaviour - single quotes around strings and double quotes around delimited identifiers.

Other people have listed other behaviours for other DBMS; I don't need to repeat those.

查看更多
登录 后发表回答