Kom godt igang med MySQL på ITU

tilrettet af Martin Elsman (oprindeligt af Peter Sestoft)


MySQL er et relationsdatabasesystem (RDBMS). I et relationsdatabasesystem består hver database af en samling tabeller. Oplysninger udtrækkes fra tabellerne ved hjælp af såkaldte forespørgsler, som er skrevet i sproget SQL.

Opret først en MySQL database som angivet på kursushjemmesiden. I din database kan du oprette (næsten) lige så mange tabeller med lige så mange data som det passer dig.

Du kan komme i kontakt med din database på denne måde:

  1. Log ind på en af ITUs servere (f.eks. ssh.itu.dk) ved hjælp af Secure Shell (ssh).
  2. Forbind dig til databasen ved at skrive
      mysql -h mysql.itu.dk -u <bruger> -p <database>
    
    hvor <bruger> er brugernavn og <database> er databasenavn.

    Hvis dit brugernavn er jamesb og dit databasenavn er W2_E2003_jamesb ser det sådan her ud:

      mysql -h mysql.itu.dk -u jamesb -p W2_E2003_jamesb
    
  3. Du bliver bedt om password. Du skal bruge det databasepassword som er sendt til dig fra sysadm i forbindelse med oprettelsen af databasen; brug ikke dit mail-password!
  4. Prøv at oprette en tabel Familie med felterne navn og fødseldag:
      CREATE TABLE Familie (navn varchar(40), fødseldag int);
    
  5. Indsæt nogle poster i tabellen:
      INSERT INTO Familie VALUES ('Carsten', 19640627);
      INSERT INTO Familie VALUES ('Kirsten', 19360114);
      INSERT INTO Familie VALUES ('Jørgen',  19340930);
    
    Brug pil-op på tastaturet til at genfinde en tidligere SQL-kommando. Du kan rette i kommandoen og så trykke retur for at udføre den.
  6. Udtræk posterne fra tabellen:
      SELECT * FROM Familie;
    
  7. Udtræk posterne sorteret på forskellige måder:
      SELECT * FROM Familie ORDER BY navn;
      SELECT * FROM Familie ORDER BY fødselsdag;
    
  8. Afslut MySQL:
      EXIT
    
    Du kan altid gå ud af mysql uden at tabe data. Næste gang du går ind husker den endda de sidste kommandoer du har udført. Brug pil-op til at genfinde dem.

Kort Mysql-håndbog

Vis alle tabeller i aktuel database

  SHOW TABLES

Vis oplysninger om felterne i Tabel

  SHOW FIELDS FROM Tabel

Opret tabellen Tabel

  CREATE TABLE Tabel (felt1 type1, ...);

Oversigt over de vigtigste SQL-typer:

TypeAnvendelseEksempel
intheltal117
doubleflydende-kommatal3.1415
decimal(20,2)fast-kommatal med 20 cifre, 2 decimaler464000000000.00
char(80)tekst (maks 80 tegn)'Ole Jensen'
varchar(80)tekst (maks 80 tegn)'Ole Jensen'
datedato2002-03-10
timeklokkeslet22:59:17
datetimedato og klokkeslet2002-03-10 22:59:17

Opret indeks på Tabel

  CREATE INDEX Tabel_idx on Tabel (felt1, ...);

Et indeks gør søgning på felterne felt1, ... langt hurtigere. I MySQL kan man kun have indekser på felter der er erklæret NOT NULL da tabellen blev oprettet.

Nedlæg tabellen Tabel

  DROP TABLE Tabel;

Udfør SQL-script fra en tekstfil, f.eks. studieadm.sql.txt

Inde i mysql kan du udføre

  source studieadm.sql.txt;

Tilføj kopi af alle SQL-ordrer og resultater til filen ud.txt

  tee ud.txt

Hvis du ønsker at åbne filen ud.txt med Wordpad skal du huske at vælge Filtype | Tekstdokumenter (*.txt), i Åbn dialogen, ellers viser Wordpad ikke *.txt filer.

Indlæs data fra tabulator-separeret fil

Hvis tekstfilen tabel.txt indeholder data adskilt med tabulator, og tabellen Tabel er oprettet, kan tekstfilens linier indlæses som poster i tabellen:

  LOAD DATA LOCAL INFILE "tabel.txt" INTO TABLE Tabel IGNORE 1 LINES;

Tekstfilen tabel.txt kunne for eksempel være eksporteret fra et Excel-regneark med Filer | Gem som | Tekst (tabulatorsepareret) | tabel.txt. Læg mærke til at IGNORE xx LINES kan bruges til at ignorere tabeloverskrifter fra regnearket som ellers fejlagtigt ville komme med i tabellen.

Slet alle poster fra tabellen Tabel

Dette sletter alle poster fra tabellen, d.v.s. dens indhold, men ikke tabellen selv:

  DELETE FROM Tabel;

Sætte en grænse på antallet af poster i et svar

Man kan tilføje LIMIT nn efter en SELECT for at angive det maksimale antal poster man vil have, for eksempel:

  SELECT * FROM Tabel LIMIT 30;

Særlige forhold og begrænsninger i MySQL


Martin Elsman, Scripting, Databaser og Systemarkitektur, 2007-10-11 (oprindeligt af Peter Sestoft)