在操作数据库的时候经常能看到用中括号括住表名或者字段名
例如:
CREATE TABLE User (
UserID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
UserName VARCHAR (10) NOT NULL,
CreateDate DATETIME NOT NULL,
State INTEGER NOT NULL,
Action INTEGER NOT NULL
);
和
CREATE TABLE [User] (
[UserID] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[UserName] VARCHAR (10) NOT NULL,
[CreateDate] DATETIME NOT NULL,
[State] INTEGER NOT NULL,
[Action] INTEGER NOT NULL
);
区别只是在于有无中括号。
那么加中括号的作用是什么呢?
根据网上的经验和实际测试总结如下:
- 有些可能是SQL里面的保留字,但是你又用了它做字段名 比如Action,用[Action] 就可以避免这个问题,如果直接Action
SQL就要报错了。 - 解决较长的中文名表名可能会被不识别的问题。
实际测试如下:
虽然输入的字段名中包含Action这个关键字,但从SQLite工具生成的DDL代码中该字段被中括号所包裹,中括号用来标识该字段是标识符而非关键字。
SQLite关键字可以参见我另外一篇博客:SQLite关键字