-- 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
。