13 Ordres SQL més importants que qualsevol programador hauria de conèixer

13 Ordres SQL més importants que qualsevol programador hauria de conèixer

Les bases de dades impulsen el web modern. Cada lloc web gran o dinàmic utilitza una base de dades d'alguna manera i quan es combina amb Llenguatge de consulta estructurat (SQL) , les possibilitats de manipular dades realment són infinites. Si ja coneixeu SQL, assegureu-vos de comprovar aquestes habilitats de programació que tots els desenvolupadors de llocs web haurien de conèixer.





Avui us mostraré alguns dels ordres SQL bàsiques cal saber-ho com a programador.





Hi ha molts noms per a les dades retornades d'una taula de bases de dades. Les dades s’anomenen habitualment Fileres , Rècords , o Tuples . Utilitzaré aquests termes indistintament al llarg d’aquest article.





Prefaci

Tots els exemples d’avui es basaran en quatre taules de ficció. El client la taula conté el nom i l'edat dels clients:

El altures La taula conté el nom i l'alçada de qualsevol persona:



El personal La taula conté el nom i l'edat dels membres del personal, exactament igual que la taula de clients:

La taula final es diu gent conté el nom i l'edat de les persones, igual que les taules de clients i personal:





1. Seleccioneu

El seleccioneu La declaració és la més senzilla i és essencial que la comprengueu, ja que sustenta gairebé totes les altres ordres. Es considera una pràctica recomanada escriure les paraules SQL reservades en majúscules, ja que facilita la lectura i la comprensió de l’ordre.

Com el seu nom indica, select s'utilitza per seleccioneu dades d’una base de dades. Aquí teniu l’ús més senzill:





SELECT * FROM table;

Hi ha dues parts en això. La primera part ( SELECCIONA * ) especifica quines columnes voleu seleccionar. L'asterisc indica que voleu seleccionar totes les columnes de la taula. La segona part ( DE taula ) indica al vostre motor de base de dades d’on voleu recuperar aquestes dades. Substituïu 'taula' pel nom de la taula de la vostra base de dades.

Aquesta selecció es coneix com a 'estrella selecta'. L’ús de l’asterisc és una bona manera d’esbrinar quines dades hi ha en una taula, però no us recomano que l’utilitzeu per a cap codi de producció. Quan utilitzeu una estrella selectiva, correspon al motor de base de dades presentar-vos les dades que desitgeu. No teniu cap control sobre l'ordre de devolució de les dades, de manera que si algú afegeix una nova columna a la taula, és possible que les vostres variables en el llenguatge de programació ja no representin les dades correctes. Afortunadament, hi ha una solució.

Podeu indicar explícitament quines columnes voleu recuperar, així:

SELECT age, name FROM people;

Aquesta consulta recupera les columnes 'edat' i 'nom' de la taula 'persones'. Ser explícit pot ser una mica tediós si disposeu de moltes dades, però fer-ho reduirà els problemes en el futur, a més de facilitar la comprensió del vostre SQL per part dels futurs programadors.

Si voleu seleccionar una dada addicional, però no s'emmagatzema a cap de les vostres taules, podeu fer-ho així:

SELECT age, '1234' FROM people;

Qualsevol cadena dins de cometes simples es retornarà en lloc de coincidir amb un nom de columna.

2. On

L’ordre select és excel·lent per recuperar dades, però, i si voleu filtrar una mica més els resultats? Què passa amb recuperar només persones que tenen els ulls blaus? Què passa amb les persones nascudes al gener que treballen com a mecànics? Aquí és on on entra l'ordre. Això us permet aplicar condicions a la selecció i simplement afegir-la al final de la sentència:

SELECT age, name FROM people WHERE age > 10;

Aquesta consulta ara es limita a persones majors de deu anys. Podeu combinar diverses condicions mitjançant el fitxer I operador:

SELECT age, name FROM people WHERE age > 10 AND age <20;

El I La comanda funciona exactament igual que ho fa a la llengua anglesa: aplica una altra condició a la sentència. En aquest exemple, les dades retornades serien registres amb edats compreses entre els 10 i els 20 anys. Com que no hi ha resultats coincidents, no es retornen dades.

Android 7 mou aplicacions a la targeta SD

Una altra ordre que es pot utilitzar conjuntament amb això és O . Aquí teniu un exemple:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

Aquesta consulta retorna registres on l'edat és superior a 10 anys o el nom és igual a 'Joe'. Fixeu-vos en com només hi ha un signe igual? La majoria dels llenguatges de programació utilitzen el doble igual (==) per comprovar l'equivalència. Això no és necessari per a la gran majoria dels motors de base de dades (però pot ser molt per entorn, per tant, comproveu-ho primer).

3. Ordre

El ordre s'utilitza l'ordre per ordenar els resultats retornats. És un altre fàcil d’utilitzar. Simplement afegiu-lo al final de la vostra declaració:

SELECT name, age FROM people ORDER BY age DESC;

Cal especificar la columna i l’ordre, que poden ser ASC per ascendent o DESC per descendir. Podeu ordenar per diverses columnes com aquesta:

SELECT name, age FROM people ORDER BY name ASC, age DESC

DEMANAT PER és potser el més útil quan es combina amb altres ordres. No totes les consultes retornaran dades de manera lògica o ordenada; aquesta ordre us permet canviar-ho.

4. Uneix-te

El unir-se s'utilitza l'ordre unir-se dades relacionades emmagatzemades en una o més taules. Vostè unir-se la segona taula a la primera taula i especifiqueu com es connecten les dades. Aquí teniu un exemple bàsic:

algú pot cancel·lar un pagament de venmo
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

Hi ha algunes coses que passen aquí. Heu de començar per la sintaxi 'ESQUERRA', que especifica que voleu unir-vos a una taula mitjançant una combinació de tipus esquerre. A continuació, especifiqueu la taula a la qual voleu unir (altures). El USANT (nom) La sintaxi indica que la columna 'nom' es pot trobar a les dues taules i que s'hauria d'utilitzar com a clau per unir les taules.

No us preocupeu si les columnes tenen noms diferents a cada taula. Podeu utilitzar 'ACTIVAT' en lloc de 'USAR':

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

