0

Какими могут/не могут быть имена столбцов в SQLite?

1

Вопрос: Существуют ли какие-либо правила для имен столбцов в SQLite?

Я столкнулся с необходимостью определить допустимые символы для имен столбцов в SQLite и хотел бы уточнить несколько моментов:

  1. Можно ли использовать символы, такие как '/' в именах столбцов?
  2. Допустимы ли в именах столбцов символы UTF-8?

Заранее благодарю за помощь!

4 ответ(ов)

0

Да, в SQLite можно использовать символы, такие как '/', в названиях столбцов, если заключить их в двойные кавычки. Вот несколько примеров работы с этой возможностью на SQLite 3.5.9 под управлением Linux:

> CREATE TABLE test_forward ( /test_column INTEGER );
SQL error: near "/": syntax error
> CREATE TABLE test_forward ("/test_column" INTEGER );
> INSERT INTO test_forward("/test_column") VALUES (1);
> SELECT test_forward."/test_column" from test_forward;
1

Однако стоит отметить, что лучше этого не делать. Использование нестандартных символов в именах столбцов может привести к путанице и усложнить чтение и поддержку вашего кода.

0

В SQLite, если нужно использовать "неправильные" имена идентификаторов (например, содержащие пробелы или специальные символы), вы можете заключать их в двойные кавычки, как в примере с "identifier#1". Однако также можно использовать квадратные скобки: например, [identifier#2] будет работать так же.

Вот пример:

sqlite> create table a0.tt ([id#1] integer primary key, [id#2] text) without rowid;
sqlite> insert into tt values (1,'test for [x] id''s');
sqlite> select * from tt;
id#1|id#2
1|test for [x] id's

Таким образом, вы можете выбрать любой из двух способов для работы с идентификаторами, которые включают специальные символы или пробелы.

0

Это не полный ответ, но может помочь. Вот ключевые слова из документации SQLite, представленные в виде массива:

["ABORT", "ACTION", "ADD", "AFTER", "ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "AS", 
"ASC", "ATTACH", "AUTOINCREMENT", "BEFORE", "BEGIN", "BETWEEN", "BY", "CASCADE", "CASE", "CAST", 
"CHECK", "COLLATE", "COLUMN", "COMMIT", "CONFLICT", "CONSTRAINT", "CREATE", "CROSS", "CURRENT", "CURRENT_DATE", 
"CURRENT_TIME", "CURRENT_TIMESTAMP", "DATABASE", "DEFAULT", "DEFERRABLE", "DEFERRED", "DELETE", "DESC", "DETACH", "DISTINCT", 
"DO", "DROP", "EACH", "ELSE", "END", "ESCAPE", "EXCEPT", "EXCLUDE", "EXCLUSIVE", "EXISTS", 
"EXPLAIN", "FAIL", "FILTER", "FIRST", "FOLLOWING", "FOR", "FOREIGN", "FROM", "FULL", "GENERATED", 
"GLOB", "GROUP", "GROUPS", "HAVING", "IF", "IGNORE", "IMMEDIATE", "IN", "INDEX", "INDEXED", 
"INITIALLY", "INNER", "INSERT", "INSTEAD", "INTERSECT", "INTO", "IS", "ISNULL", "JOIN", "KEY", 
"LAST", "LEFT", "LIKE", "LIMIT", "MATCH", "MATERIALIZED", "NATURAL", "NO", "NOT", "NOTHING", 
"NOTNULL", "NULL", "NULLS", "OF", "OFFSET", "ON", "OR", "ORDER", "OTHERS", "OUTER", 
"OVER", "PARTITION", "PLAN", "PRAGMA", "PRECEDING", "PRIMARY", "QUERY", "RAISE", "RANGE", "RECURSIVE", 
"REFERENCES", "REGEXP", "REINDEX", "RELEASE", "RENAME", "REPLACE", "RESTRICT", "RETURNING", "RIGHT", "ROLLBACK", 
"ROW", "ROWS", "SAVEPOINT", "SELECT", "SET", "TABLE", "TEMP", "TEMPORARY", "THEN", "TIES", 
"TO", "TRANSACTION", "TRIGGER", "UNBOUNDED", "UNION", "UNIQUE", "UPDATE", "USING", "VACUUM", "VALUES", 
"VIEW", "VIRTUAL", "WHEN", "WHERE", "WINDOW", "WITH", "WITHOUT"]

Надеюсь, это поможет вам в работе с SQLite!

0

Названия полей должны соответствовать тем же правилам, что и названия таблиц. Я проверял это с помощью SQLite Administrator.

  1. Допускаются только алфавитно-цифровые символы и знак подчеркивания.
  2. Название поля должно начинаться с буквы или знака подчеркивания.

Если придерживаться этих правил, то вам не придется использовать экранирование, и это может помочь избежать проблем в будущем.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь