SQL

SQL är språket och MySQL en databashanterare

Introduktion

Structured Query Language (SQL) är ett språk för att arbeta med en relationsdatabas. En relationsdatabas är organiserad i relationer. Relationer kallas även tabeller och dessa är organiserade i rader och kolumner.

För att arbeta med SQL krävs en databashanterare. Det finns ett stort antal databashanterare som använder SQL språket. Detta dokument behandlar databashanteraren MySQL och dess klient och server.

För att använda MySQL så behöver du köra dess klient och server. I avsnittet MySQL finns instruktioner hur du installerar MySQL under Windows Subsystem for Linux (WSL).

Starta server

Följande kommandon körs i bash.

sudo service mysql restart

Om du får ett [ OK ] i terminalen har mysql tjänsten startats. Vill du kontrollera det ytterligare så kan du använda ett program som htop eller köra följande kommando, resultatet bör visa en eller flera mysqld processer.

ps auxf | grep mysql

Starta klienten

När mysql-klienten startas behöver du ange en användare och ett lösenord. Kör följande för att koppla upp dig till din server på localhost.

mysql -u username -p

Om du lyckas koppla upp dig så bör du nu se mysql-prompten.

mysql>

En databasserver kan användas av många olika klienter.

Kommandon

Skapa och använda en databas

SQL-kommandon skrivs ofta i VERSALER, men språket i sig är inte skifteskänsligt (engelska case sensitive).

För att arbeta med en relationsdatabas behöver du först skapa eller välja en databas. Följande kommandon körs i mysql-prompten. Character set och det som följer sätter teckenkodningen till MySQLs implementering av UTF-8.

 CREATE DATABASE databasnamn CHARACTER SET UTF8mb4 COLLATE utf8mb4_0900_ai_ci;
 USE databasnamn;

SQL-kommandon avslutas med ett semikolon, ;. Om du missar ett semikolon kommer prompten fortsätta kommandot på nya rader. Detta gör att du kan dela upp SQL kommandon på flera rader när du skriver dem. Skriv ett semikolon för att avsluta kommandot.

För att lista alla tillgängliga databaser på servern.

SHOW databases;

Skapa en tabell i en databas

För att spara data behöver först en tabell skapas. När en tabell skapas krävs det att minst en kolumn skapas. Denna kolumn är som oftast en primär id-kolumn som databasens motor hanterar, detta är god databasdesign.

Kontrollera att du har valt en databas.

CREATE TABLE skapar en tabell med angivet namn med en tillhörande kolumn. Hela kommandot skrivs här på tre rader.

CREATE TABLE tabellnamn (id INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(id)) 
ENGINE = innodb
DEFAULT CHARSET = utf8mb4;

Kolumnen som skapats har namnet id och är av typen int (heltal, engelska integer). Id kolumnen är även satt att vara unsigned, vilket gör att enbart icke negativa tal är tillåtna. Auto increment gör att databasen hanterar värdet på kolumnen, värdet uppdateras automatiskt med 1 för varje ny rad.

För att se en tabells innehåll används.

DESCRIBE tabellnamn;

+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int unsigned | NO   | PRI | NULL    | auto_increment |
+-------+--------------+------+-----+---------+----------------+
1 row in set (0.00 sec)

Kolumner

För att skapa fler kolumner i en tabell så används alter tillsammans med add. Alter-kommandot kräver en tabell och ett kommando. Add-kommandot kräver ett namn, en datatyp och eventuellt andra parametrar.

ALTER TABLE tabellnamn ADD kolumn datatyp parametrar;

Datatyper

Varje kolumn i en relationsdatabas har en datatyp som definierar vilken typ av värd som kan sparas. Några vanliga typer att börja med är:

  • INT, heltal.

  • DECIMAL(p, s), kräver att precisionen och storleken anges.

  • VARCHAR(l), en sträng med variabel storlek, kräver att längden anges.

  • TEXT, för större strängar.

  • TIMESTAMP, en datumstämpel.

Följande exempel skapar en textkolumn i databasen med datatypen varchar.

ALTER TABLE users ADD name VARCHAR(30);

Parametrar

Utöver namnet på kolumnen samt datatypen kan en eller fler parametrar användas.

  • NULL, kolumnens värde kan vara tomt.

  • NOT NULL, kolumnens värde får inte vara tomt.

  • UNSIGNED, ändrar en numerär kolumn så att den enbart kan innehålla icke negativa värden.

  • AUTO_INCREMENT, använder databasens räknare för värdet.

  • UNIQUE, värdet måste vara unikt.

Följande exempel skapar en unik kolumn.

ALTER TABLE users ADD email VARCHAR(255) UNIQUE;

Kommandon, fortsättning

  • USE databasnamn, använd databas.

  • SHOW databases eller tables, visa val.

  • DESCRIBE tabell, beskriver eller visar en tabells struktur.

  • DROP databas eller tabell, ta bort val.

  • ALTER TABLE tabellnamn DROP kolumn, ta bort val.

  • SELECT kolumner FROM tabellnamn, för att välja data.

Kommandon, skapa och välja data

För att skapa data i en kolumn används INSERT.

INSERT INTO users (name, email) VALUES ("username","username@test.se");

För att välja data används SELECT kommandot, det returnerar ett resultat. Select väljer kolumner från en tabell, det går antingen att specificera dessa eller använda ett wildcard, *.

SELECT name, email FROM users;
SELECT * FROM users;

Utöver detta så kan den valda datan sorteras och begränsas. För att välja den senaste raden.

SELECT kolumn FROM tabell ORDER BY kolumn DESC LIMIT 1;
  • ORDER BY kolumn, sorterar resultatet efter vald kolumn.

  • DESC eller ASC väljer sorteringsordningen.

  • LIMIT #, begränsa resultatet till # antal rader.

Specifika rader

För att välja specifika rader i databasen så väljs dem utifrån värdet. Då används WHERE.

SELECT * FROM users WHERE name = 'username';

Antalet svar kan även sorteras och begränsas.

LIMIT ORDER BY kolumn DESC/ASC;

Last updated