MySQL. Maths Göthe. 25 februari Inledning Några konventioner Licens... 2

Relevanta dokument
Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Innehåll MySQL Intro. Historik / Utveckling Produkter Primära delsystem Installation Tabell och datatyper Namnsättning

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Starta MySQL Query Browser

Föreläsning 6 Databaser och säkerhet

Databasutveckling Introduktion till SQL och TSQL

Dokumentation för VLDIT AB. Online classroom

Introduktion till frågespråket SQL (v0.91)

Structured Query Language (SQL)

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Övningar i SQL. SQLAccess.doc Ove Lundgren

Structured query language (SQL)

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Design och underhåll av databaser

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

1.Lär känna MS SQL Observera. Tips. Förberedelse

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Introduktion till MySQL

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Vad är en databas? Databasutveckling Med MySQL/MariaDB

Sample exam questions. Database exam TIG058

WCMS-15, Webbutvecklare CMS

Filbeskrivningar Eller på särskild CD skiva

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Introduktion MySQL och MariaDB

VAD GÖR DU / VEM ÄR DU?

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Skapa din egen MediaWiki

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Skapa exempeldatabasen

LEX INSTRUKTION LEX LDAP

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Databaser och Datamodellering Foreläsning IV

Grunderna i SQL del 1

Instruktioner för att skapa konton i MV-login

Installera din WordPress med 9 enkla steg

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

emopluppen Installationsmanual

Ladda upp filer fra n PLC till PC

TENTAMEN DATABASKUNSKAP ITEK12

Inledning LAMP Perl Python.

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

MySQL Relationsdatabassystemet med fri källkod

Innehåll. MySQL Grundkurs

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Lektion 5 HTML, CSS, PHP och MySQL

Introduktion till Jasmine 1.2 ODQL

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

Laboration SQL. Kom igång.

Referenshanteringsprogrammet

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

3. Dynamiska webbplatser, 20 Yhp (4 v)

Administrationsmanual ImageBank 2

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar

VAD GÖR DU / VEM ÄR DU?

Det är fullt tillåtet att göra laborationen innan laborationstillfället.

Labb 1. prompt> mysql -h db-und.ida.liu.se -u [liuid] -p Enter password. mysql --host=db-und.ida.liu.se --user=[liuid] --password=[lösen]

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

1. Enkel sökning Globalsökning Avancerad sökning Historik Söka via klassificeringsstruktur 14

Databasspråket SQL - online.

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

Skriv ditt sökord i sökrutan och markera rutan för att föreslå ämnesord (Suggest Subject Terms).

Rebus Backup för SQL-databaser

Webbprogrammering, grundkurs 725G54

Classpath. Class loading + resurser. Class loader. jar-filer

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

Nya webbservern Dvwebb.mah.se

efact Sök Sök/Rapporter ( )

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Innehåll MySQL Intro. Ex på ett index Index typer ISAM Balanserat träd Pk och Fk i MySQL Eget index För o nackdelar med index

OBS! Figuren visar inte alla aspekter och objekt som är inblandade i säkerhetssystemet.

Databasspråket SQL - online.

Skapa en databas. Skapa en tabell. Gör man antingen genom kommandot

Prova på-laboration i SQL

1. SQL DML (Data Manipulation Language) 2. Lägga till data. 4. Uppdatera data 5. Aktivera default value 6. Hantera datum 7.

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Labb 1. prompt> mysql --host=db-und.ida.liu.se --user=[liuid] -- password=[lösenord] [liuid]

Se kurshemsidan för användbara länkar för att genomföra denna laboration.

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

Databasspråket SQL - online.

Modul 5 Joomla! Översikt. Denna moduls mål: - Få kunskaper om Joomla! - Få kunskap om installation och konfiguration.

Storegate Pro Backup. Innehåll

732G16: Databaser - Design och programmering

Trafla databasen vi hämtar data från (remote export) ligger på en godtycklig maskin i nätverket. Den här databasen är en MIMER databas.

Transkript:

