Sqlite 扑克牌 table

标签 sql sqlite

我正在使用 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/

相关文章:

sql - SQLZoo 中列出没有获得医学诺贝尔奖的年份

sql - 按行和日期范围过滤 SQL 查询

MySQL DUPLICATE KEY UPDATE + SUM 函数

android - 如何将 MSSQL 数据库转换为适用于 Android 的 SQLite 数据库

c# - 为什么我的 Xamarin.Forms 应用程序在从 Web API 将数据插入 SQLite 数据库后崩溃?

android - SQLite 将列转换为逗号分隔的字符串

使用串联字段的 SQL JOIN

Mysql从2个表运行总计

sql - 将 SQLite DB 文件转换为 "LINQ to SQL",如 SQLMetal.exe

c# - UWP/C# 如何将 Comboboxitem 选择保存为 Sqlite 中的字符串