【问题标题】:SQL Error: ORA-00904: "CHAMPIONSHIPS": invalid identifierSQL 错误:ORA-00904:“CHAMPIONSHIPS”:标识符无效
【发布时间】:2025-12-08 17:35:01
【问题描述】:

这是我的数据:

CREATE TABLE FavoriteBasketballTeams
    TeamName VARCHAR(255) Primary Key,
    DateCreated Date,
    Championships INT NOT NULL,
    FinalsAppearances INT NOT NULL ;
    
INSERT INTO FavoriteBasketballTeams(TeamName,DateCreated,Championships,FinalsAppearances) Values('Nets','1976','0','2');
INSERT INTO FavoriteBasketballTeams(TeamName,DateCreated,Championships,FinalsAppearances) Values('Thunder','1967','1','4');
INSERT INTO FavoriteBasketballTeams(TeamName,DateCreated,Championships,FinalsAppearances) Values('Lakers','1948','17','32');
INSERT INTO FavoriteBasketballTeams(TeamName,DateCreated,Championships,FinalsAppearances) Values('Trailblazers','1970','1','3');

这些是我得到的错误:

Error starting at line : 1 in command -
CREATE TABLE FavoriteBasketballTeams
    TeamName VARCHAR(255) Primary Key,
    DateCreated Date,
    Championships INT NOT NULL,
    FinalsAppearances INT NOT NULL
Error report -
ORA-00922: missing or invalid option
00922. 00000 -  "missing or invalid option"
*Cause:    
*Action:

Error starting at line : 7 in command -
INSERT INTO FavoriteBasketballTeams(TeamName,DateCreated,Championships,FinalsAppearances) Values('Nets','1976','0','2')
Error at Command Line : 7 Column : 58
Error report -
SQL Error: ORA-00904: "CHAMPIONSHIPS": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

Error starting at line : 8 in command -
INSERT INTO FavoriteBasketballTeams(TeamName,DateCreated,Championships,FinalsAppearances) Values('Thunder','1967','1','4')
Error at Command Line : 8 Column : 58
Error report -
SQL Error: ORA-00904: "CHAMPIONSHIPS": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

Error starting at line : 9 in command -
INSERT INTO FavoriteBasketballTeams(TeamName,DateCreated,Championships,FinalsAppearances) Values('Lakers','1948','17','32')
Error at Command Line : 9 Column : 58
Error report -
SQL Error: ORA-00904: "CHAMPIONSHIPS": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

Error starting at line : 10 in command -
INSERT INTO FavoriteBasketballTeams(TeamName,DateCreated,Championships,FinalsAppearances) Values('Trailblazers','1970','1','3')
Error at Command Line : 10 Column : 58
Error report -
SQL Error: ORA-00904: "CHAMPIONSHIPS": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

【问题讨论】:

  • 在创建表中的字段定义周围插入括号,开始。创建表 FavBasketTeams (teamName ....)。您可以访问 w3schools.com 了解基本 sql。

标签: sql oracle sqlplus


【解决方案1】:

CREATE TABLE 语句中的表名后半列前需要括号:

CREATE TABLE FavoriteBasketballTeams(
    TeamName VARCHAR(255) Primary Key,
    DateCreated Date,
    Championships INT NOT NULL,
    FinalsAppearances INT NOT NULL
);

那么'1976' 是字符串文字,而不是日期。 Oracle 尝试将其解析为日期,但格式不正确;您可以使用 TO_DATE('1976','YYYY') 但这会将日期的月份设置为当年的当前月份,因此使用日期文字 DATE '1976-01-01' 并将月份和日期组件设置为年初可能会更好(或进行一些研究并将其设置为他们成立的实际日期)。另外,当你有一个数字列时,你不应该将值作为字符串传递,只需使用一个数字:

INSERT INTO FavoriteBasketballTeams(
  TeamName,DateCreated,Championships,FinalsAppearances
) Values(
  'Nets',DATE '1976-01-01',0,2
);

INSERT INTO FavoriteBasketballTeams(
  TeamName,DateCreated,Championships,FinalsAppearances
) Values(
  'Thunder', DATE '1967-01-01',1,4
);

INSERT INTO FavoriteBasketballTeams(
  TeamName,DateCreated,Championships,FinalsAppearances
) Values(
  'Lakers', DATE '1948-01-01',17,32
);

INSERT INTO FavoriteBasketballTeams(
  TeamName,DateCreated,Championships,FinalsAppearances
) Values(
  'Trailblazers',DATE '1970-01-01',1,3
);

db小提琴here

【讨论】: