Databaser – skapa, döp om och städa
Innan du kan lägga till tabeller behöver du ett “hem” att ställa dem i. I SQL-världen är det själva databasen. Här går vi igenom de vanligaste kommandona och best practises kring backup och miljöer.
TL;DR
- Skapa databaser med
CREATE DATABASE, men gör det idempotent medIF NOT EXISTS. - Ta alltid backup innan
DROP DATABASE– annars är allt borta. - Jobba med namngivning och miljöer (dev/test/prod) för att undvika misstag.
Skapa en databas
CREATE DATABASE IF NOT EXISTS CampusBooks;
Välj databas
USE CampusBooks; -- SQL Server / MySQL
I PostgreSQL används \c CampusBooks i psql eller ConnectionString i klienten.
Byta namn eller ta bort
ALTER DATABASE CampusBooks RENAME TO CampusArchive; -- PostgreSQL
-- SQL Server (via system stored procedure)
EXEC sp_renamedb 'CampusBooks', 'CampusArchive';
DROP DATABASE IF EXISTS CampusArchive;
⚠️
DROPär oåterkalleligt. KörBACKUP DATABASE(SQL Server) eller kopiera.db-filen (SQLite) innan du tar bort något.
Miljöstrategi
| Miljö | Syfte | Namnförslag |
|---|---|---|
| Dev | Lokal utveckling | CampusBooks_Dev |
| Test | Automatisk testning | CampusBooks_Test |
| Prod | Skarp drift | CampusBooks |
Låt skript ta emot databasenamnet som parameter så slipper du hårdkoda värden.
Roller och access
CREATE LOGIN campus_dev WITH PASSWORD = 'SuperHemligt123!';
CREATE USER campus_dev FOR LOGIN campus_dev;
EXEC sp_addrolemember 'db_datareader', 'campus_dev';
EXEC sp_addrolemember 'db_datawriter', 'campus_dev';
- Ge minsta möjliga rättighet (principen om minst privilegium).
- Ha separata konton för applikation och admin.
Backup och återställning
- SQL Server:
BACKUP DATABASE,RESTORE DATABASE. - PostgreSQL:
pg_dump,pg_restore. - SQLite: kopiera
.db-filen när anslutningen är stängd.
Automatisera gärna nattliga backuper och testa återställning regelbundet.
Koppling till C#
Connection strings styr vilken databas du träffar:
var connectionString = "Server=localhost;Database=CampusBooks;Trusted_Connection=True;";
using var connection = new SqlConnection(connectionString);
connection.Open();
Använd IConfiguration/appsettings.json för att hantera olika miljöer.
Checklista
- Vet du vilken databas du jobbar mot just nu?
- Finns det backup innan schemaändring?
- Är rätt användare kopplad till rätt roll?
- Är
IF EXISTS/IF NOT EXISTSmed i skripten så de kan köras flera gånger?
Dad joke
Varför blev databasen sen till jobbet?
Den fastnade i en restore-kö.