Grundlæggende MariaDB til relationsdatabaser og SQL
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.
INT / BIGINT - heltalDECIMAL(10,2) - præcise beløbVARCHAR(255) - tekst med maksimal længdeTEXT - længere tekstBOOLEAN - gemmes som typisk som 0/1DATE - kalenderdatoDATETIME - dato og klokkeslætBLOB - binære dataCREATE TABLE product ( product_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, price DECIMAL(10,2) NOT NULL, inventory INT NOT NULL DEFAULT 0 ) ENGINE=InnoDB;
AUTO_INCREMENT genererer næste id. DECIMAL er
velegnet til beløb, hvor decimalerne skal være præcise.
NOT NULL - værdi er påkrævetUNIQUE - værdien må ikke gentagesPRIMARY KEY - entydig identifikationFOREIGN KEY - reference til anden tabelCHECK - regel for værdierDEFAULT - standardværdiinventory INT NOT NULL CHECK (inventory >= 0)
CREATE TABLE customer (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL
) ENGINE=InnoDB;
CREATE TABLE customer_order (
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
order_date DATE NOT NULL,
FOREIGN KEY (customer_id)
REFERENCES customer(customer_id)
) ENGINE=InnoDB;
Brug InnoDB, når tabellerne skal bruge fremmednøgler og transaktioner.
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 product_id, name, price FROM product WHERE inventory > 0 ORDER BY price DESC; SELECT COUNT(*) AS antal FROM product;
UPDATE product SET inventory = inventory - 1 WHERE product_id = 1;
Kontrollér altid WHERE-betingelsen først.
DELETE FROM product WHERE product_id = 1;
En DELETE uden WHERE sletter alle rækker.
SELECT c.name, o.order_id, o.order_date FROM customer AS c JOIN customer_order AS o ON o.customer_id = c.customer_id; SELECT o.order_id, p.name, ol.quantity FROM order_line AS ol JOIN customer_order AS o ON o.order_id = ol.order_id JOIN product AS p ON p.product_id = ol.product_id;
SELECT CURRENT_DATE(); SELECT NOW(); SELECT * FROM customer_order WHERE order_date >= '2026-01-01';
Brug DATE til datoer og DATETIME til dato med
klokkeslæt.
START TRANSACTION; UPDATE product SET inventory = inventory - 1 WHERE product_id = 1; COMMIT; -- Ved problem: ROLLBACK;
Transaktioner sikrer, at sammenhørende ændringer gennemføres samlet.
DECIMAL til præcise beløb.DATE og DATETIME til datoer.