Omdat er elke dag een gigantische hoeveelheid gegevens wordt gegenereerd, is het belangrijk om gegevens op basis van een paar voorwaarden op te halen. In dit artikel over de CASE-instructie in MySQL zal ik bespreken hoe u deze verklaring kunt gebruiken om gegevens over een enkele voorwaarde of meerdere voorwaarden op te halen.
De volgende onderwerpen worden in dit artikel behandeld:
- Inleiding tot SQL
- Wat is het doel van SQL?
- CASE in MySQL
- Syntaxis van CASE in MySQL
- Voorbeeld van CASE in MySQL
Wat is SQL?
SQL is een domeinspecifieke taal die veel wordt gebruikt bij het programmeren. Het is ontworpen voor het beheren van gegevens in een relationeel databasebeheersysteem (RDBMS), of voor stroomverwerking in een relationeel gegevensstroombeheersysteem. Over het algemeen is SQL een standaardtaal die helpt bij het opslaan, manipuleren en ophalen van gegevens in databases.
Wat is het doel van SQL?
SQL wordt in principe gebruikt om met een database te communiceren. Volgens ANSI (American National Standards Institute) wordt het beschouwd als de standaardtaal voor relationele databasebeheersystemen (RDBMS). We gebruiken SQL-statements om taken uit te voeren zoals het bijwerken, invoegen, verwijderen of ophalen van gegevens uit een database.
Wat is de CASE-instructie in MySQL?
CASE-instructie in MySQL is een manier om de if/else-logica af te handelen. Het is een soort controle-instructie die de cel van programmeertalen vormt, omdat ze de uitvoering van andere sets instructies controleren.
De CASE-instructie doorloopt verschillende voorwaarden en retourneert waarden als en wanneer aan de eerste voorwaarde wordt voldaan (zoals een IF-THEN-ELSE-instructie in talen op laag niveau). Zodra een voorwaarde waar is, stopt het met doorlopen en retourneert het resultaat. Als geen van de voorwaarden waar is, wordt de waarde in de ELSE-clausule geretourneerd.
Als er geen ELSE-clausule is en geen van de voorwaarden waar is, wordt gewoon NULL geretourneerd.
Syntaxis van CASE-instructie in MySQL
Basissyntaxis:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionx THEN resultx ELSE result END;
Er kunnen twee manieren zijn om CASE-Switch-statements te verkrijgen:
- Neemt een variabele met de naam case_value en matcht deze met een statement_list.
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END;
- Overweeg een zoekconditie in plaats van een variabele gelijkheid en voer de statement_list dienovereenkomstig uit.
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END;
Voorbeeld van CASE-instructie in MySQL
Laten we eens kijken naar een tafel:STUDENT
Studententabel
Student-ID | Naam | Afdeling | Gender |
001 | Akash | CS | M |
002 | Bikram | Mech | M |
003 | Chandan | CS | M |
004 | Deepak | CS | M |
005 | Elicia | EC | F |
006 | Fernandes | Mech | F |
Voorbeeld: Overweeg een scenario waarin u de afdelingsnamen moet wijzigen in hun volledige vorm. Als de afdelingsnaam CS is, moet deze worden geconverteerd naar Computer Science; Evenzo moet Mech worden geconverteerd naar Mechanical.and EC naar Electronic en Communication.
Voorbeeldquery
CASE department_name WHEN 'CS' THEN UPDATE Student SET department='Computer Science'; WHEN 'EC' THEN UPDATE Student SET department='Electronics and Communication'; ELSE UPDATE Student SET department=’Mechanical'; END;
Uitvoer:
De corresponderende afdelingsnamen worden als volgt hernoemd:
Student-ID | Naam | Afdeling | Gender |
001 | Akash | Informatica | M |
002 | Bikram | Mechanisch | M |
003 | Chandan | Informatica | M |
004 | Deepak | Informatica | M |
005 | Elicia | Elektronica en communicatie | F |
006 | Fernandes | Mechanisch | F |
Voorbeeld: Overweeg een scenario waarin u alle velden moet selecteren die overeenkomen met de tabel Student. Aangezien de waarden die in het veld Geslacht zijn geschreven waarden van één teken (M/V), laten we een query schrijven om M te wijzigen in Man en F in Vrouw.
Voorbeeldquery
SELECT Student ID, Name, Department, CASE Gender WHEN'M' THEN 'Male' WHEN'F' THEN 'Female' END FROM Student;
Uitvoer:
Student-ID | Naam | Afdeling | Gender |
001 | Akash | Informatica | Man |
002 | Bikram | Mechanisch | Man |
003 | Chandan | Informatica | Man |
004 | Deepak | Informatica | Man |
005 | Elicia | Elektronica en communicatie | Vrouw |
006 | Fernandes | Mechanisch | Vrouw |
CASE Switch in SQL - Aangepast sorteren
Voorbeeldquery
CREATE PROCEDURE GetStudent(@ColToSort varchar(150)) AS SELECT StudentID, Name, Gender, Department FROM Student ORDER BY CASE WHEN @ColToSort='Department' THEN Department WHEN @ColToSort='Name' THEN Name WHEN @ColToSort='Gender' THEN Gender ElSE StudentID END;
Uitvoer:
De uitvoer wordt gesorteerd volgens het opgegeven veld.
De bovenstaande procedure (functie) neemt een variabele van het datatype varchar als argument en sorteert op basis daarvan de tuples in de Student-tabel. Bovendien kunnen we ook CASE-statements gebruiken om voorwaarden te vergelijken.
Voorbeeld: Overweeg een tabel met de naam CONTACTEN die contactID en een websiteID bevat. Volgens deze details kan een gebruiker navigeren via deze links:'TechOnTheNet.com' of 'CheckYourMath.com'.
Voorbeeldquery
SELECT CASE WHEN contact_id < 1000 THEN 'TechOnTheNet.com' WHEN website_id = 2 THEN 'CheckYourMath.com' END FROM contacts;
Het moet inmiddels duidelijk zijn dat bij het schrijven van Case-statements in MySQL een van de belangrijkste factoren is 'ze op de juiste manier te ordenen'. Houd er rekening mee dat de voorwaarden worden beoordeeld in de door u genoemde volgorde. Zodra een voorwaarde waar wordt, zal de CASE-instructie het resultaat retourneren en de voorwaarden niet verder evalueren. Wees dus voorzichtig bij het selecteren van de volgorde waarin u uw voorwaarden vermeldt.
Als je meer wilt weten over MySQL en deze open-source relationele database wilt leren kennen, bekijk dan onze MySQL DBA-certificeringstraining die wordt geleverd met door een instructeur geleide live training en real- levensproject ervaring. Deze training zal u helpen MySQL diepgaand te begrijpen en u te helpen het onderwerp onder de knie te krijgen.
Heeft u een vraag voor ons? Vermeld dit in het opmerkingengedeelte van deze "CASE-verklaring in MySQL" en we nemen contact met u op.