Why couldn’t the definition of REFERENCES be expanded to also support table constraints, and then FOREIGN KEY could be eliminated from SQL?
It’s clear that the difference between REFERENCES and FOREIGN KEY is that REFERENCES is a column constraint, whereas FOREIGN KEY is a table constraint.
For example, create table T (A int, B int, C int, primary key (A,B), (B,C) references T(A,B) on delete cascade) is not legal, because you need to have foreign key before (B, C), because the constraint refers to multiple columns.
SQL is verbose and highly explicit. Why? There will be no good answer except for the fact that the SQL-1992 standard already defined things this way:
FOREIGN KEYis just a mandatory keyword in a DDL statement. That’s it. One could argue that aFOREIGN KEYconstraint shouldn’t be a higher-class citizen compared to aUNIQUEorCHECKconstraint, hence they all need their appropriate keyword