SQL actualitzacions

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Per poder canviar dades d'un registre haurem d'utilitzar la comanda SQL UPDATE. Resumint, aquesta és:

UPDATE <nom_taula>
SET <columna1>=<valor1>, <columna2>=<valor2>, etc.
WHERE <condició>;

ATENCIÓ: és MOLT important que poseu correctament el WHERE. Si us equivoqueu en la condició matxacareu les dades de tota la taula, i recuperar-les pot ser impossible. Això és similar al què passa amb la comanda DELETE.

Potser val la pena que feu un vistasso a l'article de SQL transaccions per poder desfer els canvis a la base de dades en cas d'error.


Exemple 1

Anem a la base de dades que hem anomenat "<alumne>_insti" d'una sola taula (ho hem fet a l'exercici SQL taules).

$> mysql -u <usuari> -p -h <host>
mysql> use <usuari>_insti;
mysql> desc assignatures;
mysql> select * from assignatures;

I d'aquesta manera ens sortirà una llista d'assignatures introduïdes amb el professor corresponent:

Si volem canviar el nombre d'hores que ocupa l'assignatura "Matemàmiques 2n ESO" que imparteix Pere Font caldrà un UPDATE amb una condició WHERE id_assignatura=1. Per assegurar-nos de que anem bé i de que estem modificant NOMÉS la dada que nosaltres volem, cal provar primer de tot la condició amb el WHERE:

mysql> SELECT * FROM assignatures WHERE id_assignatura=1;

Si només ens apareix l'assignatura que volem, podem procedir.

UPDATE assignatures
SET hores=90
WHERE id_assignatura=1;

És clar que també es pot aplicar canvis amb condicions que no siguin una ID, ja que la ID de l'exemple pot diferir d'una base de dades a una altra. Per exemple, el cas anterior podiem modificar l'assignatura en qüestió pel nom de l'assignatura (en el WHERE):

UPDATE assignatures
SET hores=90
WHERE assignatura="Matemàtiques 2n ESO";

També podriem fer un canvi pel nom del professor (WHERE professor="Jaume Font") però això podira portar-nos a un error fàcilment. Endivines quin?...

Exercici 1

Utilitzant aquesta base de dades de les assignatures, aplica les següents modificacions:

  1. L'assignatura d'anglès serà de 116 hores.
  2. Les Mates de 1r d'ESO ja no les fa la Pepi sinó en Carles Bustamante.
  3. Les Ciències Naturals de 1r d'ESO ara passaran a dir-se "Ciències de la Naturalesa 1r ESO".
  4. L'assignatura de Castellà ara es dirà "Llengua castellana 1r ESO" i la impartirà en Alfonso López.
  5. El català de 1r d'ESO l'impartirà en Ricard Torres i ara ocuparà 120 hores enlloc de 130.
  6. Visual i plàstica passarà a ocupar 90 hores.


Exemple 2

Prenem l'exemple de la base de dades de matrícules de l'institut Arxiu:Ufs.sql.

mysql> use <usuari>_ufs;

Així ja estarem a dins de la base de dades de l'institut.