En liten introduktion Maths Göthe maths57gothe(at)yahoo(punkt)se 25 februari 2010 Innehåll 1 Inledning 2 1.1 Några konventioner.......................... 2 1.2 Licens................................. 2 2 Installera 2 2.1 Starta och stanna........................... 3 2.2 Logga in................................ 3 3 Databaser 3 3.1 Visa databaser............................ 4 3.2 Välja en databas........................... 4 3.3 Skapa en databas........................... 4 3.4 Ta bort databas............................ 4 4 Tabeller 4 4.1 Visa tabeller............................. 5 4.2 Skapa en tabell............................ 5 4.3 Importera en fil............................ 8 4.4 Ändra i en tabell........................... 8 4.5 Infoga, uppdatera och ta bort data................. 9 5 Sökningar 10 5.1 Förfina sökningen........................... 10 5.2 Begränsa och sortera......................... 11 5.3 Hitta mönster............................. 11 5.4 Skapa en tabellvy........................... 11 6 Användare 12 6.1 Skapa och ta bort en användare................... 12 6.2 Ge användaren privilegier...................... 13 6.3 Byta lösenord för root........................ 13 7 Resurser 14 1

1 Inledning Sedan några år tillbaka händer det någon gång varje år någonting som gör att jag ägnar mig en lite sund åt databashanteraren. Anledningen brukar vara att jag installerat program som behöver en databas för att lagra information. Problemet är bara att jag inte kommer ihåg så mycket mellan varven. Så nu har jag tagit reda på lite grunder och skrivit ner mina anteckningar här. Jag är inte på något sätt kunnig i det här ämnet. Den här texten har för mig varit en inlärningsprocess för att få vissa grundläggande kunskaper. Det är bara dessa grunder jag behöver. Ta alltså inte det som står här för hela sanningen. Det kan finnas direkta felaktighter, även om jag har testat det mesta och sett att det fungerar i praktiken. När jag meckade med det här använde jag mig av Ubuntu 9.04 serverversionen. I paketförrådet hittade man då version 5.0 av. 1.1 Några konventioner Jag kommer, när jag skriver kommandon för att ange vissa ord med versaler. Det är inte nödvändigt när man sitter och meckar, men det är ett traditionellt sätt att visa kommandona på. Likaså kan jag ibland använda dubbla eller enkla citattecken. För spelar det här ingen roll. Du kan använda vilket sätt du vill och i många fall behövs de inte alls. Framför allt verkar det vara nödvändigt att använda citattecken när man söker efter något som innehåller text. Programmerar du i PHP kan det dock spela roll eftersom du då även måste ta hänsyn till hur PHP vill ha det. Man behöver också tänka på, att varje kommando avslutas med ett semikolon. Det är något som är speciellt för. Det här gör att man kan skriva flera kommandon på samma rad, om man vill eller behöver det. KOMMANDO något_som_ska_göras; Det kan också vara bra att veta, att om man har börjat skiva in ett kommando, kan man avbryta genom att skriva \c. 1.2 Licens Detta verk är licensierat under Creative Commons Erkännande-Dela Lika 2.5 Sverige licens. För att se en kopia av denna licens, besök http://creativecommons.org/licenses/by-sa/2.5/se/ eller skicka ett brev till Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. 2 Installera Jag har den här gången kört på serverversionen av Ubuntu 9.04 Jaunty Jackalope. Under installationen av Ubuntu får man välja vilka typer av serverprogram man vill installera. Jag valde då att kör en s k LAMP-server, Linux Apache PHP. Det enda jag behövde göra under själva installationen, 2

var att ange ett lösenord för root-konto. Efter installationen var allt uppe med en gång. Om du kör skrivbordsversionen av Ubuntu eller någon annan Linuxdistribution, borde du hitta i paketförrådet för din distribution. 2.1 Starta och stanna Som sagt så körde igång direkt för mig, men det kan vara bra att veta hur man startar och stannar server. Kör du Ubuntu startar du så här. sudo /etc/init.d/mysql start För att stanna skriver man så här. sudo /etc/init.d/mysql stop 2.2 Logga in På nätet har jag sett lite olika sätt att logga in. Men det här sättet är det som har funkat för mig. Ordet användare byter man ut med den som man vill logga in som. mysql -u användare -p Enter Password: I början är det kanske så att man mest loggar in som administratör. Man använder då kontot root. Har man angett ett lösenord under installationen, så krävs det att man talar om att man vill ange ett lösenord. Det gör man med växlen p. mysql -u root -p Det du möts av när du loggar in, är mysql-prompten. mysql> Annars är det en god regel att man skapar en användare för varje databas. Vill man då mecka med just den databasen, loggar man in som den användaren. Man kan då inte se eller göra något åt andra databaser och inte heller administrera servern. När man är klar med meckandet, loggar man ut genom att skriva quite, exit eller på Linux genom att trycka Ctrl+d. 3 Databaser Grunden i är databasen 1 och det finns ett antal kommandon för att hantera och skapa sådana. 1 Ska man vara strikt, så är en databashanterare. Även en kartong med kort som innehåller information är en databashanterare. Databasen är den information man har samlat in och kan vara en enkelt tabell i ett exel- eller kalkylark eller kort med information. 3

