Många program behöver spara eller lagra data för senare användning och läsa data som är inspelad. Även om det finns många sätt att göra detta är det vanligaste tillvägagångssättet att använda ett Relational DataBase Management System (RDBMS). MySQL är ett branschstandard RDBMS med öppen källkod som har antagits i stor utsträckning av programvaruutvecklingsprojekt. Den här guiden ger en översikt över MySQL och förklarar de viktigaste RDBMS-koncepten.
Vad är en relationsdatabas (RDBMS)?
En databas är ett program för att lagra och hämta data. Även om mekanismerna skiljer sig åt, tillhandahåller de flesta databaser ett API som tillåter användare att lägga till, ta bort, komma åt, söka och hantera sina data. Som ett alternativ till att använda en databas kan data lagras i textfiler eller hashtabeller. Denna teknik är dock inte lika snabb eller bekväm som att använda en databas och används sällan i moderna system.
Tidiga databasapplikationer utvecklades till den moderna relationsdatabasen , vilket tillåter användare att lagra enorma mängder data. En RDBMS tvingar inte längre användare att lagra data i en stor tabell. Det ger mer strukturerade sätt att partitionera data och är designat för effektivare åtkomst. RDBMS-applikationer är optimerade för snabb läsning och skrivning och massöverföring av information.
Databasdesigners konceptualiserar och organiserar data i termer av tabeller , kolumner och rader . En rad kallas också för en post , eller tuppel. Samtida relationsdatabaser strukturerar data med hjälp av följande begrepp:
- Varje databas innehåller en eller flera tabeller.
- När användaren skapar en tabell anger de samtidigt kolumnerna i tabellen.
- Varje kolumn representerar ett specifikt attribut, eller fält, i posten. En kolumn är utformad för att innehålla data av en viss datatyp, till exempel
VARCHAR
, som står för en sträng med variabel längd. - En tabell innehåller ett kluster av rader.
- Varje rad i en tabell representerar en unik databaspost. Varje kolumn i raden innehåller ett individuellt fält i den posten.
- En databastabell är som en två-till-två-matris. Varje ruta inuti matrisen innehåller en bit data.
En RDBMS anses vara relationell eftersom den tillåter användare att definiera relationer inom och mellan de olika tabellerna med hjälp av nycklar och index. En relationsdatabas tillåter en användare att tillhandahålla eller generera en primärnyckel för varje rad. SQL kan garantera att denna nyckel är unik i tabellen. Fälten i dessa tabeller kan vara relaterade till varandra baserat på deras primära och främmande nycklar. Dessa relationer hjälper till att strukturera och organisera databasen och begränsa mängden dataduplicering.
En RDBMS-applikation tillhandahåller alltid de funktioner som anges nedan. Enskilda applikationer kan erbjuda fler alternativ.
- Det gör det möjligt att skapa, definiera, ändra och ta bort databastabeller, kolumner, rader, primärnycklar och index.
- Den accepterar SQL-frågor och lagrar eller hämtar relevant data och kombinerar information från olika databastabeller efter behov.
- Det garanterar integriteten för data och referenser mellan tabellerna. Till exempel pekar en främmande nyckel alltid på en giltig rad i en annan tabell.
- Den uppdaterar automatiskt index, tidsstämplar och andra internt genererade attribut efter behov.
Relationsdatabaser använder Structured Query Language (SQL) för att fråga och uppdatera databasen. Till exempel använder en RDBMS-klient SQL-koden INSERT
kommando för att lägga till en ny rad i en av databastabellerna. När en användare lägger till en ny rad anger de samtidigt ett värde för varje kolumn. Ytterligare SQL-kommandon används för att ändra och ta bort rader, hantera databasobjekt och hämta en lista över poster som uppfyller specifika kriterier.
Tänk till exempel en databas för en skola. Den här databasen har flera tabeller för lärare, studenter, kurser, klassrum och så vidare. Definitionen av Studenter
Tabellen kan innehålla kolumner för elevens för- och efternamn, ID, betyg, familj med mera. Varje rad i den här tabellen symboliserar en enskild elev och tjänar till att representera och samla in all relevant information om den eleven. Om elevens namn är "John", first_name
kolumnen i den här raden innehåller John
. Student-ID:t kan fungera som index och primärnyckel och kan användas för att korsrefera studenten i andra tabeller.
Till exempel en förenklad Studenter
Tabell kan definieras med hjälp av strukturen som visas nedan. Den översta raden representerar namnen på kolumnerna i tabellen. Tabellen nedan har för närvarande två rader med data, en för varje elev.
förnamn | efternamn | betyg | familje-id | student-id |
---|---|---|---|---|
John | Doe | 4 | 1116 | 5005 |
Jane | Student | 5 | 1224 | 5350 |
Vad är några vanliga RDBMS-termer?
Följande termer används ofta i relation till databaser:
- Kolumn: En uppsättning värden av samma datatyp som representerar ett attribut i en tabell. Kolumner definieras när en tabell skapas.
- Sammansatt nyckel: En nyckel som består av flera kolumner. En sammansatt nyckel används när en enskild kolumn inte kan identifiera en rad på ett tillförlitligt sätt.
- Databas: En organiserad grupp av data som lagras elektroniskt. En databas är vanligtvis organiserad i mindre kluster av information.
- Utländsk nyckel: Ett index som används för att korslänka en tabellpost till en rad i en annan tabell.
- Index: En metod för att snabbare komma åt databasposter. Ett index kan skapas med valfri kombination av attribut, men implementeringen är applikationsspecifik. Ett databasindex liknar ett index i en bok.
- Primär nyckel: En kolumn som fungerar som ett index för att unikt identifiera en rad i en tabell. En primärnyckel kan antingen genereras automatiskt eller definieras i tabelldefinitionen. En primärnyckel kan användas för att hitta en specifik rad i en tabell.
- Referensintegritet: En intern databasegenskap för att säkerställa att en främmande nyckel alltid refererar till en giltig rad i en annan tabell.
- Relational DataBase Management System (RDBMS): En typ av databassystem baserat på relationer mellan tabeller och poster.
- Rad: En strukturerad post i en tabell som består av en uppsättning relaterade data. Varje rad i en tabell har samma struktur, vilket motsvarar kolumnspecifikationerna i tabelldefinitionen. En rad kallas också för en post eller en tuppel.
- Structured Query Language (SQL): Ett förenklat domänspecifikt programmeringsspråk som används för att hantera data i ett RDBMS.
- Tabell: En samling databasposter, bestående av en serie rader och kolumner. En tabell kan ses som en tvådimensionell matris av information.
SQL vs. MySQL
Termerna SQL och MySQL är ofta blandade eller används omväxlande, men de är inte samma. SQL är standardprogrammeringsspråket för sökning av RDBMS-applikationer. Den används för att skriva databasfrågor och kan användas med alla databassystem som stöder det. MySQL är en specifik instans av ett RDBMS som använder SQL. Databasanvändare skickar SQL-kommandon till en RDBMS som MySQL för att läsa och skriva data och för att administrera databasen. Det finns ingen applikation som heter SQL, så det är inte meningsfullt att göra en "SQL vs MySQL"-jämförelse. Men termen SQL-databas används ofta informellt som en förkortning för vilken relationsdatabas som helst.
SQL-språket
SQL-språket anges som en serie satser. Det anses inte vara ett allmänt imperativt programmeringsspråk som Python, eftersom det saknar ett komplett utbud av datastrukturer och kontrollsatser. Det är istället ett domänspecifikt språk avsett för ett enda syfte. SQL är designad för att fråga, definiera och manipulera data. Den är också utformad för att ge dataåtkomstkontroll. En fördel med SQL är att den kan komma åt flera poster med bara ett kommando. Den anger inte hur databasen ska komma åt en post.
SQL-språket består av angivna nyckelord, uttryck, frågor, satser, operatorer och valfria satser. Objektidentifierare används för att referera till databasenheter, inklusive tabeller och kolumner. SQL stöder ett stort antal fördefinierade datatyper, såsom CHAR
, för tecknet och INTEGER
. Några av de viktigaste SQL-operatorerna inkluderar =
, <> ,
> ,
<
, IN
, GILLA
, TRUE
, FALSKT
och NOT
. Nya versioner av SQL stöder nu ett enkelt CASE
påstående. MySQL-dokumentationen innehåller mer information om SQL-språkstrukturen, datatyper och uttalanden.
Några av de mest använda SQL-satserna och satserna inkluderar följande:
- ÄNDRA: Ändrar strukturen för ett databasobjekt.
- SKAPA: Skapar ett databasobjekt, till exempel en tabell eller databas.
- RADERA: Tar bort en eller flera befintliga rader från databasen.
- SLÄPP: Tar permanent bort ett objekt från databasen.
- FRÅN: Indikerar vilken tabell som ska användas för frågan.
- GANTA: Tillåter en databasanvändare att utföra en viss åtgärd.
- GRUPPER EFTER: En sats för att organisera utdata från en
SELECT
uttalande. - INFOGA: Lägger till rader i databasen.
- GÅ MED: En klausul som anger hur man kombinerar och sätter ihop data från flera tabeller.
- SAMMANFATTNING: Kombinerar data från flera tabeller.
- BESTÄLL EFTER: En klausul för att sortera utdata från en fråga.
- VÄLJ: Hämtar data från en eller flera tabeller. Detta kommando ändrar inte databasen eller ändrar några data.
- UPPDATERING: Ändrar en eller flera befintliga rader.
- VAR: En klausul för att identifiera raderna en fråga ska fungera på. Den används vanligtvis med en jämförelseoperator.
Jokertecknet *
operatorn används ofta i kombination med SELECT
kommando. Detta kommando instruerar SQL att visa alla kolumner i utdata.
Nedan finns ett par exempel på SQL-frågor. Följande SQL-kommando visar name
för varje klass i Klassen
databas för varje rad där värdet för ämnet
kolumnen är matte
.
SELECT name
FROM Class
WHERE subject='math';
Nästa SQL-sats skapar Class
tabell. CREATE
uttalande definierar varje kolumn i tabellen, tillsammans med dess datatyp, i sekventiell ordning. VARCHAR
datatyp används för att hålla en sträng med variabel längd. SMALLINT
datatypen används för små heltalsvärden från teckenintervallet -32768
till 32767
.
CREATE TABLE Class (
classID smallint,
name varchar(255),
subject varchar(255),
level smallint
);
Vad är MySQL-databasen?
MySQL är ett RDBMS som implementerar SQL. Den designades ursprungligen för användning med små till medelstora databaser, men den kan nu hantera även mycket stora mängder lagrad data. MySQL är skrivet i C/C++ och är för det mesta kompatibel med SQL-standarden. Men det lägger till många tillägg och betonar hastighet och tillförlitlighet framför perfekt efterlevnad. En mer detaljerad diskussion om MySQL och SQL-kompatibilitet finns i MySQL-dokumentationen om efterlevnadsstandarder.
Grundversionen av MySQL distribueras av Oracle Corporation och är tillgänglig gratis under en öppen källkodslicens. Den nuvarande versionen av MySQL är 8.0. MySQL kan användas på vilken Linux-distribution som helst och på de flesta andra plattformar. Det är en viktig komponent i LAMP-stacken med öppen källkod , tillsammans med Linux, Apache och programmeringsspråket PHP. LAMP-stacken är hörnstenen i utvecklingen av webbapplikationer med öppen källkod på Linux. MySQL kan användas som en del av ett klient/serversystem eller som en del av ett inbäddat system.
Som alla RDBMS-applikationer är MySQL en relationsdatabas. Administratörer och användare definierar relationer inom och mellan tabellerna i databasen. Olika kolumner kan markeras som antingen obligatoriska eller valfria och kan fungera som en primärnyckel eller som en pekare till en annan tabell. MySQL är stabil, pålitlig och enkel att använda. Här är några specifika fördelar med MySQL:
- MySQL är en mogen, populär och väletablerad produkt. Den har mer gemenskapsstöd än andra databaser med öppen källkod och bättre referensmaterial och dokumentation.
- MySQL kan konfigureras för att vara ACID-kompatibel när den används med InnoDB-lagringssystemet. Akronymen ACID står för Atomicity, Consistency, Isolation och Durability. Det betyder att den kan garantera datagiltighet trots eventuella fel, misslyckanden eller avbrott.
- Den är känd för sin höga prestanda, på grund av funktioner som optimerade klassbibliotek, komprimering, minnesallokering och hashtabeller. Den stöder flertrådade kärntrådar för effektivare drift på system med flera processorer.
- Den stöder mycket stora databaser, som lagrar upp till hundratals miljoner poster och upp till 64 index per tabell.
- MySQL tillhandahåller förbättrade säkerhetsmekanismer, inklusive kryptering av alla lösenord.
- Det möjliggör datareplikering och redundans för ökad tillförlitlighet.
- MySQL ger stöd för alias i tabeller och kolumner, och fullt stöd för många olika teckenuppsättningar.
- MySQL fungerar bra med PHP, som används flitigt inom webbutveckling.
- Den fungerar med många olika kompilatorer och på många olika plattformar och är designad för att vara portabel mellan system. Klientprogram kan skrivas på många språk. MySQL tillhandahåller API:er för C/C++, PHP, Java, Python, Ruby och Perl.
- MySQL är tillgängligt som ett bibliotek som kan bäddas in i fristående applikationer.
- MySQL är förpackat med flera bekväma klientverktyg, inklusive
mysqldump
ochmysqladmin
. Användare kan verifiera, optimera och reparera tabeller medmysqlcheck
program. - MySQL-licensen för öppen källkod tillåter utvecklare att anpassa MySQL och modifiera källkoden för att uppfylla deras krav.
MySQL är också tillgängligt i en mer fullfjädrad Enterprise Edition, med full kundsupport. För information om hur du installerar MySQL på Ubuntu eller andra Linux-plattformar, se Linode-guiden om att installera och konfigurera MySQL på Ubuntu 20.04.
SQL vs. NoSQL
NoSQL-system är ett alternativ till traditionella SQL-baserade RDBMS-applikationer. Som namnet antyder använder de en icke-relationell modell för att hantera data. De är vanligtvis mindre strukturerade och mer flexibla än en RDBMS. NoSQL-system är inte standardiserade och kan ha en mängd olika format. De är dock vanligtvis nyckel-värde-, graf- eller dokumentbaserade, inte tabellbaserade. Vissa NoSQL-applikationer kan använda strukturerade domänspecifika språk eller till och med acceptera SQL-frågor parallellt. Några exempel på NoSQL-applikationer inkluderar Redis och MongoDB. För mer information om NoSQL-system, se Linode-guiden för en jämförelse mellan SQL- och NoSQL-databaser.
Vad är MySQL-klienten och -servern?
MySQL-klienten och MySQL-servern är två olika komponenter som fungerar tillsammans i en nätverksarkitektur. Det finns vanligtvis en central server och en eller flera klienter. MySQL-databasserverapplikationen är installerad på en värd, ofta som en del av LAMP-stacken. Denna server lagrar databaskonfigurationen och data, och svarar på frågor från klienter. Den upprätthåller också säkerhet och eventuella åtkomstkontrollsystem och replikerar och arkiverar data efter behov. Samma server kan vara värd för flera databaser för olika klienter.
MySQL-klienten gör det möjligt för användare att ansluta till en MySQL-server, antingen på samma system eller på en annan värd. Klienten skickar SQL-frågor till servern att läsa från eller skriva till en databas. MySQL-klienten administrerar, underhåller och säkrar även klienten. En fristående klient rekommenderas för användare som bara vill ansluta till en fjärrdatabas för att köra frågor. Administratörer som vill ha en databas på servern måste installera hela MySQL-serverpaketet. Serverinstallationen inkluderar en klient för att skapa och administrera databasen.
Det vanliga kommandoradsklientverktyget för MySQL heter mysql
. Den kan installeras utan serverkomponenten med kommandot yum install mysql
eller apt-get install mysql-client
. För att komma åt MySQL-klienten, använd kommandot mysql
. Användarnamnet, lösenordet och serverns IP-adress kan anges med ytterligare parametrar.
När användaren lyckats logga in visar klienten MySQL-prompten mysql>
. Användaren kan sedan köra SQL-kommandon. För mer information om att installera och använda MySQL, se Linode-guiden om hur du ansluter till en MySQL- eller MariaDB-databas.
Vad används MySQL till?
MySQL är ett mångsidigt RDBMS för användning med en datamängd av valfri storlek. Det kan övervägas när som helst ett program måste lagra och hämta data. MySQL utvecklades ursprungligen för små till medelstora enserverkonfigurationer. Men med de senaste förbättringarna av prestanda och skalbarhet kan den användas praktiskt taget var som helst i en applikation av vilken storlek som helst. Även stora företag inklusive Uber, Airbnb och Shopify använder MySQL.
Användare måste installera MySQL för att konfigurera WordPress. WordPress använder MySQL för att lagra alla sina data och konfigurationsfiler, och interagerar dynamiskt med MySQL för att visa och skapa webbsidor. Användare behöver inte nödvändigtvis förstå SQL för att använda WordPress. Det kan dock vara praktiskt när du utför avancerade anpassningar. På Linux installeras WordPress ofta som ett paket tillsammans med MySQL och resten av LAMP-stacken. För mer information om hur du konfigurerar MySQL och WordPress, se Linode-guiden om att installera WordPress på Ubuntu 20.04.
Andra vanliga applikationer för MySQL inkluderar datalager, transaktionsbearbetning, bokningssystem, e-handel och webbdatabaser. Till exempel kan en MySQL-databas underhålla produktlistan och inventariet för en onlinebutik.
Slutsats
Den här guiden svarar på den vanliga frågan "Vad är en MySQL-databas?" MySQL är en relationsdatabas som organiserar data baserat på relationerna mellan tabeller och fält. Det är en typ av RDBMS (Relational DataBase Management System), som lagrar poster som rader i tabeller. Varje rad består av ett antal kolumner som representerar datapostens olika attribut. Det databasspecifika SQL-programmeringsspråket används för att lagra och hämta data från MySQL. SQL använder en serie diskreta satser och är avsedd att fungera med RDBMS-system.
MySQL är känt för sin förmåga att lagra stora tabeller och stora mängder data, samt för sin hastighet och tillförlitlighet. Den tillhandahåller API:er för många vanliga programmeringsspråk och är förpackad med flera användbara verktyg. MySQL-servern lagrar data och svar på förfrågningar från MySQL-klienter. Klienten är alltid paketerad med servern, men den kan användas som en fristående applikation för att kommunicera med fjärrdatabaser. MySQL används i många välkända företag och är avgörande för dem som vill använda WordPress. Det används dock även i webbdatabaser och datalager. För mer information om MySQL, se MySQL-dokumentationen.
Mer information
Du kanske vill konsultera följande resurser för ytterligare information om detta ämne. Även om dessa tillhandahålls i hopp om att de kommer att vara användbara, vänligen observera att vi inte kan garantera noggrannheten eller aktualiteten hos externt värdmaterial.
- Officiell MySQL-dokumentation