Reserved Words

The Empirical List


More interesting than the full list of reserved words is the empirical list of words that are rejected as non-delimited table or column name0 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.

BigQueryBigQuery 2025-09-02Not as table namecNot as table namecDb2 (LUW)Db2 (LUW) 12.1.2Not as expressionaNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot as expressionaNot for column renaming without AS clausebNot as column namedNot for column renaming without AS clausebNot for column renaming without AS clausebNot as expressionaNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot as expressionaNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot as expressionaNot for column renaming without AS clausebNot for column renaming without AS clausebDerbyDerby 10.17.1.0Not as expressionaNot for column renaming without AS clausebH2H2 2.3.232Not for column renaming without AS clausebNot for column renaming without AS clausebNot as expressionaMariaDBMariaDB 12.0.2Not as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot for column renaming without AS clausebNot as expressionaNot as expressionaNot as expressionaNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecNot as table namecMySQLMySQL 9.3.0Not for column renaming without AS clausebNot for column renaming without AS clausebNot as expressionaNot as expressionaOracle DBOracle DB 23.9Not for column renaming without AS clausebPostgreSQLPostgreSQL 17Not for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebSQL ServerSQL Server 2022SQLiteSQLite 3.50.0Not as expressionaNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot as table namecNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot for column renaming without AS clausebNot as expressionaNot for column renaming without AS clausebNot for column renaming without AS clausebACCESSACCESSIBLEADDALLALLOCATEALTERANALYSEANALYZEANDANYAREARRAYASASCASENSITIVEASSERTIONASYMMETRICATAUDITAUTHORIZATIONAUTOINCREMENTAVGBACKUPBEFOREBEGINBETWEENBIGINTBINARYBITBLOBBOOLEANBOTHBREAKBROWSEBULKBYCALLCASCADECASCADEDCASECASTCHANGECHARCHARACTERCHARACTER_LENGTHCHECKCHECKPOINTCLOSECLUSTERCLUSTEREDCOALESCECOLLATECOLLATIONCOLUMNCOMMENTCOMMITCOMPRESSCOMPUTECONCATCONCURRENTLYCONDITIONCONNECTCONNECTIONCONSTRAINTCONSTRAINTSCONTAINSCONTAINSTABLECONTINUECONVERTCORRESPONDINGCOUNTCREATECROSSCUBECUME_DISTCURRENTCURRENT_CATALOGCURRENT_DATECURRENT_PATHCURRENT_ROLECURRENT_SCHEMACURRENT_TIMECURRENT_TIMESTAMPCURRENT_USERCURSORDATABASEDATABASESDATEDAYDAYSDAY_HOURDAY_MICROSECONDDAY_MINUTEDAY_SECONDDBCCDEALLOCATEDECDECIMALDECLAREDEFAULTDEFERRABLEDEFERREDDEFINEDEFINERDELAYEDDELETEDENSE_RANKDENYDESCDESCRIBEDETERMINISTICDIAGNOSTICSDISCONNECTDISTINCTDISTINCTROWDISTRIBUTEDDIVDODOUBLEDROPDUALEACHELSEELSEIFEMPTYENCLOSEDENDEND-EXECENUMERRLVLESCAPEESCAPEDEXCEPTEXCEPTIONEXCLUDEEXCLUSIVEEXECEXECUTEEXISTSEXITEXPLAINEXTERNALEXTRACTFALSEFETCHFILEFILLFACTORFILTERFIRSTFIRST_VALUEFLOATFLOAT4FLOAT8FOLLOWINGFORFORCEFOREIGNFOUNDFREETEXTFREETEXTTABLEFREEZEFROMFULLFULLTEXTFUNCTIONGENERATEDGETGLOBGLOBALGOGOTOGRANTGROUPGROUPINGGROUPSHASHHAVINGHIGH_PRIORITYHOLDLOCKHOURHOURSHOUR_MICROSECONDHOUR_MINUTEHOUR_SECONDIDENTIFIEDIDENTITYIDENTITYCOLIDENTITY_INSERTIFIGNOREILIKEIMMEDIATEININCREMENTINDEXINDEXEDINDICATORINFILEINITIALINITIALLYINNERINOUTINPUTINSENSITIVEINSERTINTINT1INT2INT3INT4INT8INTEGERINTERSECTINTERVALINTOINVOKERIO_AFTER_GTIDSIO_BEFORE_GTIDSISISNULLISOLATIONITERATEJOINJSON_ARRAYAGGJSON_OBJECTAGGJSON_TABLEKEYKEYSKILLLAGLASTLAST_VALUELATERALLEADLEADINGLEAVELEFTLEVELLIBRARYLIKELIMITLINEARLINENOLINESLOADLOCALTIMELOCALTIMESTAMPLOCKLONGLONGBLOBLONGTEXTLOOPLOWERLOW_PRIORITYLTRIMMASTER_SSL_VERIFY_SERVER_CERTMATCHMATCH_RECOGNIZEMAXMAXEXTENTSMAXVALUEMEDIUMBLOBMEDIUMINTMEDIUMTEXTMEMBERMERGEMICROSECONDMICROSECONDSMIDDLEINTMINMINUSMINUTEMINUTESMINUTE_MICROSECONDMINUTE_SECONDMLSLABELMODMODEMODIFIESMODIFYMONTHMONTHSNATIONALNATURALNCHARNEWNEXTNONOAUDITNOCHECKNOCOMPRESSNONCLUSTEREDNONENOTNOTHINGNOTNULLNOWAITNO_WRITE_TO_BINLOGNTH_VALUENTILENULLNULLIFNULLSNUMBERNUMERICNVARCHAROFOFFOFFLINEOFFSETOFFSETSONONLINEONLYOPENOPENDATASOURCEOPENQUERYOPENROWSETOPENXMLOPTIMIZEOPTIMIZER_COSTSOPTIONOPTIONALLYORORDEROUTOUTEROUTFILEOUTPUTOVEROVERLAPSPADPARALLELPARTIALPARTITIONPCTFREEPERCENTPERCENTILE_CONTPERCENTILE_DISCPERCENT_RANKPIVOTPLACINGPLANPORTIONPOSITIONPRECEDINGPRECISIONPREPAREPRESERVEPRIMARYPRINTPRIORPRIVILEGESPROCPROCEDUREPUBLICPURGERAISERAISERRORRANGERANKRAWREADREADSREADTEXTREAD_WRITEREALRECONFIGURERECURSIVEREFERENCESREGEXPRELATIVERELEASERENAMEREPEATREPLACEREPLICATIONREQUIRERESIGNALRESOURCERESPECTRESTORERESTRICTRETURNRETURNINGREVERTREVOKERIGHTRLIKEROLLBACKROLLUPROWROWCOUNTROWGUIDCOLROWIDROWNUMROWSROW_NUMBERRTRIMRULESAVESCHEMASCHEMASSCROLLSECONDSECONDSSECOND_MICROSECONDSELECTSEMANTICKEYPHRASETABLESEMANTICSIMILARITYDETAILSTABLESEMANTICSIMILARITYTABLESENSITIVESEPARATORSESSIONSESSION_USERSETSETUSERSHARESHOWSHUTDOWNSIGNALSIMILARSIZESMALLINTSOMESOUNDSSPACESPATIALSPECIFICSQLSQLCODESQLERRORSQLEXCEPTIONSQLIDSQLSTATESQLWARNINGSQL_AFTER_GTIDSSQL_BEFORE_GTIDSSQL_BIG_RESULTSQL_BUFFER_RESULTSQL_CACHESQL_CALC_FOUND_ROWSSQL_NO_CACHESQL_SMALL_RESULTSSLSTARTSTARTINGSTATISTICSSTATS_AUTO_RECALCSTATS_PERSISTENTSTATS_SAMPLE_PAGESSTDDEV_POPSTDDEV_SAMPSTOREDSTRAIGHT_JOINSUBSTRINGSUCCESSFULSUMSYMMETRICSYNONYMSYSDATESYSTEMSYSTEM_USERTABLETABLESAMPLETEMPORARYTERMINATEDTEXTSIZETHENTIMEZONE_HOURTIMEZONE_MINUTETINYBLOBTINYINTTINYTEXTTOTOPTRAILINGTRANTRANSACTIONTRANSLATETRANSLATIONTREATTRIGGERTRIMTRUETRUNCATETRY_CONVERTTSEQUALUESCAPEUIDUNBOUNDEDUNDOUNIONUNIQUEUNKNOWNUNLOCKUNNESTUNPIVOTUNSIGNEDUPDATEUPDATETEXTUPPERUSAGEUSEUSERUSINGUTC_DATEUTC_TIMEUTC_TIMESTAMPVALIDATEVALUEVALUESVARBINARYVARCHARVARCHAR2VARCHARACTERVARIADICVARYINGVAR_POPVAR_SAMPVERBOSEVIEWVIRTUALWAITFORWHENWHENEVERWHEREWHILEWINDOWWITHWITHINWITHOUTWORKWRITEWRITETEXTXMLXMLEXISTSXMLPARSEXMLQUERYXMLSERIALIZEXORYEARYEARSYEAR_MONTHZEROFILL
  1. Not as expression
  2. Not for column renaming without as clause
  3. Not as table name
  4. Not as column name

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

Photo of Markus Winand

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.

Buy the Book

Cover of “SQL Performance Explained”: Squirrel running on grass

The essence of SQL tuning in 200 pages

Buy now!
(paperback and/or PDF)

Paperback also available at Amazon.com.

Hire Markus

Markus offers SQL training and consulting for developers working at companies of all sizes.
Learn more »

Footnotes

  1. Future editions of the list might cover more identifier types such as type names, function names, …

Connect with Markus Winand

Subscribe mailinglistsSubscribe the RSS feedMarkus Winand on LinkedInMarkus Winand on XINGMarkus Winand on TwitterMarkus Winand on Bluesky
Copyright 2015-2025 Markus Winand. All righs reserved.
Legal | Contact | NO WARRANTY | Trademarks | Privacy and GDPR