3.1 Visa databaser För att se vilka databaser som finns, kör man följande kommando. show databases; Man får då upp en lista som ser ut något i den här stilen. +--------------------+ Database +--------------------+ information_schema mysql +--------------------+ 5 rows in set (0.02 sec) 3.2 Välja en databas Man måste välja en databas för att kunna jobba med den, om du inte loggat in som den användare som har rättigheter till den. use databas; 3.3 Skapa en databas För att skapa en egen ny databas har man följande kommando. CREATE DATABAS databas; Vill man vara säker på att man inte skapar en databas med ett namn som redan finns, då lägger man till IF NOT EXISTS. CREATE DATABAS IF NOT EXISTS databas; 3.4 Ta bort databas Vill man av någon anledning ta bort en databas man har skapat använder man följande kommando. DROP DATABASE databas; 4 Tabeller En databas byggs upp av en eller flera tabeller. Det är i tabellerna som informationen lagras. Rent strikt så är innehållet i tabellerna själva databasen, men man använder i det här sammanhanget ordet för att beskriva behållarenför tabellerna. 4

4.1 Visa tabeller När man har valt en databas, kan man se om det finns tabeller och i så fall vilka tabeller som finns i databasen. show tables; En lista över tabellerna i databasen mysql ser ut så här. +---------------------------+ Tables_in_mysql +---------------------------+ columns_priv db func help_category help_keyword help_relation help_topic host proc procs_priv tables_priv time_zone time_zone_leap_second time_zone_name time_zone_transition time_zone_transition_type user +---------------------------+ 17 rows in set (0.00 sec) Vill man visa tabeller från en viss databas, kan man också ange databasen. show tables from databas; Man kan också visa kolumner, status och index m m. show columns from tabell; show table status; show table status from databas; show index from tabell; När man har en tabell, kan man kontrollera strukturen på den för att se om man gjorde rätt när man skapade den. DESCRIBE tabell; 4.2 Skapa en tabell När man har skapat en databas, är det dags att skapa den eller de tabeller som ska ingå i den. Tabellen är en lista där varje rad är en post. Varje post har ett antal egenskaper, vilka delas in i fält eller kolumner (jag använder båda begreppen). Varje fält har ett fältnamn som är en rubrik för för just den kolumnen. 5

CREATE TABLE tabell ( fältnamn1 datatyp, fältnamn2 datatyp, fältnamn3 datatyp ); För att undvika att man försöker skapa en tabell med ett namn som redan finns, lägger man till IF NOT EXISTS. CREATE TABLE IF NOT EXISTS tabell ( fältnamn1 datatyp, fältnamn2 datatyp, fältnamn3 datatyp ); När man skapar tabeller gäller det att tänka över vilka kolumner man egentligen behöver. Kanske ska dessutom innehållet i vissa kolumner utgöra egna tabeller, för att man ska slippa ange samma värde flera gånger. Det finns sätt att sammanfoga flera enskilda tabeller, men det har jag ännu inte lärt mig, så det får du söka på nätet för att se hur det funkar. Datatyper och begränsningar Det svåra, tycker jag, är att ange vilken datatyp man ska använda. Man har nämligen många att välja på och det känns inte helt klart hur de används, eftersom de kan gripa in i varandra eller bara kan hålla en större eller mindre mängd data. En del hanterar text, andra siffor och åter andra binära data. Titta bland resuserserna sist i den här texten, så hittar du en länk till en plats där de finns beskrivna. Tabell 1: textdata Datatyp Typ Storlek Antal CHAR(storlek) Text fast 255 tecken VARCHAR(storlek) Text variabel 255 tecken TINYTEXT Text max 255 tecken TEXT Text max 65.535 tecken BLOB Binär max 65.535 byte data MEDIUMTEXT Text max 16.777.215 tecken MEDIUMBLOB Binär max 16.777.215 byte data LONGTEXT Text max 4.294.967.295 tecken LONGBLOB Binär max 4.294.967.295 byte data Det finns, vad jag förstår, tre typer av data: text (Se tabel 1), tal (siffror) (Se tabel 2) och datum/tid (Se tabel 3). De har sedan ett antal undertyper. För text och tal verkar skillnaden bestå i hur långa texter och hur stora tal man kan lägga in. Här finns också en skillnad mellan ren text och binär data. När det gäller tal så är standard att värdet kan sträcka sig från ett negativt värde till ett positivt, t ex -128 och 127. Men det går att ange attributet UNSIGNED om man vill att fältet bara ska innehålla positiva värden. 6

CREATE TABLE tabell ( fält1 TINYINT UNSIGNED, fält2 INT, fält3 CHAR(50) ); Tabell 2: taldata Datatyp Omfång TINYINT(maxstorlek) -128 till 127; 0 till 255 UNSIGNED SMALLINT(maxstorlek) -32768 till 32767; 0 till 65535 UN- SIGNED MEDIUMINT(maxstorlek) -8388608 till 8388607; 0 till 16777215 UNSIGNED INT(maxstorlek) -2147483648 till 2147483647; 0 till 4294967295 UNSIGNED BIGINI(maxstorlek) -9223372036854775808 till 9223372036854775807; 0 to 18446744073709551615 UNSIGNED FLOAT(maxstolek,decimaler) Litet tal med decimaler DOUBLE(maxstorlek,decimaler) Stort tal med decimaler När det gäller datum/tid så verkar det vara en skillnad i vad man ska ange, datum, tid eller både ock. Men man kan också ange att det ska läggas in en tidsstämpel. Tabell 3: datum och tid Datatyp Anger Format DATE() Datum YYYY-MM-DD DATETIME() Datum & tid YYYY-MM-DD HH:MM:SS TIMESTAMP() Tidsstämpel TIME() Tid HH:MM:SS YEAR() År YYYY Motorer Här uppstår nu ett problem. Visa datatyper tillåter väldigt stora värden. Det finns något som kallas motorer och har stöd för flera stycken. Standard är MyISAM och den klarar inte av de stora värdena. Vill man använda t ex BLOB och TEXT eller större måste man välja en annan, om jag har förstått det hela rätt. Man skulle då kunna tänka sig att istället använda motorn InnoDB. Det skulle se ut så här när man skapar en tabell. Motorn läggs till precis innan det avslutande semikolonet. CREATE TABLE tabell ( fält1 INT, fält2 MEDIUMTEXT ) ENGINE=InnoDB; 7

Om man inte anger någon motor, är det MyISAM som kommer att användas. Attribut Det finns också några speciella egenskaper som ett fält och dess värden kan ha. (Se tabel 4) Egenskap NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT Tabell 4: Speciella egenskaper Förklaring Fältet får inte vara tomt, utan måste innehålla ett värd av något slag. Varje värde i fältet måste vara unikt. Ett unikt id för just det fälter. Man måste här även ange NOT NULL. ID för en PRIMARY KEY i en annan tabell Begränsar värdet för fältet Anger ett standardvärde för kolumnen CREATE TABLE IF NOT EXISTS tabell ( fältnamn1 datatyp NOT NULL PRIMARY KEY, fältnamn2 datatyp UNIQUE, fältnamn3 datatyp ); 4.3 Importera en fil För att få in ett innehåll i tabellen kan man göra som beskrivs i avsnitt 4.5. Men har man en textfil med data, kan man importera den direkt i tabellen. Man ska då tänka efter vilka fält man ska använda, alltså vilken struktur tabellen ska ha. Filen skapar man genom att skriva in de poster man har och skiljer de olika fälten åt genom tabbar. post1 fält1 fält2 fält3 post2 fält1 fält2 fält3 post3 fält1 fält2 fält3 När det är klart, går man in i och laddar filen in i tabellen. LOAD DATA LOCAL INFILE "/sök/väg/infil.txt" INTO TABLE tabell; 4.4 Ändra i en tabell Även om man bör tänka efter innan man skapar en databas och dess tabeller, så kan man komma i ett läge där man ändå behöver göra en ändring i strukturen. Lägg till kolumn Missade man en kolumn, kan man lägga till den. ALTER TABLE tabell ADD fältnamn datatyp; 8

