Skip to content

Republic / Artiklar /

Artikeln uppdaterad 2021-04-14.
Skriven av Christofer Sandin.

SQL i data­bashanter­aren MySQL

För att ändra och visa data i en data­bashanter­are används Struc­tured Query Lan­guage (SQL). Eller rättare sagt, i rela­tions­baser­ade sådana används SQL. Den data­bashanter­are som använ­das i mina exem­pel är MySQL. Det­ta är en kost­nads­fri, sven­skutveck­lad data­bashanter­are som numer ägs av Sun.

MySQL finns att lad­da hem för både Win­dows, Mac OS X, Lin­ux och flera Unix­vari­anter så det bor­de pas­sa de fles­ta. Jag förut­sät­ter att du som är intresser­ad kan lad­da hem MySQL från mysql​.com och installera det på egen hand då det funger­ar pré­cis som vilket annat pro­gram som helst. När det­ta är gjort är det bara att läsa vidare…

Ska­pa en databas

För att kon­trollera om MySQL funger­ar som det skall kör vi pro­gram­met. Exem­plen nedan är gjor­da på en PC, och om du sit­ter på en sådan finns mysql.exe i kat­a­lo­gen mysql/bin. SQL-pro­gram­met ser i prin­cip likadant ut oavsett miljö, så det bor­de inte vara svårt att hän­ga med om du använ­der någon annan miljö. 

Kör vi föl­jande två kommandon:

mysql> CREATE DATABASE musik;
mysql> SHOW DATABASES;

så bor­de ni se föl­jande resultat:

+-----------+
| Database  |
+-----------+
| musik     |
| mysql     |
| test      |
+-----------+
3 rows in set (0.00 sec)

För att tala om att det är i den­na data­bas vi vill utföra ändringar­na fort­sät­tningsvis använ­der vi kom­man­dot USE:

mysql> USE musik;

Ska­pa och visa en tabell

Det förs­ta vi nu behöver göra är att läg­ga till de tabeller som kom­mer lig­ga till grund för exem­plen. Det­ta görs med ett nytt CREATE-kom­man­do. När du tryck­er på enter i slutet av en rad utan att avs­lu­ta med ett semi­kolon får du en -> prompt istäl­let för den van­li­ga och mysql tolkar det­ta som att kom­man­dot fort­sät­ter, kom ihåg att avs­lu­ta sista raden med ett semikolon.

mysql> CREATE TABLE cdskivor
-> (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> titel VARCHAR(40),
-> artist VARCHAR(40),
-> ar DATE
-> );

För var­je kol­umn vi ska­par är den förs­ta para­me­tern nam­net på kolum­nen, det andra datatypen och de övri­ga sät­ter begrän­sningar och regler på just den kolumnen. 

I kolum­nen id kom­mer vi att ha ett pos­i­tivt heltal (int unsigned), det­ta id får inte vara tomt när vi läg­ger till data i data­basen (not null), värdet kom­mer att ökas med ett automa­tiskt för var­je ny insät­tning (auto_increment) och kom­mer även att vara den primära nyck­eln (primary key) i tabellen cdskivor, dvs. den kol­umn som ser till att var­je rad har ett unikt fält med data som gör att vi kan hål­la reda på alla inlägg.

mysql> SHOW TABLES;
+-------------------+
| Tables_in_musik   |
+-------------------+
| cdskivor          |
+-------------------+
1 row in set (0.00 sec)

eller om du vill ha lite utförli­gare infor­ma­tion så kan du använ­da dig av:

mysql> DESCRIBE cdskivor;
+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| id     | int(10) unsigned |      | PRI | NULL    | auto_increment |
| titel  | varchar(40)      | YES  |     | NULL    |                |
| artist | varchar(40)      | YES  |     | NULL    |                |
| ar     | date             | YES  |     | NULL    |                |
+--------+------------------+------+-----+---------+----------------+
4 rows in set (0.05 sec)

Läg­ga till data i tabeller

För att läg­ga till data till en tabell i SQL-språket använ­der man kom­man­dot INSERT. Syn­tax­en för INSERT är:

INSERT INTO table_name (column1, column2….) VALUES (value1, value2…);

För att läg­ga till en post i vår tabell kan vi allt­så läg­ga till en ski­va med kommandot:

mysql> INSERT INTO cdskivor (titel, artist, ar)
-> VALUES ("Out of Time", "R.E.M.", "1991-03-12");

För att se vil­ka poster som lig­ger med i tabellen använ­der vi det van­li­gaste SQL-kom­man­dot SELECT. Det är med SELECT som man väl­jer ut data ur tabeller:

mysql> SELECT * FROM cdskivor;
+----+-------------+--------+------------+
| id | titel       | artist | ar         |
+----+-------------+--------+------------+
|  1 | Out of Time | R.E.M. | 1991-03-12 |
+----+-------------+--------+------------+
1 row in set (0.00 sec)

Efter­som vi sat­te kolum­nen id till auto_increment behöver vi allt­så inte ange det­ta värdet utan det läg­gs till automa­tiskt och blir ett större än det störs­ta värdet för var­je ny rad som läg­gs till. I det­ta fall blir id allt­så 1 efter­som vi inte hade någon data i tabellen innan.

Då så, dags att göra någon nytta…

Efter den här kor­ta intro­duk­tio­nen till SQL hop­pas jag att det känns som om du har lite ett hum om hur det funger­ar. Det finns givetvis väldigt myck­et mer att gå igenom, men nu bor­de det inte kän­nas helt avlägset att skri­va de förs­ta SQL-sat­ser­na, anti­n­gen direkt i det gränss­nitt som vi använde ovan eller i ett förs­ta PHP-script. 

Hur man använ­der sig av MySQL till­sam­mans med PHP eller andra pro­gram­mer­ingsspråk är ämnet för en annan artikel, men en bra start hit­tar man på PHP:s webb­plats där det finns enkla exem­pel.

Ref­er­enser

Relaterade artiklar