July 18th, 2024

I Get SQL, Kind Of

Kyle Benzle had a breakthrough understanding of SQL, likening it to a tool for managing data like a digital filing cabinet. Recognizing SQL as a program simplifies its complexity and aids in grasping its role in programming and data management.

Read original articleLink Icon
I Get SQL, Kind Of

After years of using SQL and databases, Kyle Benzle had a breakthrough moment where he truly understood the essence of SQL. He explains that despite his background in programming and computer science, grasping SQL can be challenging due to its abstract nature and fragmented teaching methods. Benzle likens a database to a digital filing cabinet and SQL as the tool to interact with it, drawing parallels to Excel functions. His "Ah-ha" moment occurred when reinstalling MySQL, realizing that SQL is fundamentally a program for managing data. Understanding SQL as a language for data manipulation shifts the perspective from writing queries to appreciating its role in programming and data management. SQL's core functions include SELECT, INSERT, UPDATE, and DELETE, enabling efficient data operations. Benzle emphasizes that recognizing SQL as a program simplifies its complexity and aids in comprehending its integration into broader data management contexts. This realization, though seemingly basic, can significantly impact beginners' understanding of SQL and its role in programming and data management.

Link Icon 5 comments
By @akvashi - 5 months
I was confused at the ah-ha of "it's a program meant to emulate folders and cabinets" but then the writer mentions he only interacted with DBs through GUIs. Not to disparage the realization but I think to the (many) CS folks on here this may seem obvious.
By @danpalmer - 5 months
> Despite programming since high school and holding a computer science degree, it took me years to truly grasp what SQL is and what it does.

> This realization may seem basic, but for those who are just starting out, understanding that SQL is simply a program designed to interact with databases can make a huge difference.

I'm by no means a SQL expert, I'm not very good at it, but my understanding of what SQL is has been at the level of what's in this blog post since probably my first year of CS at university, potentially even the year before when I was doing some freelance web development at age ~17.

It's good that the author has learnt this, and it's good that the author recognises that this is a relatively basic realisation as well. To me this post says more about the state of education about computing than it does about SQL. 40 years ago, to be a software engineer necessitate being partly a hardware engineer, 20 years ago you could know far less about hardware, I'd suggest that in the last 10 years you can now be a software engineer and not understand a lot of software.

Do you need to know how an OS works to be a software engineer? Not really anymore, at least not for certain classes of software engineering. It seems you don't even need to know how to use a database to be a web developer anymore because things are wrapped up in so many layers. I'd argue that knowing these things makes you a much better software engineer, but if outsourcing, coding bootcamps, and AI tools have shown us anything, it's that most software engineering does not need to be done by experts.

By @jemmyw - 5 months
I've met plenty of people who have worked in computing for some time and have problems understanding anything more than an inner join with SQL. However, this article is really bad. Their relization is that SQL is a program is bizarre in both simplicity - everything running on your computer is just a program of sorts - and not the problem most people need to overcome to understand SQL. And what do they even mean by program? Some databases are talking to another running program that executes your queries, others are using libraries and executing as part of your own program.

What most people who struggle with it are failing on is having a mental model of how it is operating on sets of data. You're working in a procedural language and interacting with something that is not procedural. It flummoxed me for awhile in my first job. I feel lucky that my first job was very heavy on the database side, and had me converting from a file+cursor based database to a SQL database.