SQLite表和列名称要求

spa*_*y21 4 sqlite

我想知道在创建表时SQLite对表名和列名的限制.创建表的文档说表名不能以"sqlite_"开头,但还有其他限制吗?什么有效的,是否有正式的定义?

只要引用该名称,SQLite似乎就会惊讶地接受.例如...

sqlite> create table 'name with spaces, punctuation & $pecial characters?'(x int);
sqlite> .tables
name with spaces, punctuation & $pecial characters?
Run Code Online (Sandbox Code Playgroud)

Nej*_*jat 8

如果您使用括号或引号,则可以使用任何名称,并且没有限制:

create table [--This is a_valid.table+name!?] (x int);
Run Code Online (Sandbox Code Playgroud)

但是没有括号的表名应该是不以数字开头并且不包含任何空格的任何字母数字组合.

你可以使用下划线和$,但你不能使用如下符号:+ - ?!*@%^&#=/\:"'

  • 我最近浏览了有关标识符的SQLite文档,值得注意的是,方括号允许与MS Access和SQL Server兼容,但双引号是标准的并且看起来是等效的。https://www.sqlite.org/lang_keywords.html (2认同)