Green World
En side om MiljĂž, Elektronikk, Programmering og litt til
Elektronisk infrastruktur Raspberry PI Informasjonsteknologi
Elektronisk infrastruktur Raspberry PI Informatikk 1
Steng X

SQL Select - Hent data

NÄr du skal hente ut verdier fra en SQL database bruker vi et eget SQL sprÄk. Det kan se ut som det er PHP vi bruker fordi det sitter tett sammen. Jeg skal her prÞve Ä skissere noen oppgaver og begrunne lÞsningene pÄ dem.

Hente data fra alle kolonnene

Ofte trenger vi alle kolonnene i en tabell og da bruker vi * tegnet i spĂžrringen.

SELECT * FROM tabellnavn;

Hente data fra noen kolonner

Noen ganger er det veldig mange kolonner i en database, og da er det hensiktsmessig og plukke ut de kolonnenen vi er interessert i. I eksempelet under henter vi ut kolonne 1 og 9, og det vil vi spare mye tid pÄ hvis det er mange kolonner og vi kun trenger de to.

SELECT kolonne-1, kolonne-9 FROM tabellnavn;

Hente data med spesielt innhold

Som oftest er det faktisk behov for Ă„ hente en spesiel linje i en tabell eller alle linjer som med personer som heter Lars eller er 17 Ă„r eller noe. Dette bruker vi dersom vi skal hente informasjon om for eksempel en person, og kanskje endre adresse eller slette hele linjen. I eksempelet under vil da y erstattes med kolonnenavnet og x med navnet (name='Lars').

SELECT * FROM tabellnavn WHERE y='x';

Eksempler pÄ uttrekk fra tabeller som dere kjenner igjen fra timen

Fjellturer

Vi har en database med fire tabeller. "person, fjell, fjell_has_person og poststed".

Vi henter ut all data fra fjell tabellen og organiserer det fint i en tabell ved hjelp av css:

Kode

Koble til "fjellturer" databasen og hente alt i "fjell" tabellen med MySQLi

<?php
$servernavn = "localhost";
$brukernavn = "root";
$passord = "";
$database = "fjellturer";

// Lag en tilkobling
$tilkoblingen = new mysqli($servernavn, $brukernavn, $passord, $database);

// Kontroller tilkoblingen og die sĂžrger for at koden stopper der.
if ($tilkoblingen->connect_error) {
    die("Tilkoblingen feilet: " . $tilkoblingen->connect_error);
}

// Lager spĂžrringen som skal sendes databasen og lagrer den i en variabel
$henterdata = "SELECT * FROM fjell";
// Henter dataene
$resultat = $tilkoblingen->query($henterdata);

// Hentingen gikk bra sÄ sjekker om det er noe data i linjene i tabellen.
if ($resultat->num_rows > 0) {
  // Skriver ut linjene i en tabell
  echo "<table><tr><th>Navn pĂ„ fjell</th><th>HĂžyde over havet</th></tr>";
  while($rad = $resultat->fetch_assoc()) {
    echo "<tr><td>".$red['fjell']."</td><td>".$rad['moh']."</td></tr>";
  }
  echo "</table>";
}
else{
  echo "Det var ikke noe data i tabellen 'fjell'";
}
$tilkoblingen->close();

?>

Fjell tabellen

Sorter:

Navn pÄ fjellHÞyde over havetPrimÊrfaktor (m)Nord (m)Øst (m)UTMReferansepunktOppdatert datoKommunenummer Merknad
testtt



Tabell personer

Her ligger det en INNER JOIN i spÞrringen slik at vi fÄr ut poststed basert pÄ postnummer

"SELECT * FROM person INNER JOIN postnummer ON person.postnummer = postnummer.postnummer"


Warning: Invalid argument supplied for foreach() in /var/www/jahn.no/teledataschool.com/informasjonsteknologi/databaser/hentfradb.php on line 153
FornavnEtternavnAdressePostnummerPoststedTelefonE-post



Tabellen som binder sammen person og fjell, samt JOIN av dem


Warning: Invalid argument supplied for foreach() in /var/www/jahn.no/teledataschool.com/informasjonsteknologi/databaser/hentfradb.php on line 168
DatoFornavnEtternavnFjell bestegetBeskrivelse



BĂ„tregister

Vi har fÄtt i oppgave Ä lage en database for et bÄtregister. Det skal inneholde informasjon om forskjellige bÄttyper, med stÞrrelse, produsent og litt til, samt eieren av bÄten og informasjon knyttet til det. FÞrst lager jeg de skjema med informasjonen jeg vil ha med i databasen, og kontrollerer dem i forrhold til "Normalform 1-3"


Tabell poststed

postnummerpoststed
0127Oslo

Dette skal deretter inn i en database, som tre tabeller

Vi bruker et program som het MySQL Workbench til Ă„ lage databasen og exporter den deretter til selve MySQL databasen


MySQL Workbench

Vi exporterer til MySQL databasen

FÞr vi exporterer databasen kan vi teste den ut med spÞrringer i Workbench, men det skal ikke vi nÄ. Det er viktig Ä endre navn pÄ databasen fÞr den exporteres ellers heter den "mydb" og det blir litt rotete. Endre navn til "batregister".

Hvis du har lykkes med exporten skal du nÄ ha en database i MySQL som heter batregister og inneholder de tre tabellene. Sett inn verdier i alle tabellene, og husk at skal du lykkes her sÄ burde du importere postnummerlisten fra posten.