sql >> Database >  >> RDS >> Mysql

MySQL-query's

Tot nu toe hebben we een database gemaakt, twee tabellen toegevoegd en gegevens in beide tabellen ingevoegd. Nu gaan we kijken hoe we die gegevens kunnen ophalen. Maar niet alleen ophalen de gegevens, maar om op te vragen de database ervoor.

SQL staat voor Structured Query Language . Het is de Query bit dat SQL zo krachtig maakt. SQL is een taal waarmee u query's kunt uitvoeren tegen uw database. Hiermee kunt u query's de database voor de gegevens die u wilt.

De SQL SELECT Verklaring

Als het gaat om het opvragen van uw MySQL-database, is de SQL SELECT verklaring maakt het allemaal mogelijk. Dit is waarschijnlijk uw meest gebruikte SQL-instructie wanneer u met MySQL werkt. De SELECT statement stelt u in staat om aan MySQL precies te beschrijven welke gegevens u wilt ophalen.

Overweeg de volgende SQL-instructie:

SELECT * FROM Fruit;

Dit is het resultaat:

Dit is de SELECT verklaring op zijn eenvoudigst. De bovenstaande SQL-instructie haalt alle records op uit de Fruit tafel.

Het sterretje (* ) vertelt MySQL om alle kolommen te retourneren. Dit bespaart ons tijd en moeite. Zonder dit zouden we de namen moeten schrijven van alle kolommen die we willen hebben geretourneerd.

Dat gezegd hebbende, kun je MySQL ook vertellen om alleen die kolommen te retourneren die je wilt retourneren. Dit doet u door alleen die kolommen een naam te geven die u wilt retourneren. Zoals dit:

SELECT FruitId, FruitName 
FROM Fruit;

Dit is het resultaat:

De bovenstaande SQL-instructie selecteert de FruitId en FruitName kolommen uit de Fruit tafel.

Dit kan de rommel verminderen, zodat u alleen die kolommen ziet waarin u geïnteresseerd bent. Het kan ook de prestaties verbeteren, omdat MySQL (en elke toepassing die u gebruikt) geen waardevolle bronnen hoeft te gebruiken om onnodige gegevens te retourneren.

Nogmaals, deze zoekopdracht haalt alles op records uit de tabel — MySQL retourneert alle records, tenzij anders aangegeven.

De WHERE Clausule

U kunt de WHERE . toevoegen clausule om het resultaat te beperken tot alleen die records waarin u geïnteresseerd bent. Als volgt:

SELECT * FROM Fruit
WHERE UnitId = 1;

Resultaat:

De bovenstaande query retourneert alle records van de Fruit tabel waarin de UnitId kolom heeft een waarde van 1 .

Subquery's — Geneste SELECT Verklaringen

Wat als we de UnitId . niet wisten ? Wat als we alleen wisten te zoeken naar die records met een eenheidsnaam van Piece ?

Eenvoudig! We zouden het bovenstaande voorbeeld kunnen herschrijven om een ​​geneste SELECT . te gebruiken statement (ook wel bekend als een subquery ) die een andere tabel doorzoekt (de Units tafel). Als u dit doet, kunnen we de werkelijke eenheid naam gebruiken (in plaats van zijn ID) omdat de tweede tabel dit bevat in de UnitName veld:

SELECT * FROM Fruit
WHERE UnitId = 
	(SELECT UnitId 
    FROM Units 
    WHERE UnitName = 'Piece');

Resultaat:

Hier gebruiken we een geneste SELECT statement (d.w.z. een SELECT statement binnen een SELECT statement) om de Eenheden . op te vragen tabel voor de UnitId van het record dat Piece . bevat als zijn UnitName waarde. We kunnen dit doen omdat Fruit.UnitId kolom is een externe sleutel voor de Units.UnitId kolom.

Hier zijn meer voorbeelden van subquery's als je geïnteresseerd bent.

Een SQL JOIN gebruiken

Als we nog een stap verder gaan, kunnen we onze geneste SELECT . herschrijven statement in een INNER JOIN .

In SQL, een JOIN stelt u in staat om meerdere tabellen te doorzoeken die gegevens delen. In ons geval delen beide tabellen de UnitId dus je zou kunnen zeggen dat ze "verbonden" zijn door dit veld.

Er zijn verschillende soorten joins in SQL, maar we zijn vooral geïnteresseerd in de INNER JOIN voor nu.

De INNER JOIN syntaxis gaat als volgt:

SELECT * FROM table_name_1
INNER JOIN table_name_2
ON table_name_1.column_name = table_name_2.column_name

Dus we zouden onze subquery uit het vorige voorbeeld kunnen herschrijven naar het volgende:

