PLAINFINCH learn by building

Every SQL keyword

  • % (wildcard) Inside LIKE, stand for any run of characters, including none at all.
  • + - * / % Do arithmetic: add, subtract, multiply, divide and find a remainder.
  • -- comment Start a note that SQL ignores until the end of the line.
  • /* */ Wrap a note across several lines so SQL skips over it.
  • :name placeholder Mark a named spot in a query where a value is safely filled in later.
  • ; End one SQL statement so the next one can begin.
  • < > <= >= Compare values to check which is smaller or larger.
  • = <> != Compare two values to check if they are equal or different.
  • ? placeholder Mark a spot in a query where a value is safely filled in later.
  • _ (wildcard) Inside LIKE, stand for exactly one character of any kind.
  • ALTER TABLE ADD COLUMN Add a new column to a table that already exists.
  • ALTER TABLE RENAME Give an existing table or column a new name.
  • AND Require that both conditions are true for a row to be kept.
  • AS Give a column, calculation or table a new, clearer name.
  • ASC / DESC Sort in ascending order (the default) or descending order.
  • AVG() Work out the average of the values in a column.
  • BEGIN Start a transaction so several changes succeed or fail together.
  • BETWEEN Check whether a value falls inside a range, including both ends.
  • CASE Choose a value based on conditions, like an if-then inside a query.
  • CHECK Refuse any row whose values fail a condition you write.
  • COALESCE() Return the first value in a list that is not missing.
  • COMMIT Save all the changes made since the transaction began.
  • correlated subquery A subquery that refers to the current row of the outer query.
  • COUNT(*) Count how many rows there are, including rows with missing values.
  • COUNT(column) Count the rows where a column has a value, skipping NULLs.
  • COUNT(DISTINCT) Count how many different values appear in a column.
  • CREATE INDEX Build a lookup structure that makes searching a column faster.
  • CREATE TABLE Make a new table with named columns and their types.
  • CREATE UNIQUE INDEX Build an index that also refuses duplicate values.
  • CREATE VIEW Save a query under a name so you can select from it like a table.
  • date modifiers Add words like '+7 days' or 'start of month' to shift a date.
  • date() Get a date as YYYY-MM-DD text, optionally shifted by modifiers.
  • DEFAULT Fill in a value automatically when an insert leaves a column out.
  • DELETE FROM Remove rows from a table, usually limited with WHERE.
  • DENSE_RANK() Rank rows so ties share a number with no gaps after them.
  • DISTINCT Remove duplicate rows so each result appears only once.
  • DROP INDEX Delete an index you no longer need, leaving the table as it was.
  • DROP TABLE Delete a whole table along with all of its rows.
  • DROP VIEW Delete a saved view without touching the tables it reads from.
  • ELSE Give the value CASE uses when none of the conditions are true.
  • END Close a CASE expression so the query can carry on.
  • ESCAPE Pick a character that makes % or _ match literally inside LIKE.
  • EXISTS Check whether a subquery returns at least one row.
  • EXPLAIN QUERY PLAN Show how SQLite will run a query, such as whether it uses an index.
  • FOREIGN KEY Mark a column that points to the primary key of another table.
  • FROM Name the table a query reads its rows from.
  • FULL JOIN Keep every row from both tables, matched where possible.
  • GLOB Match text with case-sensitive * and ? wildcards in SQLite.
  • GROUP BY Collect rows that share a value so totals are worked out per group.
  • HAVING Keep only the groups that pass a condition, applied after grouping.
  • IF NOT EXISTS Skip creating something when it is already there, avoiding an error.
  • IFNULL() Swap a missing value for a fallback value you choose.
  • IIF() Pick one of two values depending on whether a condition is true.
  • IN Check whether a value matches any item in a list.
  • IN (subquery) Check whether a value appears in the results of another query.
  • INNER JOIN The full name for JOIN, which keeps only rows that match in both tables.
  • INSERT ... SELECT Add rows to a table using the results of a query.
  • INSERT INTO Add one or more new rows to a table you name.
  • INSTR() Find the position where some text first appears inside another text.
  • INTEGER PRIMARY KEY Make a column that SQLite fills with a new number for each row.
  • IS NOT NULL Check that a value is present rather than missing.
  • IS NULL Check whether a value is missing, since = NULL never matches.
  • JOIN Combine rows from two tables where a matching condition holds.
  • julianday() Turn a date into a day number so you can subtract two dates.
  • LAG() Read a value from the row before the current one.
  • LEAD() Read a value from the row after the current one.
  • LEFT JOIN Keep every row from the first table, even when nothing matches.
  • LENGTH() Count how many characters are in a piece of text.
  • LIKE Match text against a pattern that uses % and _ as wildcards.
  • LIMIT Return at most a given number of rows from a query.
  • LOWER() Turn every letter in a piece of text into a lowercase letter.
  • MAX() Find the largest value in a column, or in each group.
  • MIN() Find the smallest value in a column, or in each group.
  • NOT Flip a condition so true becomes false and false becomes true.
  • NOT BETWEEN Check that a value falls outside a range of values.
  • NOT EXISTS Check that a subquery returns no rows at all.
  • NOT IN Check that a value matches none of the items in a list.
  • NOT LIKE Keep rows whose text does not match a LIKE pattern.
  • NOT NULL Refuse any row that leaves this column empty.
  • NULL A special marker meaning a value is missing or unknown.
  • NULLS FIRST / NULLS LAST Choose whether missing values appear at the start or end of a sort.
  • OFFSET Skip a number of rows before returning results, often used for paging.
  • ON Give the condition that decides which rows of a join match up.
  • ON DELETE CASCADE Delete linked rows automatically when the row they point to is deleted.
  • ON DELETE RESTRICT Block deleting a row while other rows still point to it.
  • ON DELETE SET NULL Empty the linking column when the row it points to is deleted.
  • OR Keep a row when at least one of the conditions is true.
  • ORDER BY Sort the result rows by one or more columns.
  • OVER Turn a function into a window function that looks across related rows.
  • PARTITION BY Split rows into separate groups for a window function to work within.
  • PRAGMA Run a SQLite command that reports or changes database settings.
  • PRIMARY KEY Mark the column whose value uniquely identifies each row.
  • RANK() Rank rows so ties share a number and the next rank skips ahead.
  • REFERENCES Name the table and column that a foreign key points to.
  • RELEASE Keep the changes since a savepoint and forget that savepoint.
  • REPLACE() Swap every copy of one piece of text for another inside a value.
  • RETURNING Show the rows that an INSERT, UPDATE or DELETE just changed.
  • RIGHT JOIN Keep every row from the second table, even when nothing matches.
  • ROLLBACK Undo all the changes made since the transaction began.
  • ROLLBACK TO Undo changes back to a savepoint without ending the transaction.
  • ROUND() Round a number to a chosen number of decimal places.
  • ROW_NUMBER() Number the rows 1, 2, 3 in order, with no shared numbers.
  • rowid The hidden number SQLite gives every row in an ordinary table.
  • running SUM Use SUM with OVER and ORDER BY to keep a running total down the rows.
  • SAVEPOINT Mark a point inside a transaction that you can undo back to later.
  • scalar subquery A subquery that returns a single value you can use like a number.
  • SELECT Choose which columns or values a query returns.
  • SELECT * Return every column of a table, handy for a quick look at the data.
  • self-join Join a table to itself to compare rows within the same table.
  • SET Say which columns to change and what their new values are.
  • sqlite_master A built-in table that lists every table, index and view in the database.
  • strftime() Format a date or time as text using codes like %Y and %m.
  • STRICT Make SQLite refuse values that do not match a column's type.
  • subquery A query placed inside another query, written in brackets.
  • SUBSTR() Take part of a text value, starting at a chosen position.
  • SUM() Add up all the values in a column, skipping missing ones.
  • table aliases Give a table a short name so its columns are quicker to write.
  • TRIM() Remove spaces from the start and end of some text.
  • UNION ALL Stack the rows of two queries on top of each other, keeping duplicates.
  • UNIQUE Refuse any row that repeats a value already in this column.
  • UPDATE Change values in rows that already exist in a table.
  • UPPER() Turn every letter in a piece of text into a capital letter.
  • VALUES List the values for each new row in an INSERT statement.
  • WHEN ... THEN Give one condition inside CASE and the value to use when it is true.
  • WHERE Keep only the rows that pass a condition you write.
  • WITH Name a query step up front so later parts can use it like a table.
  • WITH RECURSIVE Build rows step by step, useful for walking trees and hierarchies.
  • || Join two pieces of text together into one longer string.