TIPS
In the realm of programming, SQL is a language that stands the test of time for managing and handling data. However, writing readable, efficient, and maintainable SQL requires adhering to certain best practices and conventions. Although I may not be a SQL expert, in my experience, I've gathered a set of invaluable tips and tricks to enhance your SQL skillset.
Today, I will share 8 tips for writing maintainable SQL scripts.
1. Always Use Uppercase for Keywords
A basic rule is to use uppercase for SQL keywords, and lowercase for your tables and columns. SQL functions such as FIRST_VALUE(), DATE_TRUNC(), etc., also should be in uppercase.
Thus, instead of 'select id, title from library.books',
we recommend 'SELECT id, title FROM library.books'.
2. Use Snake Case for the schemas, tables, columns
There are various case types suited for different programming languages: camelCase, PascalCase, kebab-case, and snake_case. For SQL, snake_case (or underscore case) is the best choice.
Here's a recommendation:
Avoid:
SELECT [Books.id](<https://books.id/>), Books.title, COUNT([Checkouts.id](<https://checkouts.id/>)) as checkOutCount FROM LIBRARY.Books JOIN LIBRARY.Checkouts ON [Books.id](<https://books.id/>) = Checkouts.bookId WHERE Books.genre = 'Fiction' GROUP BY [Books.id](<https://books.id/>), Books.title
Prefer:
SELECT [books.id](<https://books.id/>), books.title, COUNT([checkouts.id](<https://checkouts.id/>)) as check_out_count FROM library.books JOIN library.checkouts ON [books.id](<https://books.id/>) = checkouts.book_id WHERE books.genre = 'Fiction' GROUP BY [books.id](<https://books.id/>), books.title
Even though some prefer using variations to differentiate between schemas, tables, and columns, sticking to snake case is the best practice.
3. Use Aliases for Readability
Aliases are a handy tool to rename tables or columns making them more clear and understandable.
Here is an example:
Avoid:
SELECT books.book_col1, nested.f0_ FROM library.books JOIN ( SELECT member_id, MIN(date) FROM library.borrows GROUP BY member_id ) ON member_id = [books.id](<https://books.id/>)
Prefer:
SELECT books.book_col1 as book_title, first_borrow.date as first_borrow_date FROM library.books JOIN ( SELECT member_id, MIN(date) as date FROM library.borrows GROUP BY member_id ) AS first_borrow ON first_borrow.member_id = [books.id](<https://books.id/>)
4. Formatting: Use Indentation & White spaces
Indentation and white spaces can make your code more readable. It’s recommended to indent after a keyword and when you use a subquery or a derived table. Also, add spaces in the where clause for clarity.
5. Avoid Select *
You should be specific about what you want to Select, therefore avoid using Select *. Using 'Select *' can make your code unclear and could lead to unwanted results if the tables evolve over time.
6. Prefer ANSI-92 JOIN Syntax
Instead of using the SQL WHERE Clause for Joining Tables, it’s a best practice to use the JOIN / ANSI-92 syntax. It separates the relationship logic from the filters and improves readability.
7. Incorporate Common Table Expression (CTE)
Common Table Expression (CTE) is specific syntax for a named temporary result set, which is derived within the execution scope of a single SQL statement. CTEs make your queries more readable and can be referred multiple times.
8. Splitting into Multiple Queries When Needed
Sometimes, breaking down complex queries into smaller, simple queries might be beneficial. This could simplify the code and improve clarity. Take note that this method might affect readability and performance, especially with OLAP or any column-oriented databases, which are optimized for aggregations and analytics queries but less efficient when it comes to transactions.
In a summary, developing a knack for writing effective SQL takes practice and dedication. By incorporating the above-mentioned rules, I discovered that not only did my queries became clearer, but they also improved in performance. Remember, consistency is key to maintaining any code, and SQL is no exception. By sticking to these guidelines and continuously refining your skills, you too can master the art of writing proficient SQL.
If you're interested in automating your SQL scripting, why not try AI2SQL, an AI- SQL query builder? This tool can change the way you handle databases and reduce the time spent on SQL script writing manually. Check out AI2SQL and experience the AI SQL script writing process.