Professional Documents
Culture Documents
Week 4 - Praktisch MySQL v1
Week 4 - Praktisch MySQL v1
Databases 2
DATABASES 2
Week 4
1
Databases 2 31-12-22
Leerdoelen
1
Databases 2 31-12-22 |3
Introductie
1
Databases 2 31-12-22 |4
CTRL+Z
1
Databases 2 31-12-22 |5
Fotograaf Opdracht
1
Databases 2 31-12-22 |6
De C.UD uit CRUD
(voor rijen)
1
Databases 2 31-12-22 |7
INSERT
1
Databases 2 31-12-22 |8
Bijvoorbeeld
1
Databases 2 31-12-22 |9
Auto Increment
Kun je aangeven bij een kolom bij het maken van de tabel.
De database houdt dit veld bij door voor elke nieuwe rij het
nummer eentje op te hogen. Je hoeft het bij een INSERT dus niet
zelf aan te geven: de database doet het voor je.
1
Databases 2 31-12-22 | 10
INSERT zonder kolommen
1
Databases 2 31-12-22 | 11
Bijvoorbeeld
Het Auto Increment veld moet hier wel worden opgegeven. Het
aantal kolommen moet immers kloppen.
Als je NULL of 0 invult voor het Auto Increment veld dan vult de
database zelf het goede nummer in.
1
Databases 2 31-12-22 | 12
INSERT…SELECT
Bijvoorbeeld:
1
Databases 2 31-12-22 | 13
INSERT..SELECT..Subquery
Bijvoorbeeld
1
Databases 2 31-12-22 | 14
Vraag
Antwoord:
Ja. Als ID=10 maar niet al bestaat. Anders nee. Je maakt bij deze
INSERT dus niet gebruik van de Auto Increment.
(of dat een goed idee is, is een andere vraag)
1
Databases 2 31-12-22 | 15
UPDATE één kolom
Bijvoorbeeld:
UPDATE werknemers
SET salaris = 30000
WHERE voornaam = 'Pietje' AND achternaam = 'Puk'
of beter:
UPDATE werknemers
SET salaris = 30000
WHERE werknemerID = 1;
Rij wordt immers uniek
geïdentificeerd door de PK!
1
Databases 2 31-12-22 | 16
UPDATE meerdere rijen
Bijvoorbeeld:
Zet de opleiding op "Informatica" voor iedere student met een
studentnr boven de 200.
UPDATE studenten
SET opleiding = 'Informatica'
WHERE studentnr > 200;
Voor iedere rij waarvoor
geldt studentnr > 200 wordt
de update uitgevoerd.
1
Databases 2 31-12-22 | 17
UPDATE meerdere
kolommen
Bijvoorbeeld:
UPDATE studenten
SET geboortedatum = '10-10-1999', opleiding = 'Informatica'
WHERE studentnr = 1234;
1
Databases 2 31-12-22 | 18
UPDATE…subquery
Bijvoorbeeld:
Verhoog de salarissen van alle werknemers die wonen in
Amsterdam.
UPDATE werknemers
SET salaris = salaris * 1.1
WHERE werknemerID IN
(
SELECT werknemerID
FROM adressen
WHERE woonplaats = 'Amsterdam'
);
1
Databases 2 31-12-22 | 19
DELETE
1
Databases 2 31-12-22 | 20
UPDATE/DELETE zonder
WHERE clause
Let op! Als je de where clause weglaat bij een UPDATE of DELETE
dan wordt deze uitgevoerd voor alle rijen!
Bijvoorbeeld:
Zet de opleiding van alle studenten op "Informatica".
UPDATE studenten
SET opleiding = 'Informatica'; Er zit geen UNDO
op je database. Als
je de WHERE regel
Verwijder alle rijen uit de studenten tabel.
uit een
DELETE FROM studenten; UPDATE/DELETE
vergeet, verlies je
veel/alle informatie!
1
Databases 2 31-12-22 | 21
Safe Updates
Let op: Dit geldt dus alleen voor de queries uitgevoerd in de MySQL
Workbench (de client) niet voor de MySQL Server zelf!
1
Databases 2 31-12-22 | 22
Vraag
Als ik drie rijen heb toegevoegd na het maken van deze tabel, en ik
heb daarna de twee laatst toegevoegde rijen weer weggegooid, wat
wordt het ID veld dan als ik een nieuwe rij toevoeg?
Antwoord:
4
De Auto Increment waarde wordt niet gewijzigd door een DELETE.
1
Databases 2 31-12-22 | 23
ON UPDATE
ON DELETE
1
Databases 2 31-12-22 | 24
DELETE een rij met een
afhankelijkheid
1
Databases 2 31-12-22 | 25
Maar…
Het zou best wel eens gewenst gedrag kunnen zijn dat:
1
Databases 2 31-12-22 | 26
ON DELETE
Kies de FK tab
Selecteer één
Selecteer de bij het maken
van de opties
foreign key met de of wijzigen van
in de drop
afhankelijkheid. een tabel.
down list.
1
Databases 2 31-12-22 | 27
ON DELETE opties
RESTRICT is
hetzelfde als NO CASCADE: Herhaal de DELETE op alle rijen die
ACTION in MySQL. afhankelijk zijn van de verwijderde rij. Verwijder
dus alle bestelregels die aan de bestelling
gekoppeld zijn die je wil verwijderen.
1
Databases 2 31-12-22 | 28
Welke tabel?
1
Databases 2 31-12-22 | 29
Voorbeeld
1
Databases 2 31-12-22 | 30
ON UPDATE
1
Databases 2 31-12-22 | 31
ON UPDATE
1
Databases 2 31-12-22 | 32
Vraag
Antwoord:
ON DELETE CASCADE
Antwoord:
Op de bestelregels tabel.
1
Databases 2 31-12-22 | 33
De C.UD uit CRUD
(voor tabellen)
1
Databases 2 31-12-22 | 34
C.UD
1
Databases 2 31-12-22 | 35
Laten doen
Of:
<CTRL>+<G>
Dat script kun je dan opslaan om ergens op een database server uit te
voeren.
Of je kunt dat script direct uit laten voeren op de server waar je op dat
moment een connection mee hebt.
1
Databases 2 31-12-22 | 36
Zelf doen
In plaats van automatische generatie van dat script kun je ook zelf
de SQL code schrijven om tabellen te maken of te veranderen.
1
Databases 2 31-12-22 | 37
CREATE TABLE voorbeeld
1
Databases 2 31-12-22 | 38
ALTER TABLE voorbeeld
Tabel naam
ALTER TABLE `mydb`.`artikelen`
DROP COLUMN `categorie`,
CHANGE COLUMN `omschrijving` `omschrijving` VARCHAR(1000)
NOT NULL DEFAULT '' ,
ADD COLUMN `naamControleur` VARCHAR(100) NULL AFTER
`prijs`,
DROP INDEX `categorie_UNIQUE` ,
ADD UNIQUE INDEX `naam_UNIQUE` (`artikelnaam` ASC);
1
Databases 2 31-12-22 | 39
DROP TABLE voorbeeld
Tabel naam
DROP TABLE `mydb`.`artikelen`;
1
Databases 2 31-12-22 | 40
USER MANAGEMENT
en PRIVILEGES
1
Databases 2 31-12-22 | 41
Users in MySQL Workbench
1
Databases 2 31-12-22 | 42
User maken/wijzigen
Geef de gebruiker
een naam Laat deze op
standard staan.
Volgende slide
1
Databases 2
Limit to Hosts Matching
% : Overal vandaan
Localhost : Alleen vanaf de computer waar de server op draait
198.51.100.177 : Alleen vanaf ip adres 198.51.100.177
198.51.100.% : Vanaf alle ip adressen die beginnen met 198.51.100
Avans.nl : Alleen vanuit het avans.nl domein
etc.
1
Databases 2 31-12-22 | 44
Account Limits
1
Databases 2 31-12-22 | 45
Administrative Roles
Aan elke rol die je links kan selecteren hangen één of meerdere
privileges die je aan de rechterkant ziet staan. Selecteer je een rol,
dan worden automatisch de daarbij horende privileges geselecteerd.
Hier kun je per database invullen wat de rechten zijn voor deze
gebruiker.
Elke privilege staat voor een bepaald soort actie dat er op een
database server gedaan kan worden.
Bijvoorbeeld:
SELECT : Met deze privilege mag een gebruiker data lezen.
UPDATE : Met deze privilege mag een gebruiker velden wijzigen.
CREATE : Met deze privilege mag een gebruiker nieuwe tabellen
maken.
CREATE VIEW : Met deze privilege mag een gebruiker een view
maken.
etc.
1
Databases 2 31-12-22 | 48
Privileges per Tabel
A: Ja. Maar niet via het rechten scherm van de MySQL Workbench.
Alleen via een Query.
Bijvoorbeeld:
GRANT SELECT,INSERT,UPDATE,DELETE ON
mydatabase.table_name TO 'username'@'localhost';
1
Databases 2 31-12-22 | 49
Vraag
Stel ik heb een role die mij global update privileges geeft op een
server.
Daarnaast heb ik (op dezelfde server) op mijndatabase alleen
select privileges.
Antwoord:
Ja. De gebruiker heeft immers rechten hierop via de global update
privileges.
1
Databases 2 31-12-22 | 50
Vragen?
1
Databases 2 31-12-22 | 51