MySQL-forespørgsler er normalt skrevet én gang og derefter pakket ind i klassefunktioner for at minimere kodegentagelse. Denne artikel viser de 10 forespørgsler, der oftest bruges i MySQL.
En forespørgsel er i bund og grund en anmodning om, at oplysninger skal hentes fra en databasetabel eller en kombination af tabeller. Der er mange forespørgselssprog, der kan skrives til at udføre en række simple til komplekse forespørgsler. Forespørgsler vil filtrere visse kriterier baseret på de specifikke data, det anmodes om at finde. Det kan også automatisere datahåndteringsopgaver og deltage i beregninger. Denne guide diskuterer de 10 mest almindelige MySQL-forespørgsler.
Lad os bruge disse demodatabaser til at hjælpe os med at forstå, hvordan hver forespørgsel fungerer.
Medarbejder-ID | Navn | Titel |
---|---|---|
1002 | Webster W. | Executive |
1003 | Lizzy S. | Manager |
1004 | Oliver T. | Softwareingeniør |
Medarbejder-ID | Afdeling | Alder |
---|---|---|
1002 | HR | 36 |
1003 | Salg | 21 |
1004 | IT | 39 |
VÆLG alle
En simpel SELECT-forespørgsel bruges til at hente og sende alle data tilbage fra en database. Dens syntaks kan skrives som sådan;
Kode:
SELECT * FROM Employees;
Resultat:
1002 Webster W. Executive 1003 Lizzy S. Manager 1004 Oliver T. Software Engineer
For at vælge alle tilgængelige kolonner i tabellen skal du bruge "*" for at angive, at du skal have alle mulige oplysninger returneret. For det andet, angiv FROM nøgleordet for at modtage data fra databasetabellen. Husk endelig altid at afslutte dit udsagn med et semikolon ";" for at fuldføre anmodningen korrekt.
VÆLG kolonne
For at få data fra specifikke kolonne(r) og ikke alt, vil du blot angive feltnavnet i stedet for at bruge stjernen(*).
Kode:
SELECT Title FROM Employees;
Resultat:
Title Executive Manager Software Engineer
Når du vælger flere kolonner fra en database, skal de adskilles med et komma. Sådan;
SELECT Title, Name FROM Employees;
WHERE-klausul
Når du bruger WHERE-sætningen i en SELECT-forespørgsel, vil dataposter blive filtreret, og derefter udtrække de poster, der matcher betingelsen/betingelserne som resultat.
Kode:
SELECT * FROM Employees WHERE EmployeeID = 1004 ;
Resultater:
1004 Oliver T. Software Engineer
WHERE-sætningen kan have mere end én betingelse, der kan adskilles ved at bruge AND-nøgleordet.
OPRET tabel
Denne forespørgsel kan bruges til at generere en ny tabel med dit foretrukne valg af kolonner. Når du tilføjer kolonnenavne, skal du sørge for at angive deres datatype.
Kode:
CREATE TABLE EmployeeInfo ( EmployeeId INT, Department VARCHAR(25), Age NUMBER );
Forventede tabelresultater:
EmployeeID | Department | Department |
NULL | NULL | NULL |
Når du kører CREATE TABLE-kommandoen og udfylder den med kolonnetitler, opretter ovenstående forespørgsel en "EmployeeInfo"-tabel i databasen. I det væsentlige vil hver kolonne returnere NULL, fordi vi ikke har indsat nogen bestemt værdi. Det fører os til vores næste forespørgsel, INSERT INTO.
INSERT INTO Query
Dette er den mest almindelige forespørgsel til at indsætte værdier i en eller flere rækker af nye poster i en tabel. Vi er i stand til at udfylde EmployeeInfo-tabellen med nogle eksempeldata;
Kode:
INSERT INTO EmployeeInfo (EmployeeID,Department,Age) VALUES (1002, HR , 46), (1003, Finance , 28), (1004, IT , 39);
Tabelresultater:
Medarbejderoplysninger
EmployeeID | Department | Age |
1002 | HR | 46 |
1003 | Finance | 28 |
1004 | IT | 39 |
Når du skriver en INSERT INTO-forespørgsel, skal VALUES-kommandoen være en del af den komplette sætning.
OPDATERING Forespørgsel
Dette søgeord bruges til at ændre en eller flere eksisterende kolonner i en tabel. Brug af denne forespørgsel vil opdatere tabelposter med nye data baseret på en eller anden betingelse.
Medarbejderoplysninger
EmployeeID | Department | Age |
1002 | HR | 36 |
1003 | Sales | 21 |
1004 | IT | 39 |
Kode:
UPDATE EmployeeInfo SET Age = 22 WHERE EmployeeID = 1003;
Tabelresultater:
Medarbejderoplysninger
EmployeeID | Department | Age |
1002 | HR | 36 |
1003 | Sales | 22 |
1004 | IT | 39 |
Efter UPDATE-kommandoen skal du bruge nøgleordet SET til altid at angive, hvilke(n) kolonne(r) du vælger at ændre, og angiv derefter nøjagtigt HVOR du skal bruge de opdaterede data på.
SLET FRA forespørgsel
For at fjerne poster fra en tabel baseret på en eller flere betingelser skal du bruge DELETE FROM-sætningen. Når du bruger betingelser, begrænser det antallet af rækker, der påvirkes af forespørgslen.
Kode:
DELETE FROM Employees WHERE Name = ‘Lizzy’;
Tabelresultater:
Medarbejdere
EmployeeID | Name | Title |
1002 | Webster W. | Executive |
1004 | Oliver T. | Software Engineer |
Som tidligere omtalt i artiklen; Brug af WHERE-betingelsen bestemmer præcis, hvor du anmoder om, at data skal filtreres fra og udføres. Denne forespørgsel er at slette hver post fra tabellen over medarbejdere, der matcher navnet "Lizzy".
Ved brug af GROUP BY, HAVING-klausul
GROUP BY-sætningen bruges for det meste altid med aggregerede funktioner. Brug af dette søgeord vil gruppere resultatsættet i en eller flere kolonner.
Nøgleordet HAVING bruges til at filtrere det resultatsæt. Ideelt set skulle man tro, at en WHERE-klausul ville blive indført i stedet, men HAVING-klausulen introducerer en betingelse for aggregering.
Medarbejderoplysninger
EmployeeID | Department | Age |
1002 | HR | 36 |
1003 | Sales | 21 |
1004 | IT | 39 |
Kode:
SELECT COUNT(Age), EmployeeID FROM EmployeeInfo GROUP BY EmployeeID HAVING COUNT(Age) > 21;
Resultater:
COUNT(Age) EmployeeID 39 1004 36 1002
Aggregerede funktioner (SUM, AVG &COUNT)
Der er tre ekstremt almindelige aggregerede funktioner, der gør det muligt at fortolke data fra en tabel eller køre beregninger.
- ANTAL:returnerer antallet af rækker, der matcher en specificeret kolonne.
- AVG: returnerer den gennemsnitlige værdi af en kolonne
- SUM:returnerer summen af alle værdierne i en valgt kolonne.
Medarbejderinfo
Medarbejder-ID | Afdeling | Alder |
1002 | HR | 36 |
1003 | Salg | 21 |
1004 | IT | 39 |
Kode for COUNT:
SELECT COUNT(Department) FROM EmployeeInfo;
Resultater:
COUNT(Department): 3
Kode til AVG:
SELECT AVG(Age) FROM EmployeeInfo;
Resultater:
AVG(Age): 32
Kode til SUM
SELECT SUM(Age) FROM EmployeeInfo;
Resultater:
SUM(Age): 96
TIL MED
Joins bruges til at samle rækker fra mindst to tabeller, baseret på en relateret kolonne mellem tabellerne. De mest almindelige øvelsessammenføjninger er INNER, FULL og LEFT.
- INNER Join – kombinerer rækkerne fra forskellige tabeller, hvis join-betingelsen er sand.
- FULD Join – returnerer alle rækker, når der er et match i venstre eller højre tabelposter.
- LEFT Join – henter alle rækker fra den venstre tabel og de matchende poster fra den højre tabel.
Medarbejdere – Tabel #1 (venstre)
Medarbejder-ID | Navn | Titel |
1002 | Webster W. | Executive |
1003 | Lizzy S. | Manager |
1004 | Oliver T. | Softwareingeniør |
EmployeeInfo – Tabel #2 (højre)
Medarbejder-ID | Afdeling | Alder |
1002 | HR | 36 |
1003 | Salg | 21 |
1004 | IT | 39 |
INNER JOIN-kode:
SELECT Employees.Title, EmployeeInfo.Department FROM Employees INNER JOIN EmployeeInfo ON Employees.EmployeeID = Employees.EmployeeID;
Resultater:
Title Department Executive HR Manager Sales Software Engineer IT
FULD JOIN-kode:
SELECT * FROM Employees FULL JOIN EmployeeInfo ON Employees.EmployeeID = Employees.EmployeeID;
Resultater:
Griber alle rækker og kolonner fra begge tabeller, inklusive dubletter, og kombinerer dem til en hel tabel.
VENSTRE JOIN-kode:
SELECT Employees.Name, EmployeeInfo.Age FROM Employees LEFT JOIN EmployeeInfo ON Employees.EmployeeID = Employees.EmployeeID;
Resultater:
Name Age Webster W. 36 Lizzy S. 21 Oliver T. 39
"EmployeeID"-kolonnen i "Employee"-tabellen henviser til "EmployeeID" i "EmployeeInfo"-tabellen, hvilket i det væsentlige angiver, at EmployeeID-kolonnen er forholdet mellem begge tabeller. Joins kan blive vanskelige, men samtidig ekstremt nyttige, når du sorterer gennem en større database.
Brugeren og databasen er i stand til at udveksle information med succes ved i det væsentlige at tale det samme sprog. Forespørgslerne nævnt ovenfor er de mest almindeligt anvendte af både begyndere og eksperter. At skrive MySQL-forespørgsler betragtes som den hyppigste funktion inden for databasestyringsdomænet.
Denne artikel blev gennemgået og opdateret i april 2022 af Kelsey Perkins.