La instrucció on indica explícitament a quines columnes cal teclar. Hi ha molts tipus d’adherència, i trigaria molt a entrar en detalls per a cadascun, així que aquí teniu un breu resum dels seus usos:

  • (COMBINACIÓ INTERNA - Retorna files amb una coincidència a les dues taules.
  • ESQUERRA (EXTERIOR) UNEIX-TE - Retorna totes les files de la taula esquerra, amb qualsevol coincidència de la taula dreta. Si no hi ha coincidències, encara es retornaran els registres de la taula esquerra.
  • UNEIX-TE A LA DRETA (EXTERIOR) - Això és el contrari d'una unió a l'esquerra: es retornen totes les files de la taula dreta, juntament amb les coincidències de la taula esquerra.
  • UNEIX-TE COMPLET (EXTERIOR) - Retorna tots els registres amb una coincidència a qualsevol taula.

La sintaxi 'INTERIOR' o 'EXTERIOR' és opcional. Pot facilitar la comprensió de les coses, però no cal que ho especifiqueu durant la gran majoria del temps.

5. Alias

Ara ja coneixeu els conceptes bàsics, vegem el àlies comandament. S'utilitza per canviar el nom d'una taula temporalment, més que un sobrenom que qualsevol altra cosa, ja que aquest nom nou només existeix a la transacció individual que esteu executant. A continuació s’explica com l’utilitzeu:

SELECT A.age FROM people A;

Podeu utilitzar qualsevol nom vàlid que vulgueu, però a mi m'agrada fer servir lletres de l'alfabet. Abans de cada nom de columna, l'àlies està prefixat. Aquest àlies s'assigna a la taula immediatament després de declarar-la. Això és exactament el mateix que fer això:

SELECT people.age FROM people;

En lloc d’haver d’escriure un nom de taula llarg, podeu escriure una lletra senzilla i fàcil de recordar, però, a què serveix? Bé, si seleccioneu entre més d’una taula, és fàcil confondre’s sobre quines columnes pertanyen a quina taula. Si totes dues taules tenen columnes amb el mateix nom, és possible que la consulta de base de dades no s'executi sense fer referència explícita al nom o àlies de la taula. Aquí teniu un exemple amb dues taules:

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

I aquí teniu la mateixa consulta amb àlies:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

A la taula de personal es dóna l’àlies de “A” i a la taula de clients l’àlies de “B”. Aliasing de taules realment ajuda a facilitar la comprensió del vostre codi i redueix la quantitat d’escriptura que heu de fer.

També podeu canviar el nom d'una columna amb un àlies mitjançant l'ordre 'AS':

SELECT age AS person_age FROM people;

Quan s'executa aquesta consulta, ara la columna s'anomenarà 'person_age' en lloc de 'age'.

6. Unió

Unió és un gran comandament. Permet afegir files entre si. A diferència de les combinacions que afegeixen columnes coincidents, la unió pot afegir files no relacionades sempre que tinguin el mateix nombre i el mateix nom de columnes. A continuació s’explica com l’utilitzeu:

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

Podeu pensar en la unió com una manera de combinar els resultats de dues consultes. Una unió només retornarà resultats quan hi hagi una fila única entre les dues consultes. Podeu utilitzar la sintaxi 'UNION ALL' per retornar totes les dades, independentment dels duplicats:

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

Noteu com canvia l'ordre de les files? Union funciona de la manera més eficient, de manera que les dades retornades poden variar per ordre.

Un possible cas d'ús de la unió és un subtotal: podeu unir una consulta del total de la suma a una consulta dels totals individuals per a un escenari concret.

7. Insereix

Ara ja sabeu tot sobre com recuperar dades d’una base de dades, però, què passa amb inserir-les? Aquí és on inserir entra l'ordre. Aquí teniu un exemple:

INSERT INTO people(name, age) VALUES('Joe', 102);

Heu d'especificar el nom de la taula (persones) i les columnes que voleu utilitzar (nom i edat). A continuació, s'utilitza la sintaxi 'VALORS' per proporcionar els valors a inserir. Aquests han d'estar en el mateix ordre que les columnes que s'havien especificat anteriorment.

No podeu especificar una clàusula where per a les insercions i heu d'assegurar-vos que seguiu les restriccions de taula necessàries que hi hagi.

8. Actualització

Després d’inserir algunes dades, és natural que calgui canviar files específiques. Aquí teniu el actualització sintaxi de l'ordre:

UPDATE people SET name = 'Joe', age = 101;

Heu d'especificar la taula que voleu canviar i, a continuació, utilitzeu la sintaxi 'SET' per especificar les columnes i els seus nous valors. Aquest exemple és bo, però actualitzarà tots els registres, cosa que no sempre és desitjable.

Per ser més específics, podeu utilitzar les clàusules 'WHERE' igual que quan feu una selecció:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

Fins i tot podeu especificar diverses condicions fent servir 'I' i 'O':

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

Fixeu-vos en com s’utilitzen els claudàtors per restringir les condicions.

com utilitzar el joc remot de vapor

9. Upsert

Vaja és una paraula estranya que sona, però és una ordre increïblement útil. Suposem que teniu una restricció a la taula i heu especificat que només voleu registres amb noms únics; per exemple, no voleu emmagatzemar dues files amb el mateix nom. Si proveu d'inserir diversos valors de 'Joe', el vostre motor de base de dades provocaria un error i es negaria a fer-ho (amb tota la raó). Un UPSERT us permet actualitzar un registre si ja existeix. Això és increïblement útil. Sense aquesta ordre, hauríeu d’escriure molta lògica per comprovar primer si existeix un registre, inserir-lo si no, en cas contrari, recuperar la clau primària correcta i actualitzar-la.

Malauradament, els avenços s'implementen de manera diferent en diferents motors de base de dades. PostgreSQL només ha guanyat aquesta capacitat recentment, mentre que MySQL la té des de fa força temps. Aquí teniu la sintaxi de MySQL com a referència:

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

Fixeu-vos en què es tracta essencialment d'una actualització i una instrucció insert, que es poden resumir com a 'actualització si la inserció ha fallat'.

10. Esborra

Suprimeix s'utilitza per eliminar registres completament - pot ser molt perjudicial si s'abusa. La sintaxi bàsica és molt fàcil d'utilitzar:

DELETE FROM people;

Com la majoria de les altres ordres, això se suprimirà tot ! Heu d’utilitzar un paràmetre on per restringir-lo a un nombre de files una mica més sanejat, idealment una:

DELETE FROM people WHERE name = 'Joe';

Si esteu desenvolupant un sistema, sovint és aconsellable implementar una 'supressió suau'. Mai no executeu l'ordre de supressió, sinó que creeu una columna suprimida i, a continuació, comproveu aquesta columna que seleccioneu; pot evitar molta vergonya si podeu recuperar registres suposadament suprimits de manera ràpida i senzilla. No obstant això, això no substitueix les còpies de seguretat adequades.

11. Crea una taula

El crear taula La comanda s'utilitza per crear taules. És un altre molt senzill:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

Observeu com els noms i les restriccions de les columnes es troben dins de claudàtors i les columnes tenen un tipus de dades adequat. S'especifica una clau primària, tal com es requereix en qualsevol bon disseny de base de dades.

12. Taula d’alteració

El alterar taula La comanda s'utilitza per modificar l'estructura d'una taula. Això és lleugerament limitat, ja que la vostra base de dades no us permetrà modificar una taula si les dades existents causen un conflicte; per exemple, canvieu una cadena a un enter. En aquests casos, primer corregiu les dades i, a continuació, modifiqueu la taula. Aquí teniu un exemple:

ALTER TABLE people ADD height integer;

Aquest exemple afegeix una columna anomenada 'altura' de tipus enter a la taula de persones. Realment no hi ha cap límit en allò que es pot modificar.

13. Taula de caiguda

L'ordre final és taula desplegable . Penseu en això com a supressió, però en lloc de suprimir un sol registre, elimina tots els registres juntament amb la taula. A continuació s’explica com l’utilitzeu:

DROP TABLE people;

És una ordre bastant dràstica i no hi ha cap raó perquè s’hagi de programar al vostre sistema. Només s’ha de realitzar manualment en la gran majoria dels casos, i pot ser-ho molt destructiu.

Això és tot per avui. Espero que hagueu après alguns trucs útils. Es podria aprendre a fer-ho fer un lloc web i, a continuació, utilitzeu les vostres noves habilitats per fer-lo dinàmic; assegureu-vos que no cometeu aquests errors o deixeu-lo vulnerable a la injecció SQL. Si no esteu segur que necessiteu aprendre SQL, us heu plantejat un generador de llocs estàtic?

Per què no deixeu un comentari a continuació amb els vostres consells i trucs SQL preferits?

Crèdits de la imatge: HYS_NP / Shutterstock

Compartir Compartir Tweet Correu electrònic Val la pena actualitzar-lo a Windows 11?

Windows s’ha redissenyat. Però, n’hi ha prou per convèncer-vos de canviar de Windows 10 a Windows 11?

Llegiu a continuació
Temes relacionats
  • Programació
  • Programació
  • SQL
Sobre l'autor Joe Coburn(136 articles publicats)

Joe és llicenciat en Informàtica per la Universitat de Lincoln, Regne Unit. És un desenvolupador de programari professional i, quan no fa volar drons ni escriu música, sovint se’l pot trobar fent fotos o produint vídeos.

Més de Joe Coburn

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us