Boot.dev Blog
SQL Aggregate Functions: COUNT, SUM, AVG, MIN, and MAX
by Boot.dev Team - Programming course authors and video producers
SQL aggregate functions calculate one result from a set of rows. An aggregate query can return an order count, total revenue, average payment, lowest price, or highest score. The five you'll use most are COUNT, SUM, AVG, MIN, and MAX. GROUP BY, HAVING, and NULL values control what they calculate.
What Is SQL?
by Boot.dev Team - Programming course authors and video producers
SQL (Structured Query Language) is the standard language for working with relational databases. You use it to define tables, read data, insert records, update records, and delete records. It's everywhere in backend development and data analysis because it handles repeatable queries over large datasets without spreadsheet busywork.
SQL CRUD: Create, Read, Update, and Delete Data
by Boot.dev Team - Programming course authors and video producers
SQL CRUD is the set of operations you use to create, read, update, and delete data in a relational database. In SQL, those operations usually map to INSERT, SELECT, UPDATE, and DELETE.
SQL ORDER BY and LIMIT
by Boot.dev Team - Programming course authors and video producers
SQL's ORDER BY clause sorts query results, and LIMIT caps how many rows the database returns. Together, they answer questions like "Which five products cost the most?" Sort direction and tie-breakers determine the order; without ORDER BY, LIMIT doesn't define which rows you'll get.
SQL Indexes: How to Speed Up Database Queries
by Boot.dev Team - Programming course authors and video producers
A query that slows down as its table grows may be scanning far more rows than it returns. SQL indexes give the database a faster route to matching rows, often letting it jump to a small set instead of inspecting the whole table.
SQL WHERE Clause
by Boot.dev Team - Programming course authors and video producers
The SQL WHERE clause filters out rows that don't meet a condition. It lets a SELECT return specific records and keeps an UPDATE or DELETE from touching rows it shouldn't. You can build its conditions with comparisons, NULL checks, AND, OR, IN, and BETWEEN.
SQL SELECT Statement
by Boot.dev Team - Programming course authors and video producers
The SQL SELECT statement reads data from a database. Every read query begins by describing the result you want: stored columns, calculated values, or a combination of both. At its simplest, SELECT name FROM users; returns the name column from every row in users. Real queries can select several columns, rename them with aliases, remove duplicate results, and combine SELECT with clauses that filter, group, sort, or limit rows. This guide starts with the basic syntax, then explains wildcards, expressions, DISTINCT, clause order, and the mistakes that most often make a query fail or return a surprising result.
SQL CREATE TABLE: How to Create and Alter Tables
by Boot.dev Team - Programming course authors and video producers
The SQL CREATE TABLE statement defines a table, its columns, and the data each column should hold. It can also enforce rules such as required values and unique identifiers.
SQL Joins: INNER, LEFT, RIGHT, and FULL JOIN
by Boot.dev Team - Programming course authors and video producers
Relational data is often split across tables, but applications need it brought back together. SQL joins combine those rows: an INNER JOIN keeps matches, a LEFT JOIN or RIGHT JOIN preserves one side, and a FULL JOIN preserves both.
Database Normalization: 1NF, 2NF, and 3NF
by Boot.dev Team - Programming course authors and video producers
Database normalization gives each fact in a relational database one reliable home. It reduces duplicate data and prevents rows from contradicting each other. The first three normal forms, 1NF, 2NF, and 3NF, provide a practical way to find those problems.
SQL LIKE Operator
by Boot.dev Team - Programming course authors and video producers
The SQL LIKE operator filters text using a simple pattern. Use it when you know part of a value but not the whole thing: a name that starts with Al, an email address that ends with a company domain, or a product name that contains banana. Its two wildcards, % and , stand in for unknown characters. Case sensitivity depends on the database.
SQL Constraints: PRIMARY KEY, FOREIGN KEY, UNIQUE, and NOT NULL
by Boot.dev Team - Programming course authors and video producers
SQL constraints prevent invalid data from entering a database. PRIMARY KEY, FOREIGN KEY, UNIQUE, and NOT NULL identify rows, preserve relationships, reject duplicates, and require values.
SQL Subqueries With Examples
by Boot.dev Team - Programming course authors and video producers
Sometimes one query needs the result of another. A SQL subquery nests that inner query inside another SQL statement so its value or result set can filter, calculate, or select data.
The Boot.dev Beat. July 2026
by Lane Wagner - Boot.dev co-founder and backend engineer
In June we made a lot of updates to what's inside existing Boot.dev content. You can now work through the Linux course in a real in-browser shell, take multi-question quizzes, format your code with one click, and use OpenRouter on our AI-dependent courses.
Linux Package Managers: apt, brew, and How They Work
by Boot.dev Team - Programming course authors and video producers
A package manager is a software tool that helps you install other software. As a developer, you'll frequently use package managers to get access to the software you need to get your work done. In this post we'll cover the two most popular package managers you'll run into on Linux and macOS — apt and brew — how they work under the hood, and how to use them to install real tools like Neovim and VS Code.
The PATH Environment Variable in Linux, Explained
by Boot.dev Team - Programming course authors and video producers
Sooner or later, every developer installs a program, types its name into the terminal, and gets hit with an error: command not found. Usually, the culprit is the PATH environment variable: the list of directories your shell searches when you try to run a command. To understand your PATH (and how to fix it when it breaks), it helps to understand how programs run on Linux in the first place. So that's where we'll start: compiled vs interpreted programs, executables, shebangs, and environment variables. Then we'll dig into the PATH itself and how to change it.
Man Pages in Linux: How to Actually Read Them
by Boot.dev Team - Programming course authors and video producers
Every command line tool you'll ever use ships with a built-in instruction manual, and most developers never read it. The man command puts the full documentation for ls, grep, cp, and hundreds of other programs one keystroke away, right in your terminal. Here's how man pages work, and how to actually find what you're looking for inside one.
Linux Filesystem Commands Every Beginner Should Know
by Boot.dev Team - Programming course authors and video producers
All the data on your computer is organized into files and directories, and as a developer you'll spend a lot of time creating, moving, reading, and deleting them from the command line. This guide covers the core Linux filesystem commands: pwd, ls, and cd for navigation, cat, head, tail, and less for reading files, touch, mkdir, mv, rm, and cp for managing them, and grep and find for searching.
How to Kill a Process in Linux: top, kill, and Signals
by Boot.dev Team - Programming course authors and video producers
Every program running on your machine is a process, and sooner or later one of them will misbehave: a script stuck in an infinite loop, a command chewing through all your RAM, a program that just won't respond. In this post you'll learn how to see what's running with top, how to interrupt a program with [[Ctrl]]+[[C]], and how to escalate to the kill command (and the dreaded kill -9) when a process refuses to die.
Linux File Permissions Explained: chmod, chown, and sudo
by Boot.dev Team - Programming course authors and video producers
In a Unix-like operating system, permissions control who can do what to which files and directories. If you've ever run a script only to be slapped with permission denied, or typed sudo because the internet told you to, this is the missing context. In this article you'll learn how the rwx permission model works, how to change permissions with chmod, how to change ownership with chown, and when you should (and shouldn't) reach for sudo.
Stdin, Stdout, and Stderr: Linux I/O Streams Explained
by Boot.dev Team - Programming course authors and video producers
Programs running in a shell have a standard way of talking to you and to each other: three data streams called stdin, stdout, and stderr. Combine those streams with flags, positional arguments, and exit codes, and you can chain simple commands together into incredibly powerful automations using redirection and pipes.
.bashrc vs .zshrc: Shell Configuration Files
by Boot.dev Team - Programming course authors and video producers
Your shell runs a configuration file every single time it starts, and once you know how to edit it, you can customize almost everything about your command line experience. Bash uses .bashrc, while Zsh uses .zshrc. You'll learn how to edit and reload these files and use them to create persistent aliases.
Shell vs Terminal: What's Actually the Difference?
by Boot.dev Team - Programming course authors and video producers
The terms "shell," "terminal," "command line," and "CLI" are used interchangeably all the time, and honestly, that's usually fine. But they are not the same thing, and understanding the difference makes everything else about working in a text-based environment easier. Here we'll cover what a terminal actually is, what a shell does, why developers prefer typing commands over clicking buttons, and some shell basics like variables and history.
Symlinks in Linux: How to Create and Use Them
by Boot.dev Team - Programming course authors and video producers
A symlink lets one file live at two paths: the real one, and a lightweight pointer that forwards to it. It's one of those Linux features you can ignore for years, then suddenly use every day once you've seen what it's for (dotfiles, versioned tool installs, and log directories, to name a few). Here's what symlinks are, how to create them with ln -s, and how they differ from copies.
Git Stash: Save Uncommitted Changes and Get Them Back
by ThePrimeagen - Ex-Netflix engineer, NeoVim ricer, and Git rebaser
Your working directory is full of half-finished changes, and suddenly you need to switch to something else right now. You're not ready to commit (the code doesn't even work yet) but you can't afford to lose it either. That's exactly what git stash is for: it tucks your uncommitted changes into a safe place, gives you a clean working directory, and lets you pull everything back out when you're ready.
