简体   繁体   中英

quotation marks on attributes SQL

Is there a difference between the following two queries?

CREATE TABLE alpha(age INTEGER);

and

CREATE TABLE alpha("age" INTEGER);

I read that database objects are case INSENSITIVE unless they are kept in quotation marks. This applies when I try to keep the TABLE object in quotation marks but isn't working for the attributes.

I guess the reason is attributes are not database objects. Is this correct?

If yes, then in what category does attributes fall under, if not database object?

Is there a difference ? yes.

when you don't use quotes, like:

CREATE TABLE alpha(age INTEGER);

oracle will store that column and table as UPPERCASE in the data dictionary.

in other words , these statements are identical:

CREATE TABLE alpha(age INTEGER);
CREATE TABLE "ALPHA"("AGE" INTEGER);
CREATE TABLE ALPHA(AGE INTEGER);

Also, any subsequent dml/ddl on the table like:

select age from alpha;

would be first converted to uppercase when looking up the object/column; so the above SQL would work fine. ie oracle would look for the column AGE and the table ALPHA and not the column age or the table alpha as was typed.

however, when you create with a quoted identifier:

CREATE TABLE alpha("age" INTEGER);

oracle would create table ALPHA with a column in lowercase age (check user_tab_columns to see this). so ONLY the following would work to select it:

select "age" from alpha;
select "age" from "ALPHA";
select "age" from ALPHA;

and not:

select age from alpha;

eg: http://sqlfiddle.com/#!4/3084e/1

It depends on the database engine, and even how the database itself or the connected session is configured. However, in general, SQL Server would treat age and "age" as the same identifier, while Oracle would consider age and "age" to be different.

In regard to attributes (columns), treatment of those identifiers vary widely as well. Most database engines will allow the attributes to be identified by quotation marks (or other delimiters) and in the same way the table identifiers are handled.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM