CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(255) NOT NULL ) ENGINE=InnoDB; CREATE TABLE orders ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, order_date DATE NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB;
上面的代码演示了如何在MySQL中创建两个表:users和orders。users表包含用户ID、用户名和密码;而orders表包含订单ID、用户ID和订单日期。两个表之间的关联在orders表中通过引用外键实现。
具体来说,orders表的user_id列被定义为一个外键,这意味着它的值必须与users表的id列匹配。如果尝试在orders表中插入一个不存在于users表中的用户ID,则会返回一个错误。此外,外键在删除或更新相关行时起到了非常重要的作用。在上面的示例代码中,如果从users表中删除一个用户,则会自动从orders表中删除该用户的所有订单(ON DELETE CASCADE)。同样,如果在users表中更新一个用户的ID,则相关订单的用户ID也会自动更新(ON UPDATE CASCADE)。