面试题答案
一键面试-
在MySQL中:
- 首先创建表结构并添加约束。
-- 创建商品表 CREATE TABLE products ( product_id INT PRIMARY KEY, product_name VARCHAR(255), -- 其他商品相关字段 --... ); -- 创建订单表 CREATE TABLE orders ( order_id INT PRIMARY KEY, -- 其他订单相关字段 --... ); -- 创建订单详情表,并添加外键约束和检查约束 CREATE TABLE order_items ( order_item_id INT PRIMARY KEY, order_id INT, product_id INT, quantity INT, FOREIGN KEY (product_id) REFERENCES products(product_id), CHECK (quantity > 0), FOREIGN KEY (order_id) REFERENCES orders(order_id) );
- 解释:
FOREIGN KEY (product_id) REFERENCES products(product_id)
:这行代码在order_items
表的product_id
列上创建了一个外键约束,确保插入到order_items
表中的product_id
值必须在products
表的product_id
列中已经存在,从而保证了数据的引用完整性。CHECK (quantity > 0)
:这行代码创建了一个检查约束,确保插入到order_items
表中的quantity
值大于0,即商品数量不能为负数。
-
在Oracle中:
-- 创建商品表 CREATE TABLE products ( product_id NUMBER PRIMARY KEY, product_name VARCHAR2(255) -- 其他商品相关字段 --... ); -- 创建订单表 CREATE TABLE orders ( order_id NUMBER PRIMARY KEY -- 其他订单相关字段 --... ); -- 创建订单详情表,并添加外键约束和检查约束 CREATE TABLE order_items ( order_item_id NUMBER PRIMARY KEY, order_id NUMBER, product_id NUMBER, quantity NUMBER, CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(product_id), CONSTRAINT ck_quantity CHECK (quantity > 0), CONSTRAINT fk_order_id FOREIGN KEY (order_id) REFERENCES orders(order_id) );
- 解释:
CONSTRAINT fk_product_id FOREIGN KEY (product_id) REFERENCES products(product_id)
:通过CONSTRAINT
关键字定义了一个名为fk_product_id
的外键约束,将order_items
表的product_id
列与products
表的product_id
列关联起来,保证数据引用的完整性。CONSTRAINT ck_quantity CHECK (quantity > 0)
:定义了一个名为ck_quantity
的检查约束,确保quantity
列的值大于0。
- 解释:
-
在SQL Server中:
-- 创建商品表 CREATE TABLE products ( product_id INT PRIMARY KEY, product_name VARCHAR(255) -- 其他商品相关字段 --... ); -- 创建订单表 CREATE TABLE orders ( order_id INT PRIMARY KEY -- 其他订单相关字段 --... ); -- 创建订单详情表,并添加外键约束和检查约束 CREATE TABLE order_items ( order_item_id INT PRIMARY KEY, order_id INT, product_id INT, quantity INT, CONSTRAINT FK_product_id FOREIGN KEY (product_id) REFERENCES products(product_id), CONSTRAINT CK_quantity CHECK (quantity > 0), CONSTRAINT FK_order_id FOREIGN KEY (order_id) REFERENCES orders(order_id) );
- 解释:
CONSTRAINT FK_product_id FOREIGN KEY (product_id) REFERENCES products(product_id)
:在order_items
表的product_id
列上创建了一个名为FK_product_id
的外键约束,确保product_id
的引用完整性。CONSTRAINT CK_quantity CHECK (quantity > 0)
:创建了一个名为CK_quantity
的检查约束,保证quantity
列的值为正数。
- 解释: