create table flight (
flight_Ref_No VARCHAR(11) NOT NULL,
flightCrewList_ID NUMBER(10) NOT NULL,
aircraft_Model_No VARCHAR(6) NOT NULL,
flight_Date DATE NOT NULL,
flight_Time TIME NOT NULL,
Departure VARCHAR(50) NOT NULL,
Arrival VARCHAR(50) NOT NULL,
primary key(flight_Ref_No),
foreign key(flightCrewList_ID) references crew_list(C_List_ID),
foreign key(aircraft_Model_No) references aircraft(aircraft_Model_No),
constraint chk_flight_Ref_No check (REGEXP_LIKE(flight_Ref_No, '^[A-Z]\d\d\d\d-\d\d\d\d$')),
constraint chk_CrewList_No check (REGEXP_LIKE(flightCrewList_ID, '^\d\d\d\d\d\d\d\d\d\d$')),
constraint chk_aircraft_Model_No check (REGEXP_LIKE(aircraft_Model_No, '^[A-Z][A-Z]\d\d\d\d$'))
);
create table aircraft (
aircraft_Model_No VARCHAR(6) NOT NULL,
aircraft_ID VARCHAR(10) NOT NULL,
flight_Hrs NUMBER(10,2) NOT NULL,
Registration_Num NUMBER(15) NOT NULL,
Manufacturer VARCHAR(20) NOT NULL,
Manufacture_Year NUMBER(4) NOT NULL,
Status CHAR(1) NOT NULL,
primary key(aircraft_Model_No, aircraft_ID),
constraint chk_aircraft_Model_No check (REGEXP_LIKE(aircraft_Model_No, '^[A-Z][A-Z]\d\d\d\d$')),
constraint chk_aircraft_ID check (REGEXP_LIKE(aircraft_ID, '^[A-Z][A-Z][A-Z]\d\d\d\d\d\d\d$')),
constraint chk_Status check (UPPER(Status) in ('A','M'))
);
create table maintenance (
maintenance_ID NUMBER(10) NOT NULL,
aircraft_ID VARCHAR(10) NOT NULL,
maintenance_Team VARCHAR(5) NOT NULL,
Damaged_Parts VARCHAR(50) NOT NULL,
Description VARCHAR(50) NOT NULL,
primary key(maintenance_ID),
foreign key(aircraft_ID) references aircraft(aircraft_ID),
constraint chk_maintenance_ID check (REGEXP_LIKE(maintenance_ID, '^\d\d\d\d\d\d\d\d\d\d$')),
constraint chk_aircraft_ID check (REGEXP_LIKE(aircraft_ID, '^[A-Z][A-Z][A-Z]\d\d\d\d\d\d\d$'))
);
create table booking (
Acc_ID VARCHAR(10) NOT NULL,
booking_ID NUMBER(7) NOT NULL,
flight_Ref_No VARCHAR(11) NOT NULL,
flight_Class CHAR(1) NOT NULL,
Price NUMBER(10,2) NOT NULL,
primary key(Acc_ID, booking_ID),
foreign key(Acc_ID) references account(Acc_ID),
foreign key(flight_Ref_No) references flight(flight_Ref_No),
constraint chk_Acc_ID check (REGEXP_LIKE(Acc_ID, '^[A-Z][A-Z][A-Z][A-Z]--\d\d\d\d$')),
constraint chk_flight_Ref_No check (REGEXP_LIKE(flight_Ref_No, '^[A-Z]\d\d\d\d-\d\d\d\d$')),
constraint chk_flight_Class check (UPPER(flight_Class) in ('E','P','B','F'))
);
create table passenger (
Passport VARCHAR(9) NOT NULL,
passenger_IC NUMBER(12) NOT NULL,
Seat_Num VARCHAR(3) NOT NULL,
First_Name VARCHAR(10) NOT NULL,
Last_Name VARCHAR(20) NOT NULL,
Gender CHAR(1) NOT NULL,
DOB DATE NOT NULL,
Nationality VARCHAR(3) NOT NULL,
Baggage_Weight NUMBER(4,2) NOT NULL,
primary key(Passport, passenger_IC),
constraint chk_Passport check (REGEXP_LIKE(Passport, '^[A-Z][0-9]+$')),
constraint chk_Seat_Num check (REGEXP_LIKE(Seat_Num, '^[A-Z]\d\d$')),
constraint chk_Gender check (UPPER(Gender) in ('M','F')),
constraint chk_Nationality check (REGEXP_LIKE(Nationality, '^[A-Za-z][A-Za-z][A-Za-z]$'))
);
create table discount (
discount_Rate NUMBER(1,2) NOT NULL,
Price NUMBER(10,2) NOT NULL,
Condition_discount VARCHAR(100),
primary key(discount_Rate),
foreign key(Price) references booking(Price)
);
create table account (
Acc_ID VARCHAR(10) NOT NULL,
Email VARCHAR(35) NOT NULL,
Password VARCHAR(20) NOT NULL,
Created_at DATE NOT NULL,
Last_login_at TIME NOT NULL,
Phone_Num NUMBER(11) NOT NULL,
Acc_Name VARCHAR(10) NOT NULL,
Age NUMBER(2) NOT NULL,
primary key(Acc_ID, booking_ID),
constraint chk_Acc_ID check (REGEXP_LIKE(Acc_ID, '^[A-Z][A-Z][A-Z][A-Z]--\d\d\d\d$')),
constraint chk_Email check (REGEXP_LIKE(email,'^[a-zA-Z]\w+@(\S+)$'))
);
create table crew_list (
C_List_ID NUMBER(10) NOT NULL,
pilot_ID NUMBER(4) NOT NULL,
Co-pilot_ID NUMBER(4) NOT NULL,
Stewardess_1_ID NUMBER(4) NOT NULL,
Stewardess_2_ID NUMBER(4) NOT NULL,
Steward_1_ID NUMBER(4) NOT NULL,
Steward_2_ID NUMBER(4) NOT NULL,
primary key(C_List_ID),
foreign key(pilot_ID) references pilot(pilot_ID),
foreign key(Co-pilot_ID) references pilot(pilot_ID),
foreign key(Stewardess_1_ID) references crew_cabin(Crew_ID),
foreign key(Stewardess_2_ID) references crew_cabin(Crew_ID),
foreign key(Steward_1_ID) references crew_cabin(Crew_ID),
foreign key(Steward_2_ID) references crew_cabin(Crew_ID),
constraint chk_CrewList_No check (REGEXP_LIKE(C_List_ID, '^\d\d\d\d\d\d\d\d\d\d$'))
);
create table pilot (
pilot_ID NUMBER(4) NOT NULL,
pilot_Rank VARCHAR(10) NOT NULL,
Total_flight_Hrs NUMBER(10,2) NOT NULL,
pilot_Leave_Status CHAR(1) NOT NULL,
primary key(pilot_ID, pilot_Rank),
foreign key(pilot_ID) references worker(worker_ID),
constraint chk_pilot_Leave_Status check (UPPER(pilot_Leave_Status) in ('L','W'))
);
create table crew_cabin (
Crew_ID NUMBER(4) NOT NULL,
Crew_Rank VARCHAR(10) NOT NULL,
Working_Hrs NUMBER(10,2) NOT NULL,
Crew_Leave_Status CHAR(1) NOT NULL,
primary key(Crew_ID, Crew_Rank),
foreign key(Crew_ID) references worker(worker_ID),
constraint chk_Crew_Leave_Status check (UPPER(Crew_Leave_Status) in ('L','W'))
);
create table worker (
worker_ID NUMBER(4) NOT NULL,
section_ID NUMBER(2) NOT NULL,
W_First_Name VARCHAR(10) NOT NULL,
W_Last_Name VARCHAR(20) NOT NULL,
W_Gender CHAR(1) NOT NULL,
W_Age NUMBER(2) NOT NULL,
Date_of_Employment DATE NOT NULL,
W_Email VARCHAR(35) NOT NULL,
W_Phone_Num NUMBER(11) NOT NULL,
Salary NUMBER(6,2) NOT NULL,
primary key(worker_ID),
foreign key(section_ID) references section(section_ID),
constraint chk_worker_Gender check (UPPER(W_Gender) in ('M','F'),
constraint chk_worker_Email check (REGEXP_LIKE(email,'^[a-zA-Z]\w+@(\S+)$'))
);
create table section (
section_ID NUMBER(2) NOT NULL,
section_Name VARCHAR(20) NOT NULL,
Description VARCHAR(50) NOT NULL,
primary key(section_ID)
);
insert into section values(01, 'TESTING', 'TESTING');
commit;
上面的代码根本不起作用,我不明白为什么。当我尝试在运行 SQL 命令行中运行脚本时,oracle 不断提示以下消息
SP2-0734:以“primary ke...”开头的未知命令 - 行的其余部分被忽略。 SP2-0734:以“约束...”开头的未知命令 - 忽略行的其余部分。 SP2-0734:以“约束...”开头的未知命令 - 忽略行的其余部分。 SP2-0734:以“约束...”开头的未知命令 - 忽略行的其余部分。 SP2-0044:要获取已知命令的列表,请输入 HELP,要退出,请输入 EXIT。 SP2-0042:未知命令“)”- 行的其余部分被忽略。 SP2-0734:以“primary ke...”开头的未知命令 - 行的其余部分被忽略。 SP2-0734:以“foreign ke...”开头的未知命令 - 行的其余部分被忽略。 SP2-0734:以“约束...”开头的未知命令 - 忽略行的其余部分。 SP2-0734:以“约束...”开头的未知命令 - 忽略行的其余部分。
如果您在 SQL*Plus 中运行此命令,正如您所看到的那样,请删除
primary key ...
行之前的空白行,或者执行以下操作:
set sqlblanklines on
在脚本开头更改行为。
默认情况下,SQL*Plus 将空行解释为语句的结尾,但不运行它。因此,每个整个
create table
命令的第一部分基本上都会被忽略,而从 primary key
开始直到分离的 ;
语句的第二部分被视为独立命令。因此您会收到错误消息,因为这些部分本身无效。
来自文档:
设置 SQLBL[ANKLINES] {ON |关闭}
控制 SQL*Plus 是否在 SQL 命令或脚本中放置空行。 ON 将空行和新行解释为 SQL 命令或脚本的一部分。 OFF,默认值,不允许在 SQL 命令或脚本或脚本中出现空行或新行。