Man kan vara mer precis och ange att en kolumn ska hamna efter en annan existerande kolumn. ALTER TABLE tabell ADD COLUMN fältnamn datatyp AFTER fältnamn; Ta bort kolumn Det går även att ta bort en kolumn. Tänk på att innehållet i kolumnen försvinner om du tar bort den. ALTER TABLE tabell DROP COLUMNE fältnamn; Ändra datatyp Angav man fel datatyp, går det att ändra på. ALTER TABLE tabell ALTER COLUMN fältnamn ny_datatyp; Ta bort tabell Behöver man inte en tabell, tar man bort den. DROP TABLE tabell; 4.5 Infoga, uppdatera och ta bort data Infoga värden För att infoga nya uppgifter i en tabell efter det att man har skapat den, skriver man så här. INSERT INTO tabell VALUES (värde1, värde2, värde3,...) Är det bara i vissa kolumner man vill infoga något, gör man istället så här. INSERT INTO tabell (fältnamn1, fältnamn2, fältnamn3,...) VALUES (värde1, värde2, värde3,...) Ändra värden För att ändra ett värde i en tabell, skriver man så här. UPDATE tabell SET fältnamn1=värde, fältnamn2=värde,... WHERE fältnamn1=gammalt_värde, fältnamn2=nytt_värde; Tänk på att värden som inte är siffror ska ha enkla citattecken runt sig! Ta bort hela poster Det går också att ta bort poster/rader. Alla värden för posten tas då bort. DELETE FROM tabell WHERE fältnamn=värde; 9

Rensa helt i en tabell Det går även att ta bort allt från en tabell, att rensa den helt från data. DELETE FROM tabell; eller DELETE * FROM tabell; 5 Sökningar En databas blir intressant när man kan söka i den. Här beskriver jag olika sätt att göra det på. Det mest grova sättet att söka på, är att visa precis allt som finns i tabellen. SELECT * FROM tabell; Har man en stor tabell blir väl resultatet ganska ointressant. Man vill nog ha mer precisa sökningar och då behöver man förfina sin sökning. 5.1 Förfina sökningen Visa bestämda fält Men oftast vill man nog ha värdena bara för en eller flera fält. SELECT fältnamn1,fältnamn2 FROM tabell; Har man en tabell där det kan dyka upp dubbletter, blir man av med dem så här. SELECT DISTINCT * FROM tabell; Visa bestämda poster Man kan också bara vilja se vissa poster i tabellen. Här är det viktigt att komma ihåg, att om en sökterm är en textsträng, då måste den omges av enkla citat tecken (tumtecken). SELECT fältnamn1,fältnamn2 FROM tabell WHERE fältnamn1= text ; Om däremot söktermen är en siffra behövs inte det. SELECT fältnamn1,fältnamn2 FROM tabell WHERE fältnamn1=siffra; 10

Komplexa sökningar Söka efter flera värden SELECT fältnamn FROM tabell WHERE fältnamn IN (värde1,värde2,...); Vill man att sökningen ska matcha två söktermer, vilka dessutom finns i olika kolumner, skriver man så här. SELECT * FROM tabell WHERE fältnamn1= a AND fältnamn2=1; Gör man det ännu mer komplicerat, kan man i den ena kolumnen ange två söktermer. SELECT * FROM tabell WHERE fältnamn1= a AND (fältnamn2=1 OR fältnamn2=2); Söka värden i ett intervall SELECT fältnamn FROM tabell WHERE fältnamn BETWEEN värde1 AND värde2; 5.2 Begränsa och sortera Ibland vill man ha sorterade sökresultat. Sorteringen kan ske antingen stigande (ASC) eller sjunkande (DESC). SELECT fältnamn FROM tabell ORDER BY fältnamn ASC DESC; Begränsa antalet svar. SELECT fältnamn FROM tabell LIMIT antal; 5.3 Hitta mönster Sök efter mönster i en kolumn. SELECT fältnamn FROM tabell WHERE fältnamn LIKE mönster; Operatorer Operatorer är användbara när man ska söka efter mönster. Se tabell 5. För att kunna filtrera med mer än ett vilkor, kan man använda AND eller OR. Se tabell 6. Man kan också använda s k jokertecken, t ex % och. Se tabell 7. 5.4 Skapa en tabellvy Jag kan inte riktigt förklara vad en vy är, men det gör att man kan välja ut vissa saker i en tabell vilka man sedan kan titta på dem i en egen tabell. När du gör ändringar i den riktigatabellen, kommer dessa att även synas i vyn. CREATE VIEW vy_namn AS SELECT fältnamn FROM tabell WHERE vilkor; 11

