请问这个代码出了什么问题?我收到无效语法错误


-- create a table
CREATE TABLE customers
(
id              INTEGER PRIMARY KEY NOT NULL,
name            TEXT NOT NULL,
billing_address TEXT NOT NULL
);
CREATE TABLE products 
(
id    INTEGER PRIIMARY KEY NOT NULL,
price NUMBER NOOT NULL
);
CREATE TABLE orders 
(
id               INTEGER NOT NULL,
customer_id      NUMBER NOT NULL,
product_id       NUMBER NOT NULL,
delivery_address TEXT NOT NULL,
FOREIGN KEY(customer_id) REFERENCES customers(id),
FOREIGN KEY(product_id) REFERENCES products(id)
);

如果您正在运行SQL Server,您的代码会出现以下问题:

  • SQL Server中有NUMBER数据类型:可以使用DECIMAL,也可以使用浮动类型的数据类型,如FLOAT

  • 外键列的数据类型必须与父列的数据数据类型匹配。

  • TEXT是遗留数据类型,计划在SQL Server的未来版本中删除;您可以使用NVARCHAR

  • 你的代码中也有一些拼写错误。

这是有效的:

CREATE TABLE customers (
id                 INTEGER PRIMARY KEY NOT NULL,
name               NVARCHAR(100) NOT NULL,
billing_address    NVARCHAR(100) NOT NULL
);
CREATE TABLE products (
id                 INTEGER PRIMARY KEY NOT NULL,
price              DECIMAL(15,2) NOT NULL
);
CREATE TABLE orders (
id                 INTEGER NOT NULL,
customer_id        INTEGER NOT NULL,
product_id         INTEGER NOT NULL,
delivery_address   NVARCHAR(100) NOT NULL,
FOREIGN KEY(customer_id) REFERENCES customers(id),
FOREIGN KEY(product_id)  REFERENCES products(id)
);

如果您正在运行SQLite(您也标记了它(,那么您只需要修复NOOT NULL上的拼写错误。我还建议对齐外键列的数据类型,尽管SQLite仍然允许将NUMBER映射到INTEGER

相关内容

  • 没有找到相关文章

最新更新