如何用外键创建mysql数据库中的表,这是另一个表的主键?

时间:2013-06-21 07:00:22

标签: mysql

CREATE TABLE employee_detail(
 e_id int auto_increment,
 name varchar(20) not null,
 address varchar(20) not null,
 status varchar(200) not null,
 primary key (e_id),    
);

这是我的第一个表(employee_login),我想在下一个表(login)中将e_id作为外键

CREATE TABLE login(
 login_id int auto_increment,
 username varchar(20) not null,
 password varchar(20) not null,
 primary key (login_id),
 e_id references employee_detail(e_id) 
);

2 个答案:

答案 0 :(得分:0)

你可以这样做:

CREATE TABLE person (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    name CHAR(60) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE shirt (
    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
    color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
    owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),
    PRIMARY KEY (id)
);

我希望您了解创建表代码。 owner表中的shirt是引用id表中的person的外键

答案 1 :(得分:0)

你有几个错误。您在登录表中缺少e_id列,如果不添加employee_detail的主键列(在本例中为e_id),则无法添加外键。此外,您不能将密码用作列名,因为它是一个预先建立的查询,您需要使用其他类似“pass”的内容。

CREATE TABLE employee_detail(
 e_id int auto_increment,
 name varchar(20) not null,
 address varchar(20) not null,
 status varchar(200) not null,
 primary key (e_id));

CREATE TABLE login(
 login_id INT PRIMARY KEY AUTO_INCREMENT, 
 username VARCHAR(20) NOT NULL,
 pass VARCHAR(20) NOT NULL,
 e_id INT,
 FOREIGN KEY (e_id) REFERENCES employee_detail(e_id) 
 );