2010-09-12 20 views
53

¿Cuál es la combinación de caracteres para que un nombre de tabla en SQLite sea válido? ¿Son todas las combinaciones de caracteres alfanuméricos (A-Z, a-z y 0-9) un nombre válido?¿Cuáles son los nombres de tabla válidos en SQLite?

Ex. CREATE TABLE 123abc(...); 

¿Qué pasa con una combinación de caracteres alfanuméricos con guiones "-" "" y períodos, que es válida también?

Ex. CREATE TABLE 123abc.txt(...); 
Ex. CREATE TABLE 123abc-ABC.txt(...); 

Gracias.

Respuesta

70

no he encontrado una referencia para él, pero los nombres de tablas que son válidas sin necesidad de utilizar corchetes alrededor de ellos debe ser cualquier combinación alfanumérica que no comience con un dígito:

abc123 - valid 
123abc - not valid 
abc_123 - valid 
_123abc - valid 
abc-abc - not valid (looks like an expression) 
abc.abc - not valid (looks like a database.table notation) 

con soportes que deberían ser capaz de utilizar casi cualquier cosa como un nombre de tabla:

[This should-be a_valid.table+name!?] 
+0

Sólo otro siguiente pregunta. ¿La regla de paréntesis también se aplicaría a los nombres de columna? Por ejemplo, SELECT * FROM myTable WHERE [column.name] = 1; – David

+0

@David: definitivamente no conozco SQLite, pero en todas las demás bases de datos que he usado puedes usar nombres de columnas como ese. – Guffa

+0

gracias, lo intentaré. – David

23

Todo esto está permitido, pero es posible que deba citarlos en "".

sqlite> CREATE TABLE "123abc"(col); 
sqlite> CREATE TABLE "123abc.txt"(col); 
sqlite> CREATE TABLE "123abc-ABC.txt"(col); 
sqlite> select tbl_name from sqlite_master; 
123abc 
123abc.txt 
123abc-ABC.txt 

En general, sin embargo, debe ajustarse al alfabeto.

+2

comillas dobles son el mecanismo de cotización estándar, no corchetes - https://www.sqlite.org/lang_keywords.html – Neil

+0

Derecho, SQLite se quejó cuando se trataba de un tutorial que tenía 'crear transacción de tabla ...' para modelar una 'transacción bancaria' y eso fue porque 'transacción' es una palabra clave 'que no se puede usar como nombres de tablas, índices, columnas, bases de datos, funciones definidas por el usuario, intercalaciones, módulos de tablas virtuales o cualquier otro objeto nombrado', ¡desde su enlace! –

+0

Gracias, @Neil, hecho. –

3

de SQLite documentation on CREATE TABLE, los únicos nombres prohibidos son los que comienzan con sqlite_:

Table names that begin with "sqlite_" are reserved for internal use. It is an error to attempt to create a table with a name that starts with "sqlite_".

0

por Clemens en la lista de correo de los usuarios sqlite: se permite

Todo, excepto los nombres que comienzan con "sqlite_".

CREATE TABLE "TABLE"("#[email protected]""'☺\", ""); 

Puede utilizar palabras clave ("mesa"), caracteres especiales ("" #! @ "" '☺ \ "), e incluso la cadena vacía (" ").

Cuestiones relacionadas