DEV Community

Cover image for Understanding SQL Queries: A Beginner’s Guide pt1
marco cabrera
marco cabrera

Posted on

Understanding SQL Queries: A Beginner’s Guide pt1

Target Audience: New developers who might not be very familiar with SQL.


Introduction

Welcome to this beginner’s guide to SQL! If you’re new to databases and SQL (Structured Query Language), you’re in the right place. We'll break down the anatomy of an SQL query and explore how to craft basic SELECT operations.


The Anatomy of an SQL Query

An SQL query is composed of several key components, each serving a specific purpose in data retrieval or manipulation. Let’s dissect these components:

select statement being broken down into it's parts

1. Actions (SELECT, INSERT, DELETE, UPDATE)

  • SELECT: Retrieves data from the database.
  • INSERT: Adds new records to a table.
  • DELETE: Removes records from a table.
  • UPDATE: Modifies existing records in a table.

These actions specify the operation you wish to perform and can target one or many rows.

2. Columns ([column])

  • Specifies the columns you want to retrieve or manipulate.
  • Can include data transformations or aggregate functions (e.g., SUM, COUNT).
  • Allows for calculations or modifications to the data on-the-fly.

3. FROM Clause

  • Marks the end of the column list and precedes the target table.
  • Indicates which table(s) to retrieve or manipulate data from.

4. Table ([table])

  • The specific table you wish to query in the database.

5. WHERE Clause

  • Indicates that you’re specifying conditions for data retrieval or manipulation.
  • Used to filter records based on specific criteria.

6. Search Criteria ([search criteria])

  • The conditions that follow the WHERE clause.
  • Filters data so that only records meeting the criteria are affected.
  • Without this, the query could return or affect all records in the table.

Understanding Data Types

A data type defines the kind of value a column can hold, specifying the data’s format and ensuring integrity. For example, you can’t store 'hello world' (a string) in an INT (integer) column.

Common SQL Data Types:

  • INT: Whole numbers (e.g., 1, 42, 1000).
  • VARCHAR(n): Text strings up to n characters (e.g., 'Hello', 'Database').
  • DECIMAL(p,s): Decimal numbers with precision p and scale s (e.g., 123.45).
  • DATE: Dates (e.g., '2023-10-15').
  • DATETIME: Date and time values (e.g., '2023-10-15 14:30:00').

Why Data Types Matter:

  • Data Integrity: Prevents invalid data entry.
  • Optimization: Enhances storage efficiency and query performance.
  • Validation: Automatically checks data compatibility during insertion.

Crafting SQL Queries

Let's see how you'd go about writing SELECT statements. This is an opinionated approach based on what I've experienced in the industry.


Example Database: Dinosaurs and People

We'll use a simple example with a Dinosaur table.

-- Drop the tables if they already exist to avoid errors
DROP TABLE IF EXISTS Dinosaur;

-- Create the Dinosaur table
CREATE TABLE Dinosaur (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    height DECIMAL(5,2), -- Height in meters
    weight DECIMAL(7,2), -- Weight in kilograms
    time_period_alive_in VARCHAR(100)
);

-- Insert fake data into the Dinosaur table
INSERT INTO Dinosaur (id, name, height, weight, time_period_alive_in) VALUES
(1, 'Tyrannosaurus Rex', 12.0, 8000.00, 'Late Cretaceous'),
(2, 'Triceratops', 3.0, 6000.00, 'Late Cretaceous'),
(3, 'Stegosaurus', 4.0, 5500.00, 'Late Jurassic'),
(4, 'Brachiosaurus', 13.0, 62000.00, 'Late Jurassic'),
(5, 'Velociraptor', 0.5, 15.00, 'Late Cretaceous');
Enter fullscreen mode Exit fullscreen mode

Scenario: Retrieving Dinosaurs from the 'Late Cretaceous' Period

Let's walk through a practical example:

"Get all the dinosaurs that lived in the 'Late Cretaceous' period."

Step 1: Exploring the Data

Before writing a complex query, it's helpful to see what's in the table. You can start with:

SELECT * FROM Dinosaur;
Enter fullscreen mode Exit fullscreen mode

This simple query returns all the data from the Dinosaur table.

results from the 'select * from dinosaurs'

Note: Be cautious when working with large datasets, as retrieving all rows can be time-consuming. In such cases, you can limit the number of returned rows using clauses like LIMIT or TOP. For example:

  • In MySQL and PostgreSQL:
  SELECT * FROM Dinosaur LIMIT 500;
Enter fullscreen mode Exit fullscreen mode
  • In SQL Server:
  SELECT TOP 500 * FROM Dinosaur;
Enter fullscreen mode Exit fullscreen mode

The asterisk (*) tells the SQL engine to return all columns from the target table.

Step 2: Analyzing the Data

Reviewing the output helps you understand the structure of the table, the columns available, and the kind of data stored.

Step 3: Applying a Filter with WHERE

Now that we know the table structure, we can write a query to retrieve only the dinosaurs from the 'Late Cretaceous' period:

SELECT * FROM Dinosaur
WHERE time_period_alive_in = 'Late Cretaceous';
Enter fullscreen mode Exit fullscreen mode

applying the filter using a where clause and results

Key Points:

  • WHERE Clause: Filters the results to include only records where the condition is true.
  • Search Criteria: time_period_alive_in = 'Late Cretaceous' is our condition.

Tip on Quotes:

  • Be mindful of using single quotes (') around string literals in SQL.
  • Using incorrect quotes (e.g., double quotes " or backticks `) can cause errors.
  • Stick to single quotes for strings to ensure your query runs correctly.

Conclusion

Understanding the basic components of an SQL query is crucial for any developer working with databases. By breaking down queries into their fundamental parts, you can:

  • Retrieve Data: Use SELECT with specified columns and conditions.
  • Insert Data: Add new records using INSERT.
  • Update Data: Modify existing records with UPDATE.
  • Delete Data: Remove records using DELETE.

Always start by understanding your data — explore the tables and get familiar with the columns and types of data they hold. This foundation will make writing and debugging queries much more straightforward. In this first part of our series, we've focused on SELECT statements. Stay tuned for upcoming posts where we'll dive into INSERT, UPDATE, and DELETE operations.


Happy querying!

Top comments (0)