我已经在我的 Mac 上安装了 DB Browser for SQLite。我需要创建一个 SQLITE 数据库或使用现有数据库并在数据库中创建一个名为“Ages”的表:
CREATE TABLE Ages (
name VARCHAR(128),
age INTEGER
)
到目前为止,我成功创建了一个如下所示的表格:
CREATE TABLE Ages (
name VARCHAR(128)INTEGER,
age INTEGER
)
如何去掉第一个“INTEGER”,以便我的表格看起来像预期的那样?
您可以使用“执行 SQL”选项卡进行编码,然后使用:-
ALTER TABLE Ages RENAME TO Ages_old;
DROP TABLE IF EXISTS Ages;
CREATE TABLE IF NOT EXISTS Ages (name VARCHAR(128), age INTEGER);
INSERT INTO Ages SELECT * FROM Ages_old;
这将留下 Ages_old 表(您可能想要删除它)。 它还可以处理包含实际数据的 Ages 表(INSERT SQL 将数据从重命名的原始表复制到新创建的表)。
但是,没有真正的需要,因为列可以包含任何类型的数据,这是 SQLite 的灵活性功能(尽管有些人感到困惑)。
事实上,由于列类型 varchar(128)integer 包含 int,因此列类型亲和力无论如何都将是 INTEGER(同样这并不重要)。
也许考虑这个演示(使用 DBBrowser 执行):-
DROP TABLE IF EXISTS `?`;
CREATE TABLE IF NOT EXISTS `?` (x somereallystupidcolumntype,y INTEGER,z `VARCHAR(128)INTEGER`);
SELECT * FROM sqlite_master;
INSERT INTO `?` VALUES
(x'1234567890abcdef',x'1234567890abcdef',x'1234567890abcdef'),(100,100,100),(100.1234,100.1234,100.1234),('whatever','whatever','whatever'),(100||'abc'||100.1234,null,null);
SELECT *,typeof(x),typeof(y),typeof(z) FROM `?`;
表名很有趣/奇怪,但符合所有意图和目的? (附上以允许使用其他不可接受的名称)
col x,正如读到的类型所暗示的那样,是一种奇怪/愚蠢的非常规类型
col y 是 INTEGER 类型
col z 与您看起来拥有的类型非常接近(附上以允许它)
INSERT SQL 插入 5 行的所有 3 列数据
SELECT SQL 提取数据 asis(即所有 3 列),但添加另外 3 列,它们是这 3 列的行的数据的列类型。
运行时 DBBrowser 显示:-