SQL insercions

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

Descarrega i crea la base de dades de l'institut amb l'arxiu Fitxer:Ufs.sql.

La base de dades de l'institut es diu UFs perquè a partir d'ara les matriculacions es faran amb Unitats Formatives (UFs) que son les diverses parts que composen una assignatura.

La base de dades ufs.sql està incomplerta i cal afegir informació que no està encara introduïda. La base de dades conté les assignatures de 1r curs de SMX (juntament amb algunes qualificacions dels alumnes) i cal que nosaltres introduïm les dades del segon curs. Les dades sobre les assignatures que manquen les podreu trobar aquí: currículum titulació CFGM SMX.

Entrada al sistema i inspecció de les taules

Primer de tot cal entrar dins la base de dades com sempre des del promp de Linux:

$> mysql -u <usuari> -p

Un cop a dins podem mirar les taules que conté i després examinar el contingut de cadascuna d'elles amb desc:

mysql> show tables;

el que hauria de mostrar les taules de la base de dades

+---------------+
| Tables_in_ufs |
+---------------+
| UFs           | 
| alumnes       | 
| assignatures  | 
| curs          | 
| especialitat  | 
| matricules    | 
| professors    | 
| titulacio     | 
| uf_matricula  | 
+---------------+
9 rows in set (0,00 sec)

Pel comentat al principi podem entendre que les taules que ens interessen son la d'assignatures i la de UFs.

mysql> desc assignatures;

el que ens mostrarà els camps (columnes) de la taula en qüestió:

+------------------+----------+------+-----+---------+----------------+
| Field            | Type     | Null | Key | Default | Extra          |
+------------------+----------+------+-----+---------+----------------+
| id_assignatura   | int(11)  | NO   | PRI | NULL    | auto_increment | 
| codi_assignatura | char(50) | YES  |     | NULL    |                | 
| nom              | char(50) | YES  |     | NULL    |                | 
| hores            | int(11)  | YES  |     | NULL    |                | 
| descripcio       | longblob | YES  |     | NULL    |                | 
| id_professor     | int(11)  | YES  | MUL | NULL    |                | 
| id_titulacio     | int(11)  | YES  | MUL | NULL    |                | 
| curs             | int(11)  | YES  |     | NULL    |                | 
+------------------+----------+------+-----+---------+----------------+

i podem inspeccionar la taula de UFs amb:

mysql> desc UFs

que ens donarà:

+----------------+-----------+------+-----+---------+----------------+
| Field          | Type      | Null | Key | Default | Extra          |
+----------------+-----------+------+-----+---------+----------------+
| id_uf          | int(11)   | NO   | PRI | NULL    | auto_increment | 
| id_assignatura | int(11)   | YES  | MUL | NULL    |                | 
| numero         | int(11)   | YES  |     | NULL    |                | 
| titol          | char(100) | YES  |     | NULL    |                | 
| hores          | int(11)   | YES  |     | NULL    |                | 
| descripcio     | text      | YES  |     | NULL    |                | 
+----------------+-----------+------+-----+---------+----------------+
6 rows in set (0,00 sec)

Inspecció de les dades de les taules

Per saber quines dades disposem podem fer un

mysql> SELECT * FROM assignatures;

Però les dades son massa grans i ens interessa veure-ho tot una mica més reduït. Millor si triem només els camps que ens calen:

mysql> SELECT id_assignatura,nom FROM assignatures;

Si volem mostrar només les dades de SMX podem fer-ho de dues maneres:

MÈTODE 1: (més senzill)

  • Esbrinem la id_titulacio que ens cal (inspeccionant les dades de la taula titulacio)
  • Fem el SELECT utiltizant aquesta id_titulacio en el WHERE (filtrant les dades de la titulació de SMX)

MÈTODE 2: (més complicat)

  • Realitzem un SELECT amb un JOIN per ajuntar les 2 taules i amb un WHERE per filtrar les dades de la titulació de SMX

Mètode 1 (sense JOIN)

Esbrinem la id_titulació del cicle formatiu de SMX:

mysql> SELECT * FROM titulacio;

I podem veure que la titulació que ens interessa és la de SMX, que té un id_titulacio=3'.

Ara podem anar a la taula de UFs i mostrar només les que ens interessen:

mysql> SELECT id_assignatura,nom FROM assignatures WHERE id_titulacio=3;

De la mateixa manera podem fer un llistat de les UFs d'una assignatura en concret, per exemple les de "Muntatge i manteniment d'equips", que correspon al nº d'assignatura "M1" de SMX i que si observem el resultat anterior podem veure que te una 'id_assignatura=1;

Fem, doncs, un llistat de les UFs de l'assignatura d'Equips:

mysql> SELECT * FROM UFs WHERE id_assignatura=1;

Mètode 2 (amb JOIN)

(...per fer...)

Introducció de dades amb INSERT

Haurem de comprovar, assignatura per assignatura, si té les seves corresponents UFs. Si alguna assignatura no té les UFs introduïdes, mirarem de l'arxiu de currículum de la titulació de SMX i introduïrem les dades corresponents.

Per exemple, la primera assignatura que trobem que no disposa de UFs és la que té per id_assignatura=5 ("Sistemes operatius en xarxa"). Si mirem les dades del currículum trobarem que aquesta assignatura té les següents UFs: