Table of Contents
Introduktion
Velkommen til Database modulet på akademiuddannelsen.
Akademiuddannelsens
Akademiuddannelserne er tilrettelagt som deltidsstudie med et omfang af 60 ECTS, svarende til et års fuldtidsstudier.
Uddannelserne er bygget op af fag, der hver har et omfang af 5 eller 10 ECTS.
En Akademiuddannelse består af obligatoriske fag for minimum 20 ECTS, valgfag for minimum 5 ECTS, samt et afgangsprojekt på 10 ECTS.
Oversigt
Kurset består af 6 kursus gange, med følgende indhold.
Kursusgang 1
- Introduktion
- MySQL - Installation og test af Workbench
- Demo databaser - Northwind og Employees
- SQL introduktion
- SELECT
- WHERE
- AND, OR, NOT
- ORDER BY
- DISTINCT
- BETWEEN
- IN
Kursusgang 2
SQL
- Datatyper
- DATABASE - (CREATE, DROP)
- TABLE (CREATE, DROP, ALTER)
- INSERT INTO
- UPDATE
- AUTO INCREMENT
- NULL værdier
Kursusgang 3
Normalisering
Relationer
- JOIN (LEFT, RIGHT, INNER)
- VIEW
Kursusgang 4
Funktioner
- Beregninger
- AVG, MIN, MAX, COUNT, SUM
- GROUP BY
- HAVING
SQL
- INDEX
- CASE
Kursusgang 5
- PROCEDURE
- TRIGGER
- IMPORT CSV
- EXPORT CSV
Kursusgang 6
- Sikkerhed
- Brugere
Eksamen
Eksamen afholdes som en mundtlig eksamen på 30 minutter.
Kursusgang 1
Introduktion
Det er Open Source databasen - MySQL du skal bruge.
Den kan installeres på Windows, Mac og Linux.
Du kan læse mere om MySQL her: Link
MySQL Installation
Windows
Du kan finde en vejledning for installation på Windows her: Link
Mac
Du kan finde en vejledning for installation på Mac her: Link
Demo databaser
Hvad er et database kursus uden data?
Der er 2 demo databaser vi skal bruge på dette kursus:
- Northwind
- Employees
Northwind
Denne database er en Microsoft har brugt i mange år. Den indeholder 13 tabeller
ER-diagram - Northwind
Kan også hentes som PDF her: Link
Installation
Du skal følge disse trin for at få installeret Northwind databasen:
- Hent zip filen Northwind.zip herfra Link
- Pak fil ud - den indeholder to filer
- Åben filen Northwind.sql i Workbench
- Kør filen
- Det tager “noget” tid at oprette databasen og indsætte data
Employees
Denne database er en af MySQL’s officielle demo databaser.
Se mere på deres www side - Link
The Employees sample database was developed by Patrick Crews and Giuseppe Maxia and provides a combination of a large base of data (approximately 160MB) spread over six separate tables and consisting of 4 million records in total. The structure is compatible with a wide range of storage engine types. Through an included data file, support for partitioned tables is also provided.
MySQL har også en officiel beskrivelse som kan hentes her: Link
ER-Diagram - Employees
Kan også hentes som PDF her: Link
Installation Du skal følge disse trin for at få installeret Employee databasen:
- Hent filen zip filen: employees.zip herfra:
- Pak zip-fil ud - den indeholder 15 filer
- I Workbenck klik - Tools > Start Shell
MySQL Workbench Introduktion
MySQL Workbench er det grafiske program som du skal bruge til dit arbejde med MySQL serveren.
Der findes en online manual til Workbench
MySQL Workbench understøtter:
- SQL Development
- Data Modeling (Design)
- Server administration
- Data Migration
- MySQL Enterprise Support
MySQL Workbench kan findes i tre versioner; MySQL Workbench Community Edition, MySQL Workbench Standard Edition og MySQL Workbench Enterprise Edition.
MySQL Workbench Community Edition er Open Source (GLP Licens) og er dermed gratis at bruge, det er den version vi kommer til at bruge.
Du kan læse mere om forskellene på de tre versioner her: MySQL Workbench Features
Hoved vinduet i Workbench
SQL introduktion
SELECT
SELECT er nok den mest brugte SQL kommando. Den bruges til at hente data ud af din database.
Syntax SELECT
Northwind Syntax SELECT
Kommentarer
Det kan være en rigtig god ide at skrive kommentarer til dine SQL koder. Der er to forskellige muligheder for kommentarer
- På en enkelt linje - her brugere du: –
- Over flere linjer - her brugere du: /* kommentar */
**Eksempeler på en kommentar på en linje
Hvis du gerne vil skrive en kommentar der fylder mere end en linje eller det er flere linjer kode du gerne vil ud-kommenter skal du bruge denne metode:
Alt imellem /* og */ bliver ignoreret.
DISTINCT
Bruges sammen med SELECT til at returnere unikke værdier. Altså kun en af hver værdi.
Syntax DISTINCT
Northwind Syntax DISTINCT
## WHERE
Bruges sammen med SELECT for at udvælge data.
Det er kun de data der opfylder dit krav (WHERE) der vises.
Syntax WHERE
Northwind Syntax WHERE
WHERE kan også bruges sammen med andre SQL kommandoer end SELECT. F.eks. UPDATE og DELETE
AND, OR, NOT
Du kan kombinere WHERE med AND, OR og NOT.
AND og OR bruger du til at udvælge data på mere end én betingelse.
- AND viser data der opfylder alle betingelser
- OR viser data hvor det bare er en af betingelserne der er opfyldt
NOT bruges til at vise data der ikke opfylder betingelsen.
Syntax AND
Northwind Syntax AND
Syntax OR
Northwind Syntax OR
Syntax NOT
Northwind Syntax NOT
BETWEEN
BETWEEN bruges til at udvælge et “interval”.
Det kan være tal, tekst eller datoer.
Syntax BETWEEN
BETWEEN har altid dine start og slut værdier med.
IN
IN giver dig mulighed for at bruge flere værdier i en WHERE sætning.
Syntax IN
ORDER BY
Hvis du vil sortere dine data skal du bruge ORDER BY.
ORDER BY sorterer i stigende orden som standard - ASC.
For at sortere i faldende orden skal du bruge DESC.
Syntax ORDER BY
Syntax ORDER BY Northwind
Opgave 1
Du kan hente opgave 1 her som PDF - Link
Kursusgang 2
DATABASE
For at oprette en ny database skal du bruge CREATE For at slette en eksisterende database skal du bruge DROP
Når du vil skifte mellem hvilken database der er den aktive”, skal du bruge USE.
Syntaks DATABASE
Du skal være opmærksom på at du ikke får nogle advarsler ved brugen af DROP og det er ikke muligt at fortryde denne kommando.
Hvis du vil se alle de databaser der er på din MySQL server, kan du brugere denne SQL kommando
Datatyper
Hvert felt en database har et navn og en datatype.
Datatypen “styre” hvilke data det er muligt at gemme i feltet.
I MySQL er datatyperne opdelt i 3 hovedgrupper:
- Tekst
- Tal
- Dato
Du kan hente en oversigt over MySQL’s datatyper her: Link
TABLE
Det er i dine tabeller at data gemmes. For at oprette en tabel brugere du SQL kommandoen CREATE TABLE
Syntaks CREATE TABLE
Hvis du vil slette en tabel skal du bruge SQL kommandoen DROP TABLE
Bemærk at alle data slettes og det er ikke muligt at fortryde denne kommando.
Syntaks DROP TABLE
Når du har oprettet en tabel skal du bruge SQL kommandoen ALTER TABLE for at ændre den.
Du kan udføre følgende ændringer:
- Tilføj en kolonne
- Slet en kolonne
- Ændre en eksisterende kolonne
Tilføj en kolonne For at tilføje en kolonne skal du bruge denne SQL kommando
Slet en kolonne For at slette en kolonne skal du bruge denne SQL kommando
Ændre en eksisterende kolonne For at ændre en eksisterende kolonne skal du bruge SQL kommando MODIFY
PRIMARY KEY
En primær nøgle er et felt der unikt definere en bestemt post. Primær nøgle felter skal indeholde unikke værdier og må ikke være tomme (NULL).
En tabel kan kun have en primær nøle, men denne kan godt være en kombination af flere felter.
Du tilføjer en primær nøgle, ved oprettelsen af en tabel, på følgende måde:
Hvis du skal tilføje en primær nøgle efter at tabeller er oprette skal du bruge ALTER TABLE
Det er ikke et krav at den tabel har en primær nøgle, men det er klart at anbefale.
NOT NULL
Et felt uden en værdi har i SQL værdien NULL. Det må ikke forveksles med værdien 0. En NULL værdi kommer når der ikke indsættes nogen værdi i feltet.
Som standard kan alle kolonner, undtaget primærnøgle kolonnen, indeholder NULL værdier. Det er muligt for dig at styre om det skal være muligt at indsætte NULL værdier eller ej. På denne måde kan du gennemtvinge at et felt altid indeholder en værdi.
Hvis du efter at have oprettet en tabel har behov for at tilføje en NOT NULL betingelse skal du bruge denne SQL kommando:
Tit er der behov for at finde felter der har værdien NULL. For at gøre dette skal du bruge IS NULL kommandoen.
Northwind Syntaks IS NULL
Du kan også bruge IS NOT NULL
DEFAULT
Det er muligt at oprette en default værdi for en kolonne, der indsættes hvis der ikke specificere en værdi.
Du kan slette en default betingelse med
AUTO INCREMENT
Ved at bruge AUTO INCREMENT kan du automatisk få et fortløbende nummer på en kolonne. Det vil typisk være din primær nøgle.
Som default starter AUTO INCREMENT på 1, men det kan du ændre ved at bruge denne SQL kommando
Bemærk - hvis du sletter en post vil du ikke få dens “nummer” igen.
INSERT INTO
En tabel uden data bliver hurtig kedelig - for at indsætte data i en tabel skal du bruge SQL kommandoen INSERT INTO
Hvis du tilføjer værdier for alle felter er det ikke nødvendigt at angive kolonnerne. Det er dog vigtigt at du holder rækkefølgen.
Hvis du kun vil tilføje værdier til bestemte felter skal disse angives
UPDATE
Hvis du vil ændre på eksisterende værdier skal du bruge UPDATE kommandoen.
Bemærk - hvis du ikke har en WHERE betingelse vil det være hele kolonnen der bliver opdateret.
Det vil typisk være primær nøglen der bruges i WHERE betingelsen.
DELETE
Hvis du vil slette en post skal du bruge DELETE
Husk at bruge en WHERE betingelser, elleres vil du få slettet alle poster i tabellen.
SAFE MODE
Som standard har MySQL en sikkerhed indbygget der gør at du ikke kan slette (DELETE) eller opdatere (UPDATE) uden at du angiver en WHERE betingelse med en primærnøgle.
Disse virker IKKE hvis SAFE MODE er aktiv.
Hvis du ønsker at slette eller opdatere uden at bruge en primærnøgle, kan du ændre denne sikkerhed indstilling på 2 måder.
Via SQL Indsæt denne SQL kommando før din DELETE/UPDATE sætning
Da denne indstilling faktisk er en rigtig god sikkerheds indstilling vil det være en anbefaling at sætte den retur når du har udført dine kommandoer.
Via GUI-Workbench Du kan også gøre dette via Workbench, fordelen/ulempen ved denne metode er at det er en permanent indstilling.
Edit > Preferences > Sql Editor > Safe Updates
Fjern markering i Safe Updates
Opgave 2
Du kan hente opgave 2 her som PDF - Link
Kursusgang 3
Normalisering
Formået med normalisering er at undgå redundans og gøre databasen lettere at vedligeholde.
Redundans er er gentagelser - Når en information står flere gange
Der findes 6 normalformer og en “stramning” af den tredie ved navn Boyce-Cood normalformen.
Typisk fortager man kun en normalisering op til den tredie normalform.
1. Normalform (NF1)
Definition: En relation er på første normalform, hvis ingen af dens domæner har elementer, der i sig selv er mængder.
- Tabellen har et nøglefelt (behøver ikke at være unikt)
- Der må kun være en værdi af samme type i hver post
- Alle poster skal være lige lange dvs. have samme antal felter
2. Normalform (NF2)
Definition: En relation er på anden normalform, hvis den er på første normalform, og hvis enhver ikke-nøgle-attribut er fuldt funktionelt afhængig af enhver kandidatnøgle i relationen.
- Tabellen skal opfylder 1. Normalform
- Der skal være en primærnøgle
3. normalform (NF3)
Definition: En relation er på tredje normalform, hvis den er på anden normalform og det gælder, at ingen ikke-nøgle-attribut er transitivt afhængig af nogen kandidatnøgle i relationen.
- Tabellen skal opfylder 2. Normalform
- Hvis der er mere end et felt der kan sættes som nøgle for andre felter skal tabellen opdeles i flere
Eksempel - Skole
Udgangspunktet er et regneark der bruges til at register elever og deres karakter.
NF 0
Hvad er problemet?
NF 1
NF 2
NF 3
ER-Diagram
Over Skole i normalform 3. Med angivelse af datatyper og relationer melle de 5 tabeller.
Du kan bruge Workbench til at tegne dit ER-diagram. Jeg vil dog altid anbefale at du starter med tegne ER-Diagrammet på et stykke papir.
SQL kode Du kan hente SQL koden her:
Relationer
MySQL er en relationel database, hvilket betyder at data er opdelt i tabeller som det er muligt at oprette relationer i mellem.
Hver tabel har en primærnøgle, som består af et eller flere felter i tabellen. Primærnøglen skaber en unik identifikation af den enkelte række i tabellen.
En fremmednøgle er et felt i en tabel, som peger på en primærnøgle i en anden tabel og dermed skaber relation mellem de to tabeller.
Der findes tre typer af relationer:
- En til Mange
- En til En
- Mange til Mange
En til Mange
Det er denne relations type der typisk er flest af i en database.
I Northwind databasen har vi en typisk En til Mange relation mellem tabellerne Customers og Orders.
Hver kunde står kun en gang i Customeres tabellen, men da hver kunde har en eller flere ordre står kunden flere gange i tabellen Orders.
Det vil sige at relationen går fra primær nøglen CustomerID (En siden) i tabellen Customeres til fremmednøglen i, CustomerID i tabellen Orderes (Mange siden).
En til En
Denne relations type bruges kun brugt af to grunde:
- Sikkerhed
- Opdeling af en meget stor tabel
Årsagen er at man ligeså godt kunne have alle data i en tabel.
Eksempel
Et eksempel kunne være fortrolige oplysninger som:
- Cpr nummer
- Løn
- Pension
Der er gemt i en selvstændig tabel som så er relateret til en tabel med det mere “almendelige” oplysninger som navn, mobilnummer, e-mail osv.
Mange til Mange
Det er ikke muligt at oprette en Mange til Mange relation i MySQL databasen.
En Mange til Mange relation skal løses ved at indskyde en ekstra tabel og så oprette to stk. En til Mange relationer.
I Northwind databasen er der mange ordre og der er mange produkter - hver ordre består af et eller flere produkter.
Der er altså en Mange til Mange relation mellem tabellerne Orders og Products.
Dette løses var at oprette en ekstra tabel - Order_details - Da denne relationen melle de to tabeller ikke kan oprettes direkte.
JOIN
Du skal bruge SQL kommandoen JOIN for hente data fra flere tabeller.
Der findes 4 forskellige JOIN typer:
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL JOIN (ikke understøttet i MySQL)
- SELF JOIN
INNER JOIN
Henter fællesmængden fra de to tabeller - Altså der hvor værdierne er ens.
LEFT JOIN
Henter alle data fra den venstre tabel (table1) og de data der matcher fra den anden tabel (tabel2).
Kaldes også LEFT OUTER JOIN
RIGHT JOIN
Henter alle data fra den højre tabel (table2) og de data der matcher fra den anden tabel (tabel1).
Kaldes også RIGHT OUTER JOIN
FULL JOIN
Der findes også en FULL JOIN, der henter alle data fra begge tabeller.
Bemærk at MySQL IKKE understøtter FULL JOIN
SELF JOIN
En SELF JOIN joiner en tabel med sig selv. Tabellen Employees i Northwind databasen har et eksempel på dette.
Der er ef felt ReportsTo der referer til primærnøglen EmployeeID i sammen tabel.
VIEW
Et VIEW kan betragtes som en virtuel tabel. Et VIEW har kolonner og poster som en tabel, men den bliver oprettet via en SQL sætning på basis af en eller flere andre tabeller.
Et VIEW kan erstatte en kompliceret SQL sætning. Det er altså nemmere for brugeren at hente data fra et VIEW.
Et VIEW vil altid vises de nyeste data.
Du finder VIEW i en selvstændig mappe i din database
Du finder VIEW i en selvstændig mappe i Worksbench.
Opgave 3
Du kan hente opgave 3 her som PDF - Opgave 3
Kursusgang 4
Funktioner
MySQL har mange funktioner som du kan bruge, nogle eksempler er:
- DAY()
- MONTH()
- YEAR()
Eksempel fra Northwind
Du kan finde en oversigt her Link
Beregninger
Du har også mulighed for at fortage beregninger på dine data, det kan være simple beregninger som det at gange to kolonner med hinanden eller det kan være beregninger hvor du brugere nogle funktioner.
SQL Beregninger
- Plus: +
- Minus: -
- Gange: *
- Division: /
- Modulus: %
Eksempel fra Northwind
Brug af Funktioner
Du kan bruge forskellige beregnings funktioner på dine data.
GROUP BY
GROUP BY-sætningen bruges ofte sammen med en beregnings funktioner som f.eks. AVG, MIN, MAX, COUNT og SUM til at gruppere dit resultat.
Det kan f.eks. være det totale salg på en kunde eller et produkt.
HAVING
Hvis du vil “udvælge” data på basis af en gruppering (GROUP BY) kan du IKKE bruge WHERE.
Dette eksempel fra Northwind vil ikke virke
Når der er fortaget en gruppering på “CustomerID” skal du bruge SQL kommandoen HAVING for at det virker.
Samme eksempel fra Northwind, men med HAVING
Det er muligt at bruge WHERE sammen med GROUP BY det skal bare være så du udvælger på data der ikke er grupperet på.
Eksampel fra Northwind
INDEX
Du kender et index fra en bog, hvor der typisk er et index bageret i bogen. Det gør det nemmere og hurtigere at finde et bestemt ord/emne.
Det sammen gælder indexer i SQL, de gør det hurtigere at finde data.
Som standard oprettes der et index når du opretter en primær nøgle. Dette index er et unikt index - det er jo en primær nøgle.
Du opretter et index med SQL kommandoen CREATE INDEX
Brugeren kan ikke se de indexer der er oprette, men du kan se dem under den enkelte tabel i mappen Indexes
Det er også muligt at oprette et index hvor du kombinere flere kolonner.
Eksempel fra Northwind
UNIQUE INDEX
Det er muligt at oprette et unikt index, ligesom det index der oprettes ved primær nøglen. Det kan f.eks. bruges til at sikre at en kunde ikke oprettes to gange - kunne f.eks. være kundes CVR nummer.
DROP INDEX
Du kan fjerne et index med kommandoen DROP INDEX kombineret med ALTER TABLE
Hvilke felter
Hvilke felter skal du så oprette indekser på?
Som udgangspunkt bliver der oprettet et unikt index på dine primærnøgle. Ud over det vil det typisk være en fordel at oprette indekser på de felter der er fremmede nøgler.
Dernæst kan du med fordel oprette indekser på de felter hvor der søges meget. Det kan være svært at vide hvilke felter det er, en mulighed er at spørgere brugerne eller bruge et analyse værktøj til at finde disse felter.
Der er dog en ulempe ved oprettelsen af indekser - Det at gemme data bliver langsommere. årsagen er at indekserne skal opdateres med de nye data.
Hvis man skal indsætte eller opdatere store mængder data kan det være en fordel at slette dine indekser først og så oprette dem igen, når indsættelsen af data er færdig.
CASE
En CASE sætning opsætter forskellige betingelser som data så “holdes” op imod og der returneres en værdi i forhold til det.
En CASE sætning virker som en IF-THEN-ELSE sætning.
Når en værdi er SAND, falder indenfor en CASE, så returneres resultatet.
Hvis ingen betingelser er sande, returnerer den værdien i ELSE-klausulen.
Eksempel fra Northwind
Kursusgang 5
STORED PROCEDURE
En STORED PROCEDURE (SP) er SQL-kode, som du har gemt, så koden kan bruges igen og igen.
Hvis du har en SQL-forespørgsel, du skriver igen og igen, vil det være en fordel at gemme den som en SP. Du skal så bare “kalde” den for at få udført SQL koden.
Du kan også sende parametre/variabler til en SP. Hvilket gør at én SP kan bruges til flere forskellige udtræk.
Det kan f.eks. være; kundenummer, produktnummer, dato/måned/år eller lignede du brugere som parameter/variabel.
Syntaks for en STORED PROCEDURE
Når ud skal “kører”/afvikle en STORED PROCEDURE skal du bruge denne SQL kommando
En SP bliver gemt i databasen, du kan se hvilke SP der ligger på den enkelte database i mappen Stored Proceduers
Der er flere fordele ved at bruge SP:
- Hvis den sammen SP bruges flere gange af den sammen forbindelse/applikation vil den blive afviklet hurtigere.
- Der er mindre data-trafik mellem en applikation og MySQL databasen, da det kun er navnet på SP og evt. parameter der sendes over netværket.
- Det er mere sikkert at bruge en SP, da adgange er begrænset til det SP har adgang til.
Der er dog også nogle ulemper ved at bruge SP:
- Det er svært at fejl-finde og fejl-rette en SP
- Det kan være svært at vedligehold og have et overblik over mange SP
- Hvis der er mange logiske operationer i en SP vil den bruge meget RAM.
DELIMITER
Når du skal oprette en SP er det nødvendigt først at bruge en anden SQL kommando, DELIMITER.
Problemet er at vi ønsker at sende hele SQL kommandoen for SP til serveren. I den SQL kode der indgår i SP’en er der en “indlejret” SQL kode afsluttes med ;.
Det er derfor nødvendigt at ændre DELIMITER til noget andet end det normale ; - oprette SP - sætte DELIMITER retur til ;.
Du kan bruge flere forskellige ““tegn” til DELIMITER f.eks. // eller $$
Her sættes DELIMITER til // og tilbage til ;
Det er ikke kun når du opretter SP at det er nødvendigt, det glæder f.eks. også når du skal oprette Trigger.
VARIABLE
En af de store fordele ved en SP er at du kan bruge variable, hvilket gør dine SP’er mere fleksible.
Når du vil bruge en variabel skal du angive (dimensionere) dens datatype. Det er de sammen datatyper som ved oprettelse af felter i en tabel du skal bruge. Typisk vil datatypen være det sammen som feltet du brugere variablen op mod.
Eksempel Northwind med én variabel (Aar) af typen INT - her er det retur typen af funktionen YEAR der afgør datatypen.
Når du vil afvikle denne SP gøres det på følgende måde.
Eksempel med året 1996
Det er også muligt at brugere flere variabler. De skal bare angives adskilt af et ,
Eksempel fra Northwind
Når du skal afvikle en SP med flere variabler skal angive dem i sammen rækkefølge som de er oprettet.
Vis STORED PROCEDURE
Du kan få vist de SP’er der er i den enkelte database med denne SQL kommando
Hvid du geren vil se SQL koden for en bestem SP kan du bruge denne SQL kommando:
Slet STORED PROCEDURE
Du sletter en SP ved at brugere denne SQL kommando
Tip - Du kan også højreklikke på en SP i Workbench og vælge DROP Stored Procedure
TRIGGER
En Trigger er SQL kode, der afvikles automatisk, når en af følgende handlinger sker
- INSERT
- UPDATE
- DELETE
på den tabel hvor triggeren er oprettet.
Du kan betragte en TRIGGER som en speciel STORED PROCEDURE. Forskellen er at en TRIGGER bliver afviklet automatisk ved en af de tre førnævnte handlinger. Mens en STORED PROCEDURE skal afvikles “manuelt”.
Triggere er gode til opgaver som:
- håndhævelse af forretningsregler
- validering af input
- audit trial - typisk ved at skrive til andre tabeller
TRIGGER Syntaks
Du opretter en TRIGGER på følgende måde:
- trigger_time er enten BEFORE eller AFTER
- trigger_event er; INSERT, UPDATE eller DELETE
- Din SQL kode skal placeres mellem BEGIN og END
Eksemple fra Northwind
En TRIGGER bliver gemt “under”/på en tabel - den tabel som en af de tre handlinger udføres på.
Vis TRIGGER
Du kan med denne SQL kommando se dine TRIGGER
Bemærk tegnet før og efter table
Der er også en anden måde du kan se de forskellige TRIGGER du har. Det er sådan at definitionen på dine TRIGGERE bliver gemt i en system tabel ved navn: information_schema
Se alle TRIGGERE på en bestemt database
Der er også muligt at finde alle TRIGGERE på en bestem tabel.
Slet TRIGGER
Du sletter en TRIGGER ved at brugere denne SQL kommando
EXPORT - IMPORT CSV
Det er muligt både at eksportere og importere data fra CSV (Comma Separated Values) filer via SQL kommandoer.
Fordelen ved at bruge CSV er at filformatet kan læses af mange andre programmer.
EXPORT
Når du skal eksportere data skal du angive følgende parameter:
- Filnavn: INTO OUTFILE
- Tegn der “omslutter” felterne: FIELDS ENCLOSED BY ‘”‘
- Escape karakter bruges i tilfælde af specialtegn: TERMINATED BY ‘;’
- Afslutning: ESCAPED BY ‘”‘
- Linje skift: LINES TERMINATED BY ‘\r\n’;
Ud over det skal du udvælge de data du geren vil eksportere. Til det brugere du en almindelig SELECT sætning evt. med en WHERE på.
Eksempel fra Northwind der eksportere alle kunder fra USA.
Bemærk at der bruges en UNION ALL for at få overskrifter med.
IMPORT
Der er også muligt at importere data fra en CSV fil.
Her er det eksemplet fra eksporten der importeres ind i en tabel med navnet Customers_USA. Den tabel skal oprettes først.
Bemærk at den første ROW ikke importes, da den indeholder overskrifter.
Kursusgang 6
Sikkerhed
SQL Injection
Brugere
I MySQL kan du angive ikke kun hvem der har adgang til MySQL serveren, men også fra hvilken “host”, som brugeren forbinder fra.
Derfor består en brugerkonto i MySQL af et brugernavn og et “hostnavn” adskilt af et @.
For eksempel, hvis admin-brugeren forbinder til MySQL serveren fra localhost, er brugerkontoen admin@ localhost.
Det er sådan at admin-brugeren kun kan forbinde fra localhost ikke fra en remote-host, hvilket er med til at gøre MySQL serveren mere sikker.
Det er muligt at opsætte flere konti med samme navn ved at kombinere brugernavnet og host-navnet. Der kan så oprettes forbindelse fra forskellige host med forskellige rettigheder.
MySQL gemmer brugerkonti i mysql databasen i tabellen user.
Du kan se alle brugere med denne SQL kommando