SQLite cheat sheet

Grundlæggende SQLite til databasearbejde og DB Browser for SQLite

Se også SQLite - udvidet med en samlet SQL-reference fra datatyper til views og CLI.

Navngivning

Engelske navne foretrækkes. Uanset sprog bruges ental for entiteter og tabeller: Product, ikke Products. Brug kun A-Z i tekniske navne. Skriv æ/Æ som ae/AE, ø/Ø som oe/OE og å/Å som aa/AA, for eksempel Børn → Boern og År → Aar.

Datatyper

  • INTEGER - heltal, id’er og antal
  • REAL - decimaltal
  • TEXT - tekst og datoer som ISO-tekst
  • BLOB - binære data
  • NULL - ukendt eller manglende værdi

SQLite er fleksibel med typer. Brug stadig en tydelig type i schemaet og constraints, der beskytter data.

Opret database og tabel

PRAGMA foreign_keys = ON;

CREATE TABLE Product (
  product_id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  price REAL NOT NULL,
  inventory INTEGER NOT NULL
);

PRIMARY KEY identificerer rækken. AUTOINCREMENT lader SQLite finde næste id.

Constraints

  • NOT NULL - værdi skal angives
  • UNIQUE - ingen gentagelser
  • PRIMARY KEY - entydig identifikation
  • FOREIGN KEY - reference til anden tabel
  • CHECK - værdi skal opfylde en regel
  • DEFAULT - standardværdi
inventory INTEGER NOT NULL CHECK (inventory >= 0)

Fremmednøgler

CREATE TABLE "Order" (
  order_id INTEGER PRIMARY KEY,
  customer_id INTEGER NOT NULL,
  FOREIGN KEY (customer_id)
    REFERENCES Customer(customer_id)
);

SQLite håndhæver kun fremmednøgler, når forbindelsen har fået PRAGMA foreign_keys = ON;.

INSERT - opret data

INSERT INTO Product (name, price, inventory)
VALUES ('Tekop', 75.00, 20);

INSERT INTO Product (name, price, inventory)
VALUES
  ('Tallerken', 120.00, 8),
  ('Kande', 250.00, 4);

SELECT - læs data

SELECT * FROM Product;

SELECT name, price
FROM Product
WHERE inventory > 0
ORDER BY price DESC;

SELECT COUNT(*) AS antal
FROM Product;

UPDATE - ændr data

UPDATE Product
SET price = 80.00
WHERE product_id = 1;

Kør først en tilsvarende SELECT med samme WHERE.

DELETE - slet data

DELETE FROM Product
WHERE product_id = 1;

En DELETE uden WHERE sletter alle rækker.

JOIN - hent sammenkoblede data

SELECT c.name, o.order_id, o.order_date
FROM Customer AS c
JOIN "Order" AS o
  ON o.customer_id = c.customer_id;

SELECT o.order_id, p.name, ol.quantity
FROM OrderLine AS ol
JOIN "Order" AS o ON o.order_id = ol.order_id
JOIN Product AS p ON p.product_id = ol.product_id;

DB Browser for SQLite

  1. New Database - gem .sqlite-filen.
  2. Åbn SQL Editor.
  3. Kør CREATE TABLE-SQL.
  4. Browse Data - se og indsæt rækker.
  5. Database Structure - kontrollér tabeller og nøgler.
  6. Gem databasen efter ændringer.

Husk

  • Schema før SQL.
  • Én oplysning bør gemmes ét passende sted.
  • Brug sigende navne.
  • Test med realistiske data.
  • Kontrollér altid WHERE før UPDATE og DELETE.