Back to blog

SQL

Going Back to SQL Fundamentals

By Adolf Mathebula

Published

Over the past few months, I have been expanding a web application that I hope to finish soon, which I use for practice in my spare time. I have been intentionally setting aside time to revisit the fundamentals and deepen my understanding of SQL, as the application is growing and now demands that I structure my tables correctly.

While SQL is something I have used before, I realized that truly understanding how relational databases work, beyond just writing queries, makes a noticeable difference in how confidently and effectively you build software. So, I decided to slow down and focus on practice. Because, Lord knows, when I was building my application at first, I had no respect for data integrity and normalization; I just wanted to see the application's features working.

Over the last few months, I have been intentional about:

  • Designing schemas from scratch
  • Thinking carefully about relationships, constraints, and data integrity
  • Writing and refactoring queries to better understand joins, views, and foreign keys

More recently, I have been spending time learning about stored procedures and triggers. I was forced to learn more about this because a part of my application needed to update three tables for a certain feature to work effectively and safely with just a click of a button.

Understanding how logic can live closer to the data has been eye-opening, whether it is enforcing business rules, maintaining data consistency, or automating behavior when records are inserted, updated, or deleted. It has given me a much better appreciation of when database-level logic is appropriate and when it should live in the application layer.

In practice, one thing I have particularly enjoyed is working directly from the terminal. Running queries via the MySQL CLI, executing scripts, inspecting schemas, and debugging issues at that level has helped me connect the dots between what is happening in the database and what eventually surfaces in an application. It has been a great reminder that good abstractions are built on a solid understanding of the underlying tools.

Learning like this, deliberately, hands-on, and sometimes a bit uncomfortable, has been both challenging and rewarding. It has reinforced for me that growth in software development often comes from revisiting the basics with more intention and curiosity than before.

To more SQL in 2026.