Tabell 5: Operatorer Operator Beskrivning = Lika med <> Inte lika med > Större än > Mindre än >= Större eller lika med <= Mindre eller lika med BETWEEN Inom ett interval LIKE Söka efter ett mönster IN Om du vet det exakta värdet för en av kolumnerna Vilkor AND OR Tabell 6: Vilkor Beskrivning Om både första och andra värdet är sanna. Om antingen det ena eller andra värdet är sant. Det här skapar en ny tabell med namnet vy namn. Man kan se den om man tittar efter vilka tabeller som finns i databasen. Här är det som en helt vanlig sökning i en tabell, men man är begränsad till de kolumner man valt ska ingå i vyn. SELECT * FROM vy_namn; Vill man ta bort en vy, gör man så här. DROP VIEW vy_namn; För mer info se w3schools sidor om vyer i SQL. 6 Användare Man skapar en användare för att just den användaren ska ha hand om en specifik databas. Det här sker när man installerar vissa program, t ex bloggar och wiki, som använder sig av en databas för att lagra information. Dessa vill att man först skapar en användare med ett lösenord. Sedan används dessa till att sköta kontakten med databasen, t ex i ett PHP-skript. 6.1 Skapa och ta bort en användare Så när man har skapat en databas, skapar man ett användarkonto till den databasen. CREATE USER användare @ localhost IDENTIFIED BY lösen ; När man anger localhost menas det att användaren bara kan logga in från den aktuella datorn. Måste personen logga in från en annan dator, kan man ange 12

Tabell 7: Jokertecken Jokertecken Beskrivning % Ersätter noll eller fler tecken Ersätter exakt ett tecken namnet eller adressen på den datorn istället. Ska personen kunna nå databasen från vilken dator som helst, skriver man in ett jokertecken: %. lösen är det lösenord som ska gälla för personen. Det anges alltså i klartext när man skapar användaren. Det går också att skapa en användare för en viss databas och ge alla rättigheter på en gång. GRANT ALL PRIVILEGES ON databasen.* TO användare @ localhost IDENTIFIED BY lösen WITH GRANT OPTION; För att ta bort en användare skriver man så här. DROP USER användare @ localhost ; 6.2 Ge användaren privilegier Man behöver därefter ge användaren möjlighet att utföra vissa saker i databasen. Det finns ganska många privilegier. Det mest generösa är att man ger fullständiga rättigheter till en databas. GRANT ALL PRIVILEGES ON databas.* TO användare @ localhost ; För att kunna manipulera data, kan man ge användaren rättigheter till enbart följande kommandont: select, insert, update och delete. GRANT select,insert,update,delete ON databas.* TO användare @ localhost ; FLUSH PRIVILEGES; För att kunna skapa databaser och tabeller, samt kunna ändra strukturen på tabeller, kan man ge följande rättigheter: create, alter och drop. Om användaren behöver kunna skapa vyer, ger man också följande rättigheter: create view och show view. Vill man gå så långt att användaren själv ska kunna ge och ta privilegier till andra, ger man den här rättigheten: grant. När man nu har gett rättigheter, kan man se vilka som en viss användare har. SHOW GRANTS FOR användare @ localhost ; 6.3 Byta lösenord för root Vill man byta lösenordet för root, kan man göra det utan att vara inloggad i. Man använder kommandot mysqladmin. mysqladmin -u root aktuell_lösen ny-lösen 13

Är man däremot inloggad och vill ändra lösenordet, blir det lite mer komplicerat. USE mysql; UPDATE user SET Password=PASSWORD( ny_lösen ) WHERE user= root ; FLUSH PRIVILEGES; 7 Resurser Manualen 5.0 Datatyper W3Schools kurs i SQL dev.mysql.com/doc/refman/5.0/en/tutorial.html dev.mysql.com/doc/refman/5.0/en/data-types.html www.w3schools.com/sql 14