Vad är MySQL? · 2015-11-08 · 2 Vad är MariaDB MariaDB är en fortsatt utvecklad gren av MySQL-...
Transcript of Vad är MySQL? · 2015-11-08 · 2 Vad är MariaDB MariaDB är en fortsatt utvecklad gren av MySQL-...
1
Introduktion MySQL och MariaDB
© Copyright
Mahmud Al Hakim
www.webacademy.se
Vad är MySQL?
MySQL är en databashanterare.
Den använder sig av frågespråket SQL.
MySQL är fri programvara, licensierad under GNU General Public
License.
Programmet skrevs och underhölls före 2008 av det svenska företaget
MySQL AB i Uppsala. De sålde support och servicekontrakt såväl som
kommersiella licensierade kopior av MySQL.
Programmets huvudsakliga utvecklare var finlandssvenske Michael
Widenius och David Axmark. Grundarna arbetar numera med
MariaDB.
2008 köptes MySQL AB av Sun Microsystems för en miljard dollar och
den 27 januari 2010 köptes Sun upp av Oracle för 8,5 miljarder
amerikanska dollar.
Källa https://sv.wikipedia.org/wiki/MySQL2
https://en.wikipedia.org/wiki/Michael_Widenius
2
Vad är MariaDB
MariaDB är en fortsatt utvecklad gren av MySQL-
databasen.
Programkoden går under GNU General Public License, i
motsats till den numera Oracle-ägda MySQL, där
uppdateringar skyddas i allt större utsträckning genom
upphovsrätt.
Bakgrunden är att Oracle inte verkar ha några planer
för MySQL's framtida livscykel.
Bakom MariaDB står de ursprungliga skaparna till
MySQL, Michael Widenius, David Axmark och Allan
Larsson.
Källa: https://sv.wikipedia.org/wiki/MariaDB3
Webbserverprogrampaket
Webbserverprogrampaket är ett paket av program som
inkluderar några applikationer som används för att
skapa och arbeta med databaser och serverbaserade
webbsidor, t.ex. Apache, MySQL/MariaDB, PHP och
phpMyAdmin.
Exempel på webbserverprogrampaket är:
◦ XAMPP www.apachefriends.org
◦ WampServer www.wampserver.com/en
4 Copyright 2015 Mahmud Al Hakim www.webacademy.se
3
XAMPP www.apachefriends.org
Copyright 2015 Mahmud Al Hakim www.webacademy.se 5
WampServer www.wampserver.com/en
Copyright 2015 Mahmud Al Hakim www.webacademy.se 6
4
Ladda ner och installera
WampServer
Copyright 2015 Mahmud Al Hakim www.webacademy.se 7
OBS! ”Tillåt åtkomst”
Copyright 2015 Mahmud Al Hakim www.webacademy.se 8
5
Starta WampServer
Copyright 2015 Mahmud Al Hakim www.webacademy.se 9
Starta MySQL console
Copyright 2015 Mahmud Al Hakim www.webacademy.se 10
6
MySQL console (monitor)
Copyright 2015 Mahmud Al Hakim www.webacademy.se 11
Blankt lösenord
Eller root
Visa alla databaser med kommandot
SHOW DATABASES
Copyright 2015 Mahmud Al Hakim www.webacademy.se 12
7
Några vanliga kommandon
SHOW DATABASES;
CREATE DATABASE TestDatabas;
USE TestDatabas;
CREATE TABLE TestTabell(id INT);
SHOW TABLES;
INSERT INTO TestTabell VALUES(1), (2), (3);
SELECT * FROM TestTabell;
DROP DATABASE TestDatabas;
Copyright 2015 Mahmud Al Hakim www.webacademy.se 13
Testa direkt i
MySQL Console
phpMyAdmin
phpMyAdmin är ett gratis och
öppenkällkodsverktyg skrivet i PHP för
att administrera MySQL via en
webbläsare.
Copyright 2015 Mahmud Al Hakim www.webacademy.se 14
Starta phpMyAdmin
8
phpMyAdmin gränssnitt
Copyright 2015 Mahmud Al Hakim www.webacademy.se 15
Skapa en databas
Copyright 2015 Mahmud Al Hakim www.webacademy.se 16
Öppna fliken
Databaser
Ange
Databasnamn Välj
Kollationering
(Teckenkodning)
9
Skapa en tabell
Copyright 2015 Mahmud Al Hakim www.webacademy.se 17
Välj en
Databas
Ange namn
och antal kolumner
Skapa en tabell forts…
Copyright 2015 Mahmud Al Hakim www.webacademy.se 18
Ange
kolumnnamn
Välj Datatyp
T.ex. VARCHAR och
ange Längden
10
Lägg till data
Copyright 2015 Mahmud Al Hakim www.webacademy.se 19
Öppna fliken
”Lägg till”
Skriv data
och Kör
Exportera en tabell (eller en databas)
Copyright 2015 Mahmud Al Hakim www.webacademy.se 20
Öppna fliken
”Exportera”
Välj format
11
Kopiera en tabell
Copyright 2015 Mahmud Al Hakim www.webacademy.se 21
Öppna fliken
”Operationer”
Ange ett namn
och Kör
Töm eller ta bort en tabell
Copyright 2015 Mahmud Al Hakim www.webacademy.se 22
Öppna fliken
”Operationer”
12
Övning
Skapa en databas åt en liten videobutik.
Använd följande schema◦ Kunder(Kundnummer, Namn, Gatuadress, Postnummer, Ort)
◦ Filmer(FilmID, Titel, Kategori, Huvudroll, Pris)
◦ Uthyrning(Film, Kund, Uthyrning, Aterlamning)
Importera CSV-filer till databasen.
Kör några SQL-frågor mot databasen.
Copyright 2015 Mahmud Al Hakim www.webacademy.se 23
Steg 1 – Skapa databasen
Copyright 2015 Mahmud Al Hakim www.webacademy.se 24
13
Steg 2.1 – Skapa tabellen Kunder
Copyright 2015 Mahmud Al Hakim www.webacademy.se 25
Primärnyckel
anges här
Steg 2.2 – Skapa tabellen Filmer
Copyright 2015 Mahmud Al Hakim www.webacademy.se 26
14
Steg 2.3 – Skapa tabellen Uthyrning
Copyright 2015 Mahmud Al Hakim www.webacademy.se 27
Steg 3 – Importera data via CSV
Copyright 2015 Mahmud Al Hakim www.webacademy.se 28
Välj en tabell
Öppna fliken
Importera
Välj en fil
Se nästa bild
15
Copyright 2015 Mahmud Al Hakim www.webacademy.se 29
Välj
CSV using LOAD DATA(Detta är ett MySQL-kommando)
Ändra till
semikolon
Lämna allt annat
och Kör
Kör SQL-frågor
Copyright 2015 Mahmud Al Hakim www.webacademy.se 30
16
SQL mot databasen Videobutik – Del 1
-- Enkla frågor mot enstaka tabeller
SELECT * FROM Kunder
SELECT * FROM Filmer
SELECT * FROM Uthyrning
-- Visa ej återlämnade filmer.
SELECT * FROM Uthyrning
WHERE Aterlamning IS NULL
-- Vilka olika filmer med ”Mel Gibson” i huvudrollen finns i databasen?
SELECT * FROM Filmer
WHERE Huvudroll = 'Mel Gibson'
Copyright 2015 Mahmud Al Hakim www.webacademy.se 31
-- Visa antal filmer som inte lämnats tillbaka per kund (Visa kundnummer).
SELECT Kund, Count(Film) AS 'Antal filmer'
FROM Uthyrning
WHERE Aterlamning IS NULL
GROUP BY Kund
-- Visa en lista på alla kunder (kundnummer) som har mer än 10 filmer.
SELECT U.Kund, Count(U.film)
FROM Uthyrning U
WHERE U.Aterlamning IS NULL
GROUP BY U.Kund
HAVING Count(U.film) >= 10Copyright 2015 Mahmud Al Hakim www.webacademy.se 32
SQL mot databasen Videobutik – Del 2
17
-- Cross Join (Kartesisk produkt)
SELECT * FROM kunder, Uthyrning;
SELECT * FROM Filmer, Uthyrning;
-- Join (Inner Join) (koppla flera tabeller)
SELECT * FROM Kunder, Uthyrning
WHERE kunder.Kundnummer = Uthyrning.Kund
-- Visa några fält från olika tabeller
SELECT Kunder.Namn, Uthyrning.Film,Uthyrning.Uthyrning
FROM Kunder, Uthyrning
WHERE kunder.Kundnummer = Uthyrning.Kund
Copyright 2015 Mahmud Al Hakim www.webacademy.se 33
SQL mot databasen Videobutik – Del 3
-- Använd Alias
SELECT K.Namn, U.Film, U.Uthyrning
FROM Kunder AS K, Uthyrning AS U
WHERE K.Kundnummer = U.Kund
-- Använd nyckelorden INNER JOIN ON istället för WHERE
SELECT K.Namn, U.Film, U.Uthyrning
FROM Kunder AS K INNER JOIN Uthyrning AS U
ON K.Kundnummer = U.Kund
-- INNER är inte obligatoriskt (Bara JOINT = INNER JOIN)
SELECT K.Namn, U.Film, U.Uthyrning
FROM Kunder AS K JOIN Uthyrning AS U
ON K.Kundnummer = U.Kund
Copyright 2015 Mahmud Al Hakim www.webacademy.se 34
SQL mot databasen Videobutik – Del 4
18
-- Visa ej återlämnade filmer. Visa kundnamnet och filmID (FK).
SELECT K.Namn, U.Film, U.Uthyrning
FROM Kunder AS K, Uthyrning AS U
WHERE K.Kundnummer = U.Kund
AND U.Aterlamning IS NULL
-- Visa ej återlämnade filmer. Visa Filmtitel och uthyrningsdatumet.
-- (Vilka filmer finns ute)
SELECT Filmer.Titel, Uthyrning.Uthyrning
FROM Uthyrning, Filmer
WHERE Aterlamning IS NULL
AND Filmer.FilmID = Uthyrning.Film
ORDER BY Uthyrning DESC
Copyright 2015 Mahmud Al Hakim www.webacademy.se 35
SQL mot databasen Videobutik – Del 5
-- Visa ej återlämnade filmer.
-- Visa Kundnamn, Filmtitel och uthyrningsdatumet.
SELECT K.Namn, F.Titel, U.Uthyrning
FROM Filmer F, Kunder K, Uthyrning U
WHERE K.Kundnummer = U.Kund
AND F.FilmID = U.Film
AND Aterlamning IS NULL
-- Visa kundnamn och filmtitel som finns i tabellen uthyrning!
SELECT K.Namn, F.Titel, U.Uthyrning, U.Aterlamning
FROM Kunder AS K, Filmer AS F, Uthyrning AS U
WHERE K.Kundnummer = U.Kund
AND F.FilmID = U.Film
ORDER BY F.Titel
Copyright 2015 Mahmud Al Hakim www.webacademy.se 36
SQL mot databasen Videobutik – Del 6
19
-- Hur många gånger har "Dödligt vapen 1" hyrts ut?
SELECT Count(u.uthyrning)
FROM Filmer AS F , Uthyrning U
WHERE F.FilmID = U.Film
AND F.Titel = 'Dödligt vapen 1'
-- Visa antal filmer som inte lämnats tillbaka per kund
-- (Visa Kundnamnet).
SELECT K.Namn, Count(U.Film) AS 'Antal filmer'
FROM Uthyrning U, Kunder K
WHERE Aterlamning IS NULL
AND K.Kundnummer = U.Kund
GROUP BY K.Namn
Copyright 2015 Mahmud Al Hakim www.webacademy.se 37
SQL mot databasen Videobutik – Del 7
-- Visa en lista på alla kunder (Kundnamn) som har mer än 10 filmer.
SELECT K.Namn, Count(U.film)
FROM Uthyrning U, Kunder K
WHERE U.Aterlamning IS NULL
AND K.Kundnummer = U.Kund
GROUP BY K.Namn
HAVING Count(U.film) >= 10
-- Visa en lista på alla filmer som är ute
-- Visa kundnamn och filmtitel
SELECT K.Namn, F.Titel
FROM Uthyrning U, Kunder K, Filmer F
WHERE U.Aterlamning IS NULL
AND K.Kundnummer = U.Kund
AND F.FilmID = U.Film
ORDER BY K.NamnCopyright 2015 Mahmud Al Hakim www.webacademy.se 38
SQL mot databasen Videobutik – Del 8
20
-- Vilka dramor har ”Vera Lindberg” hyrt? (Kategori=Drama)
SELECT F.Titel, K.Namn, U.Uthyrning, F.Kategori
FROM Kunder K, Filmer F, Uthyrning U
WHERE K.Kundnummer = U.Kund
AND F.FilmID = U.Film
AND F.Kategori = 'Drama'
AND K.Namn = 'Vera Lindberg'
-- Använd JOIN istället för WHERE
SELECT F.Titel, K.Namn, U.Uthyrning, F.Kategori
FROM Uthyrning U
JOIN Kunder K ON K.Kundnummer = U.Kund
JOIN Filmer F ON F.FilmID = U.Film
WHERE F.Kategori = 'Drama'
AND K.Namn = 'Vera Lindberg'
Copyright 2015 Mahmud Al Hakim www.webacademy.se 39
SQL mot databasen Videobutik – Del 9
-- Vilka filmer som kostar 30 kronor att hyra har Natalie Karlsmark hyrt?
SELECT F.Titel, F.Pris, K.Namn
FROM Kunder K, Filmer F, Uthyrning U
WHERE F.Pris = 30
AND K.Namn = 'Natalie Karlsmark'
AND K.Kundnummer = U.Kund
AND F.FilmID = U.Film
-- Använd JOIN istället för WHERE
SELECT F.Titel, F.Pris, K.Namn
FROM Uthyrning U
JOIN Kunder K ON K.Kundnummer = U.Kund
JOIN Filmer F ON F.FilmID = U.Film
WHERE F.Pris = 30
AND K.Namn = 'Natalie Karlsmark'Copyright 2015 Mahmud Al Hakim www.webacademy.se 40
SQL mot databasen Videobutik – Del 10