我正在使用Oracle SQL开发人员使用以下命令创建基本表:
CREATE TABLE chartered_flight(
flight_no NUMBER(4) PRIMARY KEY
, customer_id FOREIGN KEY
, aircraft_no FOREIGN KEY
, flight_type VARCHAR2 (12)
, flight_date DATE NOT NULL
, flight_time TO_DATE 'HH:MI' NOT NULL
, takeoff_at CHAR (3) NOT NULL
, destination CHAR (3) NOT NULL
)
缺少右括号在哪里?或者我使用的语法不正确。
我做了以下更改:
CREATE TABLE chartered flight(
flight_no NUMBER(4) PRIMARY KEY
, customer_id NUMBER(6) REFERENCES [customer]([customer_id])
, aircraft_no NUMBER(4) REFERENCES [aircraft]([aircraft_no])
, flight_type VARCHAR2 (12)
, flight_date DATE NOT NULL
, flight_time INTERVAL DAY TO SECOND NOT NULL
, takeoff_at CHAR (3) NOT NULL
, destination CHAR (3) NOT NULL)
现在我收到了这个错误:
Error at Command Line:1 Column:23
Error report:
SQL Error: ORA-00922: missing or invalid option
00922. 00000 - "missing or invalid option"
*Cause:
*Action:
我觉得这与TO_DATE有关,还是因为我还没有创建我的飞机桌,所以缺少飞机_no?请帮助一下,谢谢。
答案 0 :(得分:2)
没有名为TO_DATE的类型。 To_DATE用于将字符串转换为日期。
因此create语句应该类似于
CREATE TABLE chartered_flight(
flight_no NUMBER(4) PRIMARY KEY,
customer_id FOREIGN KEY,
aircraft_no FOREIGN KEY,
flight_type VARCHAR2 (12),
flight_date DATE NOT NULL,
flight_time VARCHAR(4) NOT NULL,
takeoff_at CHAR (3) NOT NULL,
destination CHAR (3) NOT NULL)
从表格中选择数据时,您可以使用to_date。例如
Select to_date(flight_date, 'yyyy/mm/dd') from chartered_flight;
答案 1 :(得分:1)
要指定外键约束,您应该使用内联customer_id [type] REFERENCES [master_table_name]([master_column_name])
或外联语法:, CONSTRAINT [constraint_name] FOREIGN KEY(customer_id) REFERENCES [master_table_name]([master_column_name])
查看更多示例here。此外,通常在外键列上添加索引是有意义的。
对于flight_time,您可能需要使用INTERVAL DAY TO SECOND
类型
答案 2 :(得分:0)
ALTER TABLE EMPLOYEE_DETAILS ADD( EMPLOYEE_ID号码(10), 员工姓名VARCHAR2(100), );
以上ALTER语句导致以下错误
错误报告:
SQL错误:ORA-00907:缺少右括号
00907. 00000 - "错过右括号"
*原因:
*行动:
我怎么纠正自己,这是正确的。
ALTER TABLE EMPLOYEE_DETAILS ADD( EMPLOYEE_ID号码(10), EMPLOYEE_NAME VARCHAR2(100), );
解决方案:第二列名称中有一个空格导致此错误。
谢谢,
曼尼