Mysql
 sql >> Database >  >> RDS >> Mysql

Query MySQL

Finora abbiamo creato un database, aggiunto due tabelle e inserito dati in entrambe le tabelle. Ora vedremo come recuperare quei dati. Ma non solo recupera i dati, ma per interrogare il database per esso.

SQL sta per Linguaggio di query strutturato . È la Query bit che rende SQL così potente. SQL è un linguaggio che consente di eseguire query contro il tuo database. Ti permette di interrogare il database per i dati desiderati.

L'SQL SELECT Dichiarazione

Quando si tratta di interrogare il tuo database MySQL, SQL SELECT dichiarazione rende tutto possibile. È probabile che questa sia l'istruzione SQL utilizzata più di frequente quando si lavora con MySQL. Il SELECT istruzione ti consente di descrivere a MySQL esattamente quali dati vuoi che recuperi.

Considera la seguente istruzione SQL:

SELECT * FROM Fruit;

Ecco il risultato:

Questo è il SELECT affermazione nella sua forma più semplice. L'istruzione SQL precedente recupera tutti i record da Fruit tabella.

L'asterisco (* ) dice a MySQL di restituire tutte le colonne. Questo ci fa risparmiare tempo e fatica. Senza questo avremmo bisogno di scrivere i nomi di tutte le colonne che vorremmo avere restituito.

Detto questo, puoi anche dire a MySQL di restituire solo le colonne che desideri restituire. Questo viene fatto nominando solo le colonne che vorresti fossero restituite. In questo modo:

SELECT FruitId, FruitName 
FROM Fruit;

Ecco il risultato:

L'istruzione SQL precedente seleziona FruitId e NomeFrutta colonne da Frutta tabella.

In questo modo puoi ridurre il disordine in modo da visualizzare solo le colonne che ti interessano. Può anche aumentare le prestazioni, perché MySQL (e qualsiasi applicazione che utilizzi) non ha bisogno di utilizzare risorse preziose per restituire dati non necessari.

Anche in questo caso, questa query recupera tutto record dalla tabella — MySQL restituirà tutti i record se non diversamente specificato.

Il WHERE Clausola

Puoi aggiungere il WHERE clausola per restringere il set di risultati solo ai record che ti interessano. In questo modo:

SELECT * FROM Fruit
WHERE UnitId = 1;

Risultato:

La query precedente restituisce tutti i record da Fruit tabella in cui UnitId la colonna ha un valore di 1 .

Subquery:SELECT nidificato Dichiarazioni

E se non conoscessimo UnitId ? E se sapessimo solo cercare quei record con un nome di unità di Piece ?

Facile! Potremmo riscrivere l'esempio sopra per usare un SELECT annidato istruzione (altrimenti nota come subquery ) che interroga un'altra tabella (le Unità tavolo). In questo modo potremo utilizzare l'unità effettiva nome (anziché il suo ID) perché la seconda tabella contiene questo in UnitName campo:

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

Risultato:

Qui utilizziamo un SELECT annidato istruzione (ovvero un SELECT istruzione all'interno di un SELECT istruzione) per interrogare le Unità tabella per UnitId del record che contiene Piece come suo UnitName valore. Possiamo farlo perché Fruit.UnitId colonna è una chiave esterna per Units.UnitId colonna.

Se sei interessato, ecco altri esempi di sottoquery.

Utilizzo di un JOIN SQL

Facendo un ulteriore passo avanti, potremmo riscrivere il nostro SELECT annidato dichiarazione in un INNER JOIN .

In SQL, un JOIN consente di eseguire query su più tabelle che condividono dati. Nel nostro caso, entrambe le tabelle condividono UnitId quindi potresti dire che sono "uniti" da questo campo.

Esistono diversi tipi di join in SQL, tuttavia, siamo principalmente interessati a INNER JOIN per ora.

Il INNER JOIN la sintassi va così:

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

Quindi potremmo riscrivere la nostra sottoquery dall'esempio precedente nel seguente:

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

Risultato:

Abbiamo specificato Fruit.* anziché solo * perché volevamo solo restituire tutte le colonne da Frutta tavolo. Se avessimo usato * , la query avrebbe restituito tutte le colonne di entrambe le tabelle.

Controlla anche il LEFT JOIN e RIGHT JOIN per vedere come puoi ottenere dati diversi a seconda del tipo di join.

Subquery vs JOIN ?

Ora che hai visto due metodi per ottenere lo stesso risultato, probabilmente ti starai chiedendo quale sia il migliore?

Le sottoquery tendono ad essere più leggibili (e forse più facili da comprendere), il che può renderle più facili da comprendere per i principianti.

Tuttavia, molti programmatori SQL trovano JOIN s più efficiente e con prestazioni migliori. Se riscontri problemi di prestazioni con le tue query o un'applicazione, prova a convertire le sottoquery in JOIN so viceversa (in alcuni casi una sottoquery potrebbe funzionare meglio).

Inoltre, potrebbero esserci casi in cui una sottoquery è la tua unica opzione, quindi anche questa è una considerazione.

Più operatori

Finora le nostre query contenevano tutte un segno di uguale (= ). Questo è chiamato un operatore . Più precisamente è un operatore di confronto in quanto confronta un'espressione con un'altra.

Ci sono molti altri operatori che puoi utilizzare nelle tue query. Questi possono aiutare notevolmente a restringere il set di risultati solo ai record necessari. Non è raro che un database contenga milioni di record. Anche se hai solo migliaia di record, cercare di trovare un record (o anche solo una manciata) tra migliaia sarebbe un compito molto arduo se non avessi questi operatori a tua disposizione.

Ecco alcuni degli operatori SQL più comunemente usati.

Il > Operatore

Puoi usare il > operatore per selezionare i dati maggiori di un dato valore.

SELECT * FROM Fruit
WHERE Inventory > 10;

Il < Operatore

Puoi usare il < operatore per selezionare i dati meno di un dato valore.

SELECT * FROM Fruit
WHERE Inventory < 10;

Il <> Operatore

Puoi usare il <> operatore per selezionare dati inferiori a e maggiore di un dato valore.

SELECT * FROM Fruit
WHERE Inventory <> 10;

Il >= Operatore

Puoi usare il >= per selezionare dati maggiori o uguali a un determinato valore.

SELECT * FROM Fruit
WHERE Inventory >= 10;

Il <= Operatore

Puoi usare il <= per selezionare dati inferiori o uguali a un determinato valore.

SELECT * FROM Fruit
WHERE Inventory <= 10;

Il AND Operatore

Puoi aggiungere un AND operatore al WHERE clausola per limitare la tua selezione ai soli record che soddisfano due condizioni (o più se includi più AND operatori).

Ecco un esempio:

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

Il OR Operatore

Puoi usare un OR operatore per ampliare la selezione a più di un criterio. Come suggerisce il nome, il OR La clausola consente di selezionare i dati in cui il criterio è questo O Quello. Quindi il AND operatore limiti la tua selezione e il OR l'operatore si allarga esso.

Ecco un esempio:

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

Il BETWEEN Operatore

Usa il BETWEEN per selezionare i dati compresi tra due valori dati.

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

Il NOT Operatore

Usa il NOT operatore per selezionare i dati che non sono equivalente a una data condizione.

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