Explain Codes LogoExplain Codes Logo

Creating table names that are reserved words/keywords in MS SQL Server

sql
best-practices
database-design
sql-server
Alex KataevbyAlex Kataev·Oct 6, 2024
TLDR

To use reserved keywords as table names in MS SQL Server, encase them within double quotes or square brackets like so:

CREATE TABLE "Table" ( "Column" INT );

or

CREATE TABLE [Table] ( [Column] INT );

Using quotation marks or brackets tricks SQL Server into understanding them as names, rather than reserved words.

Strategies for avoiding conflicts

While encapsulating reserved keywords to prevent conflicts is a relief, here's how to minimize the odds even further:

  • Avoid Reserved Words: Make a habit of consulting the official list of reserved keywords before choosing table names.
  • Use Related Context Names: To evade keyword restrictions, try assigning context-related names to tables, like EmployeeData or ProductDetails.
  • Suffixing and Prefixing: Use prefixes (tblTable) or suffixes (Tabletbl) to clearly differentiate between custom and reserved names. This also helps SQL Server to avoid getting confused (Trust me, it happens!).

Identifying reserved keywords

Before you dare take a reserved word's seat, make sure you know your adversaries:

  • SQL Server Management Studio (SSMS) is your best friend here: it boldly highlights reserved keywords in pink, warning you about potential conflicts.
  • You can also consult the official documentation to get an updated list of reserved keywords. Yes, SQL Server is known to have new reserved words with each new version, so keep an eye out!

Using escaped keywords in queries

Now, when you're bold enough to use these reserved names in your queries, remember the law of encapsulation:

SELECT * FROM [User]; --💡 Don't forget those brackets though!

Don't encase your special names, and SQL Server will unforgivingly raise an error due to confusion. Trust me, you don't want SQL Server confused!

Why using reserved keywords could be a bad idea

As convenient as it may seem, using reserved words as identifiers can bring unintended chaos. The coders who come after you may not appreciate the headache! When the DBA asks for the next dose of their headache pill, they'll know who to blame!

Best practices for table naming

While designing your database schema, remember these golden rules:

  • Consistency: Keeping naming conventions across your database helps readability.
  • Future-proofing: Avoid using current non-reserved words that may become reserved in future SQL Server releases.
  • SQL Portability: If there's a chance your database might be shifted to another SQL-compatible system, avoiding reserved words can ensure a smooth transition.

Elimination game: Alternatives to reserved words

If you want to prevent a pink alert in SSMS, consider these playful alternatives:

  • Want to use 'User'? Try UserList
  • Eyeing 'Order'? How about OrderDetails?
  • Like the sound of 'Role'? Think of RoleClass

These alternatives prevent keyword conflicts and add a dash of creativity to your database design!