Sqlite扑克牌表

时间:2019-08-24 11:18:49

标签: sql sqlite

我正在使用Sqlite学习SQL。我想使用Sqlite创建一个简单的扑克牌。我的尝试在下面。

因为我一直遇到语法错误,所以我尝试让DB browser for Sqlite创建代码以通过手动添加字段来创建表。现在,我剩下某种混合语法了,通过语法检查器将其弄不清楚是什么问题。

如果我尝试仅插入一行:

INSERT INTO cards (name, suit, suit_symbol, score) VALUES (

    -- Spades
    ("A", "spades", "♠", 1)
  );

我得到Uncaught Error: 1 values for 4 columns

如果我尝试运行整个过程,则会得到Uncaught Error: near ")": syntax error

我猜我的代码至少有两个问题,部分困难是我已经学到了一点点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), 
    );

1 个答案:

答案 0 :(得分:3)

在元组的值周围不应有外部括号。只是一个元组被括号包围,多个元组被逗号分隔。

尝试:

INSERT INTO cards
            (name,
             suit,
             suit_symbol,
             score)
            VALUES ('A', 'spades', '♠', 1), 
                   ('2', 'spades', '♠', 2),
                   ...
                   ('K', 'diamonds', '♦', 13);

顺便说一句:SQL中字符串文字的正确引号是单引号。双引号用于标识符。尽管某些DBMS接受了互换它们的建议,但是习惯于采用标准方式是个好主意,这种方式更可能是跨平台的。