sql >> Base de Datos >  >> RDS >> Oracle

¿Qué hacen exactamente las comillas alrededor del nombre de la tabla?

Poner comillas dobles alrededor de un identificador en Oracle hace que Oracle trate el identificador como sensible a mayúsculas y minúsculas en lugar de usar el valor predeterminado de insensibilidad a mayúsculas y minúsculas. Si crea una tabla (o una columna) con comillas dobles alrededor del nombre, siempre debe hacer referencia al identificador con comillas dobles y especificando correctamente el caso (con la excepción de todos los identificadores en mayúsculas, donde las comillas dobles no tienen sentido). ).

Bajo las sábanas, Oracle siempre está haciendo coincidencias de identificadores que distinguen entre mayúsculas y minúsculas. Pero siempre convierte los identificadores que no están entre comillas dobles en mayúsculas antes de hacer la coincidencia. Si coloca comillas dobles alrededor de un identificador, Oracle omite la conversión a mayúsculas.

Así que si haces algo como

CREATE TABLE my_table( 
  col1 number,
  col2 number
)

tu puedes

SELECT * FROM my_table
SELECT * FROM MY_TABLE
SELECT * FROM My_Table
SELECT * FROM "MY_TABLE"

pero algo como

SELECT * FROM "my_table" 

fallará.

Por otro lado, si haces algo como

CREATE TABLE "my_other_table"( 
  col1 number,
  col2 number
)

no puedes hacer

SELECT * FROM my_other_table
SELECT * FROM MY_OTHER_TABLE
SELECT * FROM My_Other_Table
SELECT * FROM "MY_OTHER_TABLE"

pero esto

SELECT * FROM "my_other_table" 

funcionará