Con un'enorme quantità di dati generati ogni giorno, è importante recuperare i dati in base ad alcune condizioni. In questo articolo sull'istruzione CASE in MySQL, parlerò di come utilizzare questa istruzione, per recuperare dati su una o più condizioni.
I seguenti argomenti saranno trattati in questo articolo:
- Introduzione a SQL
- Qual è lo scopo di SQL?
- CASO in MySQL
- Sintassi di CASE in MySQL
- Esempio di CASE in MySQL
Cos'è SQL?
SQL è un linguaggio specifico del dominio ampiamente utilizzato nella programmazione. È progettato per la gestione dei dati contenuti in un sistema di gestione di database relazionali (RDBMS) o per l'elaborazione di flussi in un sistema di gestione di flussi di dati relazionali. In generale, SQL è un linguaggio standard che aiuta a memorizzare, manipolare e recuperare i dati nei database.
Qual è lo scopo di SQL?
SQL è fondamentalmente usato per comunicare con un database. Secondo ANSI (American National Standards Institute), è considerato il linguaggio standard per i sistemi di gestione di database relazionali (RDBMS). Usiamo le istruzioni SQL per eseguire attività come aggiornare, inserire, eliminare o recuperare dati da un database.
Cos'è l'istruzione CASE in MySQL?
L'istruzione CASE in MySQL è un modo per gestire la logica if/else. È una sorta di istruzione di controllo che costituisce la cella dei linguaggi di programmazione poiché controllano l'esecuzione di altri insiemi di istruzioni.
L'istruzione CASE passa attraverso varie condizioni e restituisce valori man mano che la prima condizione viene soddisfatta (come un'istruzione IF-THEN-ELSE nei linguaggi di basso livello). Una volta che una condizione è vera, interromperà l'attraversamento e restituirà il risultato. Se nessuna delle condizioni è vera, restituisce il valore nella clausola ELSE.
Se non esiste una clausola ELSE e nessuna delle condizioni è vera, restituisce semplicemente NULL.
Sintassi dell'istruzione CASE in MySQL
Sintassi di base:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionx THEN resultx ELSE result END;
Ci possono essere due modi per ottenere le dichiarazioni CASE-Switch:
- Prende una variabile chiamata case_value e la confronta con qualche statement_list.
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END;
- Considera una condizione_ricerca invece dell'uguaglianza delle variabili ed esegui l'elenco_istruzioni di conseguenza.
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END;
Esempio di istruzione CASE in MySQL
Consideriamo un tavolo:STUDENT
Tavolo Studente
ID studente | Nome | Reparto | Sesso |
001 | Akash | CS | M |
002 | Bikram | Meccanico | M |
003 | Chandan | CS | M |
004 | Profondo | CS | M |
005 | Elia | EC | F |
006 | Fernande | Meccanico | F |
Esempio: Si consideri uno scenario in cui è necessario modificare i nomi dei dipartimenti nelle loro forme complete. Se il nome del reparto è CS, dovrebbe essere convertito in Informatica; Allo stesso modo, Mech dovrebbe essere convertito in Mechanical.and EC in Electronic and Communication.
Richiesta di esempio
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;
Risultato:
I nomi dei dipartimenti corrispondenti vengono rinominati come segue:
ID studente | Nome | Reparto | Sesso |
001 | Akash | Informatica | M |
002 | Bikram | Meccanico | M |
003 | Chandan | Informatica | M |
004 | Profondo | Informatica | M |
005 | Elia | Elettronica e comunicazione | F |
006 | Fernande | Meccanico | F |
Esempio: Considera uno scenario, in cui devi selezionare tutti i campi corrispondenti alla tabella Studente. Poiché i valori scritti nel campo Sesso sono valori a carattere singolo (M/F), scriviamo una query per cambiare M in Maschio e F in Femmina.
Richiesta di esempio
SELECT Student ID, Name, Department, CASE Gender WHEN'M' THEN 'Male' WHEN'F' THEN 'Female' END FROM Student;
Risultato:
ID studente | Nome | Reparto | Sesso |
001 | Akash | Informatica | Maschio |
002 | Bikram | Meccanico | Maschio |
003 | Chandan | Informatica | Maschio |
004 | Profondo | Informatica | Maschio |
005 | Elia | Elettronica e comunicazione | Femmina |
006 | Fernande | Meccanico | Femmina |
CASE Passa in SQL - Ordinamento personalizzato
Richiesta di esempio
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;
Risultato:
L'output viene ordinato in base al campo fornito.
La procedura sopra (funzione) prende una variabile di tipo di dati varchar come argomento e, su questa base, ordina le tuple nella tabella Student. Inoltre, possiamo anche utilizzare le istruzioni CASE per confrontare le condizioni.
Esempio: Considera una tabella denominata CONTACTS che contiene contactID e un websiteID. In base a questi dettagli, un utente può navigare attraverso questi collegamenti:"TechOnTheNet.com" o "CheckYourMath.com".
Richiesta di esempio
SELECT CASE WHEN contact_id < 1000 THEN 'TechOnTheNet.com' WHEN website_id = 2 THEN 'CheckYourMath.com' END FROM contacts;
Deve essere ormai chiaro che mentre si scrivono le istruzioni Case in MySQL, uno dei fattori più importanti è "ordinarle nel modo giusto". Ricorda solo che le condizioni vengono valutate nell'ordine da te elencato. Quando una qualsiasi condizione diventa vera, l'istruzione CASE restituirà il risultato e non valuterà ulteriormente le condizioni. Quindi fai attenzione mentre selezioni l'ordine in cui elenchi le tue condizioni.
Se desideri saperne di più su MySQL e conoscere questo database relazionale open source, dai un'occhiata al nostro MySQL DBA Certification Training che viene fornito con formazione dal vivo con istruttore e real- esperienza di progetto di vita. Questa formazione ti aiuterà a comprendere in modo approfondito MySQL e a raggiungere la padronanza dell'argomento.
Hai una domanda per noi? Per favore menzionalo nella sezione commenti di questa "Dichiarazione CASE in MySQL" e ti risponderemo.