Databaser kort intro Tom Heine Nätt
Agenda Hva er en database? Hva er SQL? Hente ut data fra en database SELECT Behandle data i en database (kort) CREATE TABLE, INSERT, UPDATE, DELETE Databaser med flere tabeller Fordeler/Ulemper md DB i forhold til filer Neste forelesning: Kobling fra PHP
Hvorfor lære DB nå? Det er slik man lagrer data i mange/fleste større applikasjoner Alternativ til filer Flerbruker!!! Løser enkelt mange problemer i forbindelse med databehandling Forsmak/intro til DB kurset Praktiske delen av DB kurset Avbrekk fra programmering
Hva er en database? Glem det dere evt. kan om Access! En tjeneste (/Service)! Klient Server tankegang Jfr, Webserver / Nettleser Tar hand om det fysiske nivået Inneholder ekstratjenester Backup Logging Brukeradmin ->Dataprosessering<- Kjører ofte på egne servere Lagrer data i(/som) tabeller
merker av DBMS'er Flere MySQL SQLServer Oracle Access ( hmmm )
Hva skal vi bruke? MySQL På ask.hiof.no På egen maskin (M en i mamp/wamp) Foreløpig tilkobling fra en DB-klient Fra PHP i neste forelesning
Hva er SQL? Uttales både [ ǫs kju ǫl] og [ si:kwəl] Structured(/Sequel) Query Language Brukes til alle kommandoer mot DB Data Definisjon Lage datastrukturer Data Manipulasjon Hente ut data Sette inn data Endre data Slette data Database Administrasjon Brukere Rettigheter Osv "Felles" for alle DBMS'er
Mer å vite om SQL Finnes i mange versjoner SQL1 SQL2 <= Den vanlige SQL3 SQL:2003 SQL:2006 I tillegg i mange dialekter (T-SQL, MySQL, PL/SQL osv. ) Og med mange extensions ( XML, OO, Geografisk osv.)
På tide med en DEMO CIA - Verdensdatabase
Vi har tabellen cia name region area population gdp Afghanistan Asia 647500 21251821 18100000000 Algeria Africa 2381740 28539321 97100000000 American Samoa Oceania 199 57366 128000000 Andorra Europe 450 65780 760000000
Hvordan koble til en DB? Krever at vi kjenner til: plassering/adresse brukernavn/passord databasenavn
Logge på DB på ask Logg inn på frigg med SSH skriv: mysql u brukernavn p passordet er brukernavnet Skriv deretter inne i mysql: use brukernavn Til testing kan dere også bruke tomhnatt, men KUN for SELECT-setninger (cia-db vil ligge her )
I egen database. Kjør følgende kommandoer: wget http://www.ia.hiof.no/wmp/diverse/cia.sql mysql -u brukernavn -D databasenavn -p < cia.sql
Tid for eksempelspørringer Sjekk dagens forelesning for eksempler
Egne tabeller Enkel Person-tabell
Lage egne tabeller Bruker kommandoen CREATE TABLE: CREATE TABLE Person ( id int, fornavn varchar(255), etternavn varchar(255), postnummer int, PRIMARY KEY(id) );
Legge inn data INSERT INTO Person VALUES(56,'Anna','Nass',1781); Tips for å se på en tabelldefinisjon: DESCRIBE tabellnavn;
Slette data DELETE FROM Person WHERE fornavn='per'; OBS! Pass pa at WHERE-setningen kun fjerner de du vil ha bort Glemmer du WHERE, forsvinner alt
Oppdatere data UPDATE Person SET postnummer=1245 WHERE id=7; Igjen Pass på WHERE
Fjerne tabeller og data DROP TABLE Person;
Flere tabeller Utvide Person-tabellen med en Poststed-tabell
Tabellen Poststed CREATE TABLE Poststed ( postnummer int, poststed varchar(255), PRIMARY KEY(postnummer) );
Koble Person til denne tabellen CREATE TABLE Person ( id int, fornavn varchar(255), etternavn varchar(255), postnummer int, PRIMARY KEY(id), FOREIGN KEY(postnummer) REFERENCES Poststed(postnummer) );
Hente ut data fra begge tabeller samtidig SELECT * FROM Person pe, Poststed po WHERE pe.postnummer=po.postnummer; FROM flere tabeller, vil lage alle mulige kombinasjoner, vi er kun ute etter de som har identisk postnummer.
PHPMyAdmin.
PHPMyAdmin Grafisk grensesnitt til MySQL-databasen Finnes på http://www.it-stud.hiof.no/myadmin Samme un/pw som mysql. Husk å velge DB!
Avslutning SQL vs. Filer
SQL vs. Filer Fordeler i forhold til filer Sikkerhet Integritet Backup Adgangskontroll Sporresprak /Dataprosessering Hurtighet Flerbruker Flere systemer kan bruke samme db Ulemper Dyrt Overdimmensjonert Generelle