Skip to main content

Command Palette

Search for a command to run...

Day Three with SQL: Inserting Data, Querying Smarter, and Working with Real Datasets

Published
3 min read

Day three was all about reinforcing the basics, not rushing forward, but getting comfortable with SQL by practicing it repeatedly on real data.

I spent most of today working through SQLZoo exercises, inserting data into PostgreSQL, and querying a realistic dataset generated with Mockaroo. This helped bridge the gap between theory and actual usage.

Inserting Data into Tables

I practiced inserting data into tables and also learned a very useful PostgreSQL feature: importing SQL files directly.

Using the psql terminal, I learned how to run SQL files with:

\i path_to_file/file_name.sql

To test this properly, I downloaded a 1,000-row dataset from Mockaroo, adjusted some table parameters and constraints to match the data, and then imported it into my database.

Seeing a large dataset populate my tables instantly made everything feel much more real.

Querying Data with SELECT (Again, but Better)

I continued practicing the now very familiar SELECT statement, but with more structure and intention.

Sorting Results with ORDER BY

I learned how to sort query results using ORDER BY.

SELECT * FROM users ORDER BY first_name;

By default, sorting is ascending (ASC), but it can be reversed using DESC.

SELECT * FROM users ORDER BY first_name DESC;

Getting Unique Values with DISTINCT

To avoid duplicate results, I practiced using DISTINCT:

SELECT DISTINCT country FROM users;

This was especially useful when working with location-based data.

Filtering with WHERE and Logical Operators

I practiced filtering results using WHERE, along with logical operators:

  • AND

  • OR

These allow conditions to be combined logically, making queries more precise.

Comparison Operators

I also learned and practiced comparison operators such as:

  • \= (equal)

  • <, > (less than, greater than)

  • <=, >=

  • <> (not equal)

These were useful for filtering ages, dates, and numeric values in the dataset.

Limiting Results with LIMIT and OFFSET

I learned how to control how many rows are returned using:

SELECT * FROM users LIMIT 10 OFFSET 20;

LIMIT controls how many rows are returned

OFFSET skips a specified number of rows

I also learned that LIMIT isn’t part of the SQL standard, which led me to discover the SQL-standard alternative.

Using FETCH Instead of LIMIT

PostgreSQL also supports the SQL-standard FETCH syntax:

SELECT * FROM users FETCH FIRST 6 ROWS ONLY;

When I saw this for the first time, I was genuinely surprised and also very grateful that LIMIT exists.

Searching with IN and BETWEEN

I practiced filtering values using sets and ranges.

Using IN

SELECT * FROM users WHERE country IN ('Nigeria', 'Ghana', 'Kenya');

Using BETWEEN

SELECT * FROM users WHERE dob BETWEEN '1990-01-01' AND '2000-12-31';

These made queries much more expressive and readable.

Pattern Matching with LIKE and ILIKE

I revisited pattern matching using:

  • LIKE (case-sensitive)

  • ILIKE (case-insensitive)

I also learned about wildcards:

  • % → matches any number of characters

  • _ → matches exactly one character

This was especially useful for querying email patterns in the Mockaroo dataset.

Grouping Results with GROUP BY

Finally, I practiced grouping records using GROUP BY.

For example, I grouped users by their countries to see how many users belonged to each location:

SELECT country_of_birth, COUNT(country_of_birth) AS "Number of Users" FROM users GROUP BY country_of_birth ORDER BY COUNT(country_of_birth);

This was my first real taste of how SQL starts to answer aggregate questions, not just retrieve rows.

Final Thoughts

Day three reinforced an important lesson: mastery comes from repetition.

Working with a real dataset made every query feel purposeful, and practicing the same concepts in different ways helped solidify my understanding. SQL is starting to feel less like syntax and more like a way of thinking.

Tomorrow, I’ll be learning and practicing even more.