Table of Contents
Microsoft T-SQL keywords
Return to Keywords
SQL Server: SQL Server PowerShell, dbatools, Microsoft SQL, Azure SQL Server, T-SQL (Transact-SQL), T-SQL keywords, SQL Reserved Words, SQL Server glossary, SQL Server GitHub, SQL Server 2022, SQL Server 2019, SQL Server 2017, SQL Server 2014, SQL Server 2012, SQL Server on Kubernetes, SQL Server on Containers, SQL Server on Linux, Awesome SQL Server (navbar_sqlserver - see also navbar_dbatools — MERGE navbar_sqlserver and navbar_sql_server and replace navbar_sql_server on all articles)
Reserved Keywords (Transact-SQL)
11/30/2021
Applies to: SQL Server (all supported versions), Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, Analytics Platform System (PDW)
Microsoft SQL Server uses reserved keywords for defining, manipulating, and accessing databases. Reserved keywords are part of the grammar of the Transact-SQL language that is used by SQL Server to parse and understand Transact-SQL statements and batches. Although it is syntactically possible to use SQL Server reserved keywords as identifiers and object names in Transact-SQL scripts, you can do this only by using delimited identifiers.
The following table lists SQL Server and Azure Synapse Analytics reserved keywords.
ALL
AND
FOR
AS
FROM
IF
IN
SEMANTICSIMILARITYDETAILSTABLE
KILL
SOME
STATISTICS
LIKE
SYSTEM_USER
CROSS
LINENO
LOAD
TABLESAMPLE
CURRENT_DATE
NATIONAL
THEN
NOCHECK
TO
CURRENT_USER
NONCLUSTERED
NOT
TRAN
TRANSACTION
DBCC
NULLIF
TRIGGER
DEALLOCATE
OF
DECLARE
OFF
TRY_CONVERT
OFFSETS
TSEQUAL
ON
DENY
OPEN
DESC
OPENDATASOURCE
UNPIVOT
DISK
OPENQUERY
OPENROWSET
DISTRIBUTED
OPENXML
USE
DOUBLE
USER
OR
OVER
WAITFOR
ERRLVL
PIVOT
EXCEPT
PLAN
WHILE
PRECISION
WITH
EXECUTE
WITHIN GROUP
PROC
The following table lists reserved keywords that are exclusive to Azure Synapse Analytics.
Additionally, the ISO standard defines a list of reserved keywords. Avoid using ISO reserved keywords for object names and identifiers. The ODBC reserved keyword list, shown in the following table, is the same as the ISO reserved keyword list.
Note
The ISO standards reserved keywords list sometimes can be more restrictive than SQL Server and at other times less restrictive. For example, the ISO reserved keywords list contains INT. SQL Server does not have to distinguish this as a reserved keyword.
Transact-SQL reserved keywords can be used as identifiers or names of databases or database objects, such as tables, columns, views, and so on. Use either quoted identifiers or delimited identifiers. Using reserved keywords as the names of variables and stored procedure parameters is not restricted.
ODBC Reserved Keywords The following words are reserved for use in ODBC function calls. These words do not constrain the minimum SQL grammar; however, to ensure compatibility with drivers that support the core SQL grammar, applications should avoid using these keywords.
This is the current list of ODBC reserved keywords.
ABSOLUTE
OVERLAPS
ACTION
EXECUTE
ADA
PARTIAL
PASCAL
ALL
EXTRACT
ALLOCATE
PRECISION
AND
ARE
FOR
PRIOR
AS
FORTRAN
ASSERTION
FROM
REAL
GET
GO
BIT_LENGTH
BOTH
ROWS
SCROLL
IN
CHAR_LENGTH
INDICATOR
INITIALLY
SMALLINT
SOME
INT
INTEGER
SQLCA
SQLCODE
INTERVAL
SQLERROR
SQLSTATE
SQLWARNING
ISOLATION
CONSTRAINTS]]
SYSTEM_USER
THEN
CROSS
LIKE
CURRENT_DATE
TO
CURRENT_USER
TRANSACTION
TRIM
DEALLOCATE
DEC
NAMES
NATIONAL
DECLARE
UNKNOWN
DEFERRED
NO
NONE
USER
DESC
NOT
DESCRIBE
NULLIF
DISCONNECT
OCTET_LENGTH
OF
ON
DOUBLE
ONLY
WHENEVER
OPEN
WITH
OR
WORK
EXCEPT
Future Keywords The following keywords could be reserved in future releases of SQL Server as new features are implemented. Consider avoiding the use of these words as identifiers.
ABSOLUTE
HOST
ACTION
ADMIN
IGNORE
INDICATOR
ROLLUP
ALLOCATE
INITIALLY
ARE
INOUT
ARRAY
ROWS
INT
ASSERTION
INTEGER
SCROLL
INTERSECTION
SCOPE
INTERVAL
ISOLATION
BLOB
LATERAL
SETS
BOTH
BREADTH
SMALLINT
CALLED
LIKE_REGEX
CARDINALITY
SPECIFIC
LN
SPECIFICTYPE
SQLEXCEPTION
SQLSTATE
LOCATOR
SQLWARNING
MAP
CLOB
STATE
COMPLETION
STDDEV_POP
MOD
STDDEV_SAMP
CONSTRAINTS]]
NAMES
THAN
CUBE
NEW
CURRENT_DEFAULT_TRANSFORM_GROUP
NO
NONE
CURRENT_TRANSFORM_GROUP_FOR_TYPE
OLD
ONLY
UNDER
UNKNOWN
DEC
ORDINALITY
UNNEST
OUT
DEFERRED
DESCRIBE
PARTIAL
WHENEVER
POSTFIX
WITHOUT
DICTIONARY
PREFIX
WINDOW
WITHIN
DISCONNECT
WORK
PERCENTILE_CONT
EACH
PERCENTILE_DISC
PRIOR
XMLDOCUMENT
READS
REAL
GET
GO