创建数据库并添加表

时间:2019-12-06 13:28:24

标签: sql database sqlite db-browser-sqlite

我是sql的新手,所以遇到一个问题,要求我为城市创建数据库。我使用数据库浏览器创建的数据库。

数据库代码如下。当我尝试使用数据库向其中添加任何内容,甚至查看它是否创建成功时,都会出现错误:

  

“ DATABASE”附近的SQL逻辑错误。

我不确定我编写的代码出了什么问题。

CREATE DATABASE City;
CREATE TABLE IF NOT EXISTS "OfficialEmployee" (
    "EID"   INTEGER NOT NULL,
    "FirstName" TEXT NOT NULL,
    "LastName"  TEXT NOT NULL,
    "BirthDate" TEXT NOT NULL,
    "City"  TEXT NOT NULL,
    "StreetName"    TEXT NOT NULL,
    "Number"    INTEGER NOT NULL,
    "Door"  INTEGER NOT NULL,
    "StartWorkingDate"  TEXT NOT NULL,
    "Degree"    TEXT NOT NULL,
    "DID"   TEXT NOT NULL,
    PRIMARY KEY("EID"),
    FOREIGN KEY("DID") REFERENCES "Department"("DID") On delete cascade on update cascade
);

CREATE TABLE IF NOT EXISTS "ConstructorEmployee" (
    "EID"   INTEGER NOT NULL,
    "FirstName" TEXT NOT NULL,
    "LastName"  TEXT NOT NULL,
    "BirthDate" TEXT NOT NULL,
    "City"  TEXT NOT NULL,
    "StreetName"    TEXT NOT NULL,
    "Number"    INTEGER NOT NULL,
    "Door"  INTEGER NOT NULL,
    "CompanyName"   TEXT NOT NULL,
    "SalaryPerDay"  INTEGER NOT NULL,
    PRIMARY KEY("EID")
);

CREATE TABLE IF NOT EXISTS "Employee_Phones" (
    "EID"   INTEGER NOT NULL,
    "CellPhoneNumber"   INTEGER NOT NULL,
    PRIMARY KEY("EID","CellPhoneNumber")
);


CREATE TABLE IF NOT EXISTS "Department" (
    "DID"   INTEGER NOT NULL,
    "Name"  TEXT NOT NULL,
    "Description"   TEXT NOT NULL,
    "ManagerID" INTEGER,
    PRIMARY KEY("DID"),
    FOREIGN KEY("ManagerID") REFERENCES "OfficialEmployee"("EID") On Update cascade on delete no action
);

CREATE TABLE IF NOT EXISTS "Neighborhood" (
    "NID"   INTEGER NOT NULL,
    "Name"  TEXT NOT NULL,
    PRIMARY KEY("NID")
);

CREATE TABLE IF NOT EXISTS "Apartment" (
    "StreetName"    TEXT NOT NULL,
    "Number"    INTEGER NOT NULL,
    "Door"  INTEGER NOT NULL,
    "Type"  TEXT NOT NULL,
    "SizeSquareMeter"   INTEGER NOT NULL,
    "NID"   INTEGER NOT NULL,
    FOREIGN KEY("NID") REFERENCES "Neighborhood"("NID") on delete no action on update no action,
    PRIMARY KEY("Door","StreetName","Number")
);


CREATE TABLE IF NOT EXISTS "Project" (
    "PID"   INTEGER NOT NULL,
    "Name"  TEXT NOT NULL,
    "Description"   TEXT NOT NULL,
    "Budget"    INTEGER NOT NULL,
    "NID"   INTEGER NOT NULL,
    PRIMARY KEY("PID"),
    FOREIGN KEY("NID") REFERENCES "Neighborhood"("NID") On Update no action on delete no action
);

CREATE TABLE IF NOT EXISTS "ProjectConstructorEmployee" (
    "EID"   INTEGER NOT NULL,
    "PID"   INTEGER NOT NULL,
    "StartWorkingDate"  TEXT NOT NULL,
    "EndWorkingDate"    TEXT,
    "JobDescription"    TEXT NOT NULL,
    FOREIGN KEY("PID") REFERENCES "Project"("PID") On Update Cascade on Delete No Action,
    FOREIGN KEY("EID") REFERENCES "ConstructorEmployee"("EID") On Update Cascade On Delete No Action
);

CREATE TABLE IF NOT EXISTS "Resident" (
    "RID"   INTEGER NOT NULL,
    "FirstName" TEXT NOT NULL,
    "LastName"  TEXT NOT NULL,
    "BirthDate" TEXT NOT NULL,
    "StreetName"    TEXT NOT NULL,
    "Number"    INTEGER NOT NULL,
    "Door"  INTEGER NOT NULL,
    "CatalogID" INTEGER NOT NULL,
    PRIMARY KEY("RID"),
    FOREIGN KEY("Door") REFERENCES "Apartment"("Door") On update cascade on delete no action,
    FOREIGN KEY("StreetName") REFERENCES "Apartment"("StreetName") On Update cascade on delete no action,
    FOREIGN KEY("Number") REFERENCES "Apartment"("Number") On Update cascade on delete no action
);

CREATE TABLE IF NOT EXISTS "TrashCan" (
    "CatalogID" INTEGER NOT NULL,
    "CreationDate"  TEXT NOT NULL,
    "ExpirationDate"    TEXT NOT NULL CHECK(ExpirationDate>CreationDate),
    PRIMARY KEY("CatalogID")
);
CREATE TABLE IF NOT EXISTS "ParkingArea" (
    "AID"   INTEGER NOT NULL,
    "Name"  TEXT NOT NULL,
    "PricePerHour"  INTEGER NOT NULL,
    "MaxPricePerDay"    INTEGER NOT NULL,
    "NID"   INTEGER NOT NULL,
    PRIMARY KEY("AID"),
    FOREIGN KEY("NID") REFERENCES "Neighborhood"("NID") On Update cascade on delete cascade
);

CREATE TABLE IF NOT EXISTS "CarParking" (
    "CID"   INTEGER NOT NULL,
    "StartTime" TEXT NOT NULL,
    "EndTime"   TEXT NOT NULL CHECK(StartTime<EndTime),
    "Cost"  INTEGER NOT NULL CHECK(MaxPricePerDay>Cost),
    "AID"   INTEGER NOT NULL,
    "MaxPricePerDay"    INTEGER NOT NULL,
    PRIMARY KEY("CID","StartTime"),
    FOREIGN KEY("CID") REFERENCES "Cars"("CID") On Update Cascade on delete cascade,
    FOREIGN KEY("AID") REFERENCES "ParkingArea"("AID") On Delete set null on update cascade
);



1 个答案:

答案 0 :(得分:0)

我不认为您可以在SQLite的数据库中创建数据库

只需在命令行上执行此操作:

UNIX:$ touch my.db

Windows:c:> type nul > my.db

然后,您可以使用数据库浏览器打开数据库

相关问题