The purpose of the as keyword is for shorter table name when creating foreign keys.
Take the following snippet as an example:
Table follows as f {
following_user_id integer
followed_user_id integer
created_at timestamp
}
Table users as u {
id integer [primary key]
username varchar
role varchar
created_at timestamp
}
Table posts {
id integer [primary key]
title varchar
body text [note: 'Content of the post']
user_id integer [not null]
status varchar
created_at timestamp
}
Ref user_posts: posts.user_id > u.id
Ref: u.id < f.following_user_id
Ref: u.id < f.followed_user_id
Here, the tables users and follows are aliased as u and f for the foreign key definitions to just use 1 character for the table names.
Also, I tried the following snippet in PostgreSQL and it raise the error table name "e" specified more than once:
CREATE TABLE EMPLOYEE (
empId INTEGER PRIMARY KEY,
name TEXT NOT NULL,
deptId INTEGER NOT NULL
);
INSERT INTO EMPLOYEE VALUES (1, 'John', 1);
INSERT INTO EMPLOYEE VALUES (2, 'Jane', 2);
CREATE TABLE DEPARTMENT (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
INSERT INTO DEPARTMENT VALUES (1, 'HR');
INSERT INTO DEPARTMENT VALUES (2, 'Sales');
SELECT * FROM EMPLOYEE as e, DEPARTMENT as e WHERE e.deptId = 1 AND e.id = 1;
If having same name for tables work for you, could you provide us a sample snippet for that case, and also the information about the system that you are using, including:
The SQL dialect and it’s version (PostgreSQL 16.6, MySQL 8.4, …)
Your operating system (Windows 10, Ubuntu 22.04, …)