我正在使用 Sqlite 学习 SQL。我想使用 Sqlite 创建一副简单的扑克牌。我的尝试如下。
因为我不断收到语法错误,所以我尝试让 Sqlite 数据库浏览器
创建代码,通过手动添加字段来创建表。现在我只剩下某种混合语法,当我通过语法检查器检查它时,我无法确定问题是什么。
如果我尝试只插入一行:
INSERT INTO cards (name, suit, suit_symbol, score) VALUES (
-- Spades
("A", "spades", "♠", 1)
);
我收到未捕获错误:4 列有 1 个值
如果我尝试运行整个过程,我会得到未捕获错误:靠近“)”:语法错误
我猜我的代码至少有两个问题,部分困难在于我已经学了一点 MySQL,这似乎有微妙且令人困惑的不同。
任何帮助我在 Sqlite 中成功构建表并理解它为什么不能按原样工作的帮助将不胜感激。
--CREATE DATABASE IF NOT EXISTS cards;
CREATE TABLE IF not exists "cards" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"name" TEXT,
"suit" TEXT,
"suit_symbol" TEXT,
"score" INTEGER
);
INSERT INTO cards (name, suit, suit_symbol, score) VALUES (
-- Spades
("A", "spades", "♠", 1),
("2", "spades", "♠", 2),
("3", "spades", "♠", 3),
("4", "spades", "♠", 4),
("5", "spades", "♠", 5),
("6", "spades", "♠", 6),
("7", "spades", "♠", 7),
("8", "spades", "♠", 8),
("9", "spades", "♠", 9),
("10", "spades", "♠", 10),
("J", "spades", "♠", 11),
("Q", "spades", "♠", 12),
("K", "spades", "♠", 13),
-- Hearts
("A", "hearts", "♥", 1),
("2", "hearts", "♥", 2),
("3", "hearts", "♥", 3),
("4", "hearts", "♥", 4),
("5", "hearts", "♥", 5),
("6", "hearts", "♥", 6),
("7", "hearts", "♥", 7),
("8", "hearts", "♥", 8),
("9", "hearts", "♥", 9),
("10", "hearts", "♥", 10),
("J", "hearts", "♥", 11),
("Q", "hearts", "♥", 12),
("K", "hearts", "♥", 13),
-- Clubs
("A", "clubs", "♣", 1),
("2", "clubs", "♣", 2),
("3", "clubs", "♣", 3),
("4", "clubs", "♣", 4),
("5", "clubs", "♣", 5),
("6", "clubs", "♣", 6),
("7", "clubs", "♣", 7),
("8", "clubs", "♣", 8),
("9", "clubs", "♣", 9),
("10", "clubs", "♣", 10),
("J", "clubs", "♣", 11),
("Q", "clubs", "♣", 12),
("K", "clubs", "♣", 13),
-- Diamonds
("A", "diamonds", "♦", 1),
("2", "diamonds", "♦", 2),
("3", "diamonds", "♦", 3),
("4", "diamonds", "♦", 4),
("5", "diamonds", "♦", 5),
("6", "diamonds", "♦", 6),
("7", "diamonds", "♦", 7),
("8", "diamonds", "♦", 8),
("9", "diamonds", "♦", 9),
("10", "diamonds", "♦", 10),
("J", "diamonds", "♦", 11),
("Q", "diamonds", "♦", 12),
("K", "diamonds", "♦", 13),
);
最佳答案
值的元组周围不应有外括号。只有一个元组用括号括起来,多个元组之间用逗号分隔。
尝试:
INSERT INTO cards
(name,
suit,
suit_symbol,
score)
VALUES ('A', 'spades', '♠', 1),
('2', 'spades', '♠', 2),
...
('K', 'diamonds', '♦', 13);
顺便说一句:SQL 中字符串文字的正确引号是单引号。双引号用于标识符。尽管某些 DBMS 接受互换它们,但习惯标准方式是个好主意,这更有可能是跨平台的。
关于Sqlite 扑克牌 table ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57637462/