SELECT Fruit.* FROM Fruit
INNER JOIN Units
ON Fruit.UnitId = Units.UnitId
WHERE Units.UnitName = 'Piece';

Resultaat:

We specificeerden Fruit.* in plaats van alleen * omdat we alleen alle kolommen van de Fruit . wilden retourneren tafel. Als we * . hadden gebruikt , de zoekopdracht zou alle kolommen van beide tabellen hebben geretourneerd.

Bekijk ook de LEFT JOIN en RIGHT JOIN om te zien hoe u verschillende gegevens kunt krijgen, afhankelijk van het type deelname.

Subquery vs JOIN ?

Nu je twee methoden hebt gezien om hetzelfde resultaat te bereiken, vraag je je waarschijnlijk af welke beter is?

Subquery's zijn meestal beter leesbaar (en misschien gemakkelijker te begrijpen), waardoor het voor beginners gemakkelijker te begrijpen is.

Veel SQL-programmeurs vinden echter JOIN is efficiënter en presteert beter. Als u prestatieproblemen ondervindt met uw zoekopdrachten of een toepassing, probeer dan eventuele subquery's om te zetten in JOIN s of vice versa (in sommige gevallen zou een subquery beter kunnen presteren).

Er kunnen ook gevallen zijn waarin een subquery uw enige optie is, dus dit is ook een overweging.

Meer operators

Onze zoekopdrachten tot nu toe bevatten allemaal een gelijkteken (= ). Dit heet een operator . Meer specifiek is het een vergelijkingsoperator omdat het de ene uitdrukking met de andere vergelijkt.

Er zijn veel meer operators die u in uw query's kunt gebruiken. Deze kunnen enorm helpen bij het beperken van de resultatenset tot alleen die records die u nodig hebt. Het is niet ongebruikelijk dat een database miljoenen records bevat. Zelfs als je maar duizenden records hebt, zou het een zeer ontmoedigende taak zijn om één record (of zelfs maar een handvol) tussen duizenden te vinden als je deze operators niet tot je beschikking had.

Hier zijn enkele van de meest gebruikte SQL-operators.

De > Operator

U kunt de > . gebruiken operator om gegevens te selecteren die groter zijn dan een bepaalde waarde.

SELECT * FROM Fruit
WHERE Inventory > 10;

De < Operator

U kunt de < . gebruiken operator om gegevens te selecteren die minder zijn dan een bepaalde waarde.

SELECT * FROM Fruit
WHERE Inventory < 10;

De <> Operator

U kunt de <> . gebruiken operator om gegevens te selecteren die zowel kleiner zijn dan en groter dan een bepaalde waarde.

SELECT * FROM Fruit
WHERE Inventory <> 10;

De >= Operator

U kunt de >= . gebruiken operator om gegevens te selecteren die groter zijn dan of gelijk zijn aan een bepaalde waarde.

SELECT * FROM Fruit
WHERE Inventory >= 10;

De <= Operator

U kunt de <= . gebruiken operator om gegevens te selecteren die kleiner zijn dan of gelijk zijn aan een bepaalde waarde.

SELECT * FROM Fruit
WHERE Inventory <= 10;

De AND Operator

U kunt een AND . toevoegen operator naar de WHERE clausule om uw selectie te beperken tot alleen die records die aan twee voorwaarden voldoen (of meer als u meer AND opneemt exploitanten).

Hier is een voorbeeld:

SELECT * FROM Fruit
WHERE Inventory > 10 
AND DateEntered > '2015-01-15';

De OR Operator

U kunt een OR . gebruiken operator om uw selectie uit te breiden tot meer dan één criterium. Zoals de naam al doet vermoeden, is de OR clausule laat u gegevens selecteren waarbij het criterium dit OF . is Dat. Dus de AND operator limieten uw selectie en de OR operator verbreedt het.

Hier is een voorbeeld:

SELECT * FROM Fruit
WHERE UnitId = 1 OR UnitId = 2;

De BETWEEN Operator

Gebruik de BETWEEN operator om gegevens te selecteren die tussen twee gegeven waarden liggen.

SELECT * FROM Fruit
WHERE DateEntered 
BETWEEN '2015-01-25' AND '2015-02-25';

De NOT Operator

Gebruik de NOT operator om gegevens te selecteren die niet . zijn gelijk aan een bepaalde voorwaarde.

SELECT * FROM Fruit
WHERE NOT (FruitName = 'Apple');

  1. Een opzoekbesturingselement toevoegen aan een formulier in Access 2016

  2. Wijzig de prioriteit van een account binnen een database-e-mailprofiel (SSMS)

  3. MySQL-equivalent van ORACLES rank()

  4. Een string toewijzen aan een DB-reeks in Hibernate