More interesting than the full list of reserved words is the empirical list of words that are rejected as non-delimited table or column name by at least one tested system. Words that are actually reserved words in SQL are set in bold.
Note that you can still use these words as identifiers by putting them under double quotes (").
In the following chart a check mark (✓) means that the word is accepted as unquoted table or column name.
BigQuery BigQuery 2026-11-04 Not as table name cNot as table name cDb2 (LUW) Db2 (LUW) 12.1.5 Not as expression aNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot as expression aNot for column renaming without AS clause bNot as column name dNot for column renaming without AS clause bNot for column renaming without AS clause bNot as expression aNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot as expression aNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot as expression aNot for column renaming without AS clause bNot for column renaming without AS clause bDuckDB DuckDB 2.0.0 Not for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bH2 H2 2.5.252 Not for column renaming without AS clause bNot for column renaming without AS clause bNot as expression aMariaDB MariaDB 13.0.2 Not as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot for column renaming without AS clause bNot as expression aNot as expression aNot as expression aNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cNot as table name cMySQL MySQL 26.10.0 Not for column renaming without AS clause bNot for column renaming without AS clause bNot as expression aNot as expression aOracle DB Oracle DB 23.26.3 Not for column renaming without AS clause bPostgreSQL PostgreSQL 18 Not for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bSQL Server SQL Server 2025 SQLite SQLite 3.54.0 Not as expression aNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot as table name cNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot for column renaming without AS clause bNot as expression aNot for column renaming without AS clause bNot for column renaming without AS clause bACCESS ACCESSIBLE ADD ALL ALTER ANALYSE ANALYZE AND ANTI ANY ARRAY AS ASC ASENSITIVE ASOF ASYMMETRIC AT AUDIT AUTHORIZATION AUTOINCREMENT BACKUP BEFORE BEGIN BETWEEN BIGINT BINARY BLOB BOTH BREAK BROWSE BULK BY CALL CASCADE CASE CAST CENTURIES CENTURY CHANGE CHAR CHARACTER CHECK CHECKPOINT CLOSE CLUSTER CLUSTERED COALESCE COLLATE COLLATION COLUMN COMMENT COMMIT COMPRESS COMPUTE CONCAT CONCURRENTLY CONDITION CONNECT CONSTRAINT CONTAINS CONTAINSTABLE CONTINUE CONVERSION CONVERT COUNT CREATE CROSS CUBE CUME_DIST CURRENT CURRENT_CATALOG CURRENT_DATE CURRENT_PATH CURRENT_ROLE CURRENT_SCHEMA CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR DATABASE DATABASES DATE DAY DAYS DAY_HOUR DAY_MICROSECOND DAY_MINUTE DAY_SECOND DBCC DEALLOCATE DEC DECADE DECADES DECIMAL DECLARE DEFAULT DEFERRABLE DEFINE DELAYED DELETE DENSE_RANK DENY DESC DESCRIBE DETERMINISTIC DISTINCT DISTINCTROW DISTRIBUTED DIV DO DOUBLE DROP DUAL EACH ELSE ELSEIF EMPTY ENCLOSED END END-EXEC ENUM ERRLVL ESCAPE ESCAPED EXCEPT EXCLUDE EXCLUSIVE EXEC EXECUTE EXISTS EXIT EXPLAIN EXPORT_STATE EXTERNAL EXTRACT FALSE FETCH FILE FILLFACTOR FILTER FIRST_VALUE FLOAT FLOAT4 FLOAT8 FOLLOWING FOR FORCE FOREIGN FREETEXT FREETEXTTABLE FREEZE FROM FULL FULLTEXT FUNCTION GENERATED GET GLOB GOTO GRANT GRAPH_TABLE GROUP GROUPING GROUPS HASH HAVING HIGH_PRIORITY HOLDLOCK HOUR HOURS HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND IDENTIFIED IDENTITY IDENTITYCOL IDENTITY_INSERT IF IGNORE ILIKE IMMEDIATE IN INCREMENT INDEX INDEXED INFILE INITIAL INITIALLY INNER INOUT INSENSITIVE INSERT INT INT1 INT2 INT3 INT4 INT8 INTEGER INTERSECT INTERVAL INTO IO_AFTER_GTIDS IO_BEFORE_GTIDS IS ISNULL ITERATE JOIN JSON_ARRAYAGG JSON_OBJECTAGG JSON_TABLE KEY KEYS KILL LAG LAMBDA LAST_VALUE LATERAL LEAD LEADING LEAVE LEFT LEVEL LIBRARY LIKE LIMIT LINEAR LINENO LINES LOAD LOCALTIME LOCALTIMESTAMP LOCK LONG LONGBLOB LONGTEXT LOOP LOW_PRIORITY MATCH MATCH_RECOGNIZE MAX MAXEXTENTS MAXVALUE MEDIUMBLOB MEDIUMINT MEDIUMTEXT MEMBER MERGE MICROSECOND MICROSECONDS MIDDLEINT MILLENNIA MILLENNIUM MILLISECOND MILLISECONDS MIN MINUS MINUTE MINUTES MINUTE_MICROSECOND MINUTE_SECOND MLSLABEL MOD MODE MODIFIES MODIFY MONTH MONTHS NATIONAL NATURAL NEW NO NOAUDIT NOCHECK NOCOMPRESS NONCLUSTERED NOT NOTHING NOTNULL NOWAIT NO_WRITE_TO_BINLOG NTH_VALUE NTILE NULL NULLIF NULLS NUMBER NUMERIC OF OFF OFFLINE OFFSET OFFSETS ON ONLINE ONLY OPEN OPENDATASOURCE OPENQUERY OPENROWSET OPENXML OPTIMIZE OPTIMIZER_COSTS OPTION OPTIONALLY OR ORDER OUT OUTER OUTFILE OVER OVERLAPS PARTITION PCTFREE PERCENT PERCENTILE_CONT PERCENTILE_DISC PERCENT_RANK PIVOT PIVOT_LONGER PIVOT_WIDER PLACING PLAN PORTION POSITION POSITIONAL PRECEDING PRECISION PRIMARY PRINT PRIOR PROC PROCEDURE PUBLIC PURGE QUALIFY QUARTER QUARTERS RAISE RAISERROR RANGE RANK RAW READ READS READTEXT READ_WRITE REAL RECONFIGURE RECURSIVE REFERENCES REGEXP RELEASE RENAME REPEAT REPLACE REPLICATION REQUIRE RESIGNAL RESOURCE RESPECT RESTORE RESTRICT RETURN RETURNING REVERT REVOKE RIGHT RLIKE ROLLBACK ROLLUP ROW ROWCOUNT ROWGUIDCOL ROWID ROWNUM ROWS ROW_NUMBER RULE SAVE SCHEMA SCHEMAS SECOND SECONDS SECOND_MICROSECOND SELECT SEMANTICKEYPHRASETABLE SEMANTICSIMILARITYDETAILSTABLE SEMANTICSIMILARITYTABLE SEMI SENSITIVE SEPARATOR SESSION SESSION_USER SET SETUSER SHARE SHOW SHUTDOWN SIGNAL SIMILAR SIZE SMALLINT SOME SOUNDS SPATIAL SPECIFIC SQL SQLEXCEPTION SQLSTATE SQLWARNING SQL_AFTER_GTIDS SQL_BEFORE_GTIDS SQL_BIG_RESULT SQL_BUFFER_RESULT SQL_CACHE SQL_CALC_FOUND_ROWS SQL_NO_CACHE SQL_SMALL_RESULT SSL START STARTING STATISTICS STATS_AUTO_RECALC STATS_PERSISTENT STATS_SAMPLE_PAGES STDDEV_POP STDDEV_SAMP STORED STRAIGHT_JOIN STRUCT SUBSTRING SUCCESSFUL SUM SUMMARIZE SYMMETRIC SYNONYM SYSDATE SYSTEM SYSTEM_USER TABLE TABLESAMPLE TERMINATED TEXTSIZE THEN TINYBLOB TINYINT TINYTEXT TO TOP TRAILING TRAN TRANSACTION TREAT TRIGGER TRIM TRUE TRUNCATE TRY_CONVERT TSEQUAL UESCAPE UID UNBOUNDED UNDO UNION UNIQUE UNKNOWN UNLOCK UNNEST UNPACK UNPIVOT UNSIGNED UPDATE UPDATETEXT USAGE USE USER USING UTC_DATE UTC_TIME UTC_TIMESTAMP VALIDATE VALUE VALUES VARBINARY VARCHAR VARCHAR2 VARCHARACTER VARIADIC VARYING VAR_POP VAR_SAMP VECTOR VERBOSE VIEW VIRTUAL WAITFOR WEEK WEEKS WHEN WHENEVER WHERE WHILE WINDOW WITH WITHIN WITHOUT WRITE WRITETEXT XOR YEAR YEARS YEAR_MONTH ZEROFILL You can’t catch up on 20 years of SQL evolution in one day. Subscribe the newsletter via E-Mail , Bluesky or RSS to gradually catch up and to keep modern-sql.com on your radar.
About the Author Markus Winand provides insights into SQL and shows how different systems support it at modern-sql.com . Previously he made use-the-index-luke.com , which is still actively maintained. Markus can be hired as trainer, speaker and consultant via winand.at .