Sql 构建正确的逻辑数据库

Sql 构建正确的逻辑数据库,sql,postgresql,Sql,Postgresql,我在数据库中使用了4个表 例如: Create table applicant( Id int not null primary key, IdName integer idSkill integer, idContact integer Constraint initial foreign key (idName) References Initiale(id) CONSTRAINT contacT foreign key (idContact) References contact(id)

我在数据库中使用了4个表

例如:

Create table applicant(
Id int not null primary key,
IdName integer
idSkill integer,
idContact integer
Constraint initial foreign key (idName) References Initiale(id)
CONSTRAINT contacT foreign key (idContact) References contact(id)
CONSTRAINT Skills foreign key (idSkill) references skill(id))

Create table Initiale(
Id int not null primary key,
 firstname text,
middlename text)

Create table contact(
Id int not null primary key,
phone text,
email text)

Create tabke Skills(
Id int not null primary key,,
Nane text)

我想在4表中迅速插入数据,但我不明白,在申请人中获取id和插入什么。

创建选项卡技能….
将失败。您应该使用
创建表格技能

您也不应该有
Id int not null主键,,
(两个逗号),这将失败

您很可能正在使用
Id INTEGER主键
not
Id int not null主键

这是因为Id列通常应该是行的唯一标识符。使用SQLite时,
INTEGER主键
有一个特殊的测量,而
INT主键不

也就是说,如果使用了
INTEGER主键
,则该列将是rowid列的别名,该列必须是唯一的有符号64位整数,重要的是,如果插入行时未提供值,则SQLite将分配唯一的整数。i、 e.所有重要的Id

这个Id最初是1,然后可能是2,然后可能是3,依此类推,尽管不能保证Id会单调递增

还有其他错误,主要是省略了逗号。以下方面应起作用:-

CREATE TABLE IF NOT EXISTS applicant(
Id INTEGER PRIMARY KEY,
IdName integer,
idSkill integer,
idContact integer,
Constraint initial foreign key (idName) References Initiale(id),
CONSTRAINT contacT foreign key (idContact) References contact(id),
CONSTRAINT Skills foreign key (idSkill) references Skills(id));

Create table IF NOT EXISTS Initiale(
Id INTEGER PRIMARY KEY,
 firstname text,
middlename text);

Create table IF NOT EXISTS contact(
Id INTEGER PRIMARY KEY,
phone text,
email text);

Create table IF NOT EXISTS Skills(
Id INTEGER PRIMARY KEY,
Nane text);
然后,可以沿以下行插入数据:-

INSERT INTO Initiale (firstname,middlename)  -- Note absence of Id so SQLite will generate
VALUES
    ('Fred','James'), -- very likely id 1
    ('Alan','Roy'), -- very likely id 2
    ('Simon','Gerorge')-- very likely id 3
;

INSERT INTO contact  -- alternative way of getting Id generated (specify null for Id)
VALUES
    (null,'0123456789','email01@email.com'), -- very likely id 1
    (null,'0987654321','email02@email.com'), -- very likely id 2
    (null,'3333333333','email03.@email.com') -- very likely id 3
;

INSERT INTO Skills (Nane)
VALUES
    ('Skill01'),('Skill02'),('Skill03') -- very likely id's 1,2 and 3
;

INSERT INTO applicant (IdName,idSkill,idContact)
VALUES
        -- First applicant
        (2, -- Alan Roy
        3, -- Skill 3
        1), -- Contact 0123456789 )

        -- Second Applicant
        (3, -- Simon George
        3, -- Skill 3
        2), -- Contact 0987654321 )

        -- Third Applicant
        (2, -- Alan Roy again????
        1, -- Skill 1
        3), -- contact 3333333333)

        (1,1,1) -- Fred James/ Skill 1/ Contact  0123456789
        --- etc
;
注意,在插入申请表之前,姓名首字母缩写、联系人和技能表上的行必须存在。

然后可以运行以下查询:-

SELECT * FROM applicant 
    JOIN Initiale ON Initiale.Id = idName
    JOIN contact ON contact.Id = idContact
    JOIN Skills ON Skills.Id = idSkill
这将导致(使用上面插入的数据):-


您的第一个
CREATE
缺少一些逗号,最后一个逗号太多。这里的问题是什么?你在寻找可能吗?