Diferència entre revisions de la pàgina «Modificant les dades: insert, update, delete»

De wikijoan
Salta a la navegació Salta a la cerca
m
Línia 11: Línia 11:
 
bash-4.4#  
 
bash-4.4#  
  
# cd /etc
+
bash-4.4# cd /etc
# ls HR.sql
+
bash-4.4# ls HR.sql
 
</pre>
 
</pre>
 
El primer que hem de fer és entrar amb un editor de text (''nano'') al script HR.sql, i comentar les dues primeres línies:
 
El primer que hem de fer és entrar amb un editor de text (''nano'') al script HR.sql, i comentar les dues primeres línies:
  
 
<pre>
 
<pre>
# nano HR.sql
+
bash-4.4# nano HR.sql
 +
 
 
#CREATE DATABASE HR CHARACTER SET utf8 COLLATE utf8_general_ci;
 
#CREATE DATABASE HR CHARACTER SET utf8 COLLATE utf8_general_ci;
 
#use HR;
 
#use HR;
 
</pre>
 
</pre>
 +
'''NOTA''': el caràcter coixinet (#) és un comentari.
 +
 
Mira quin és el contingut del script: veuràs fàcilment tots els ''creates'' i els ''inserts''.
 
Mira quin és el contingut del script: veuràs fàcilment tots els ''creates'' i els ''inserts''.
  

Revisió del 09:37, 1 des 2021

Introducció

És la secció 11 que estem seguint del tutorial:

Previ: regeneració de les dades de la base de dades HR

Dins del docker tenim el script /etc/HR.sql que és l'estructura i les dades de la nostra base de dades. Per executar aquest script i regenerar les dades ho podem fer de dues maneres: des de la consola, i des de dins del mysql

Entrem a la consola del docker:

$ docker exec -it mysql_m02bd /bin/bash
bash-4.4# 

bash-4.4# cd /etc
bash-4.4# ls HR.sql

El primer que hem de fer és entrar amb un editor de text (nano) al script HR.sql, i comentar les dues primeres línies:

bash-4.4# nano HR.sql

#CREATE DATABASE HR CHARACTER SET utf8 COLLATE utf8_general_ci;
#use HR;

NOTA: el caràcter coixinet (#) és un comentari.

Mira quin és el contingut del script: veuràs fàcilment tots els creates i els inserts.

I ara ja podem executar el script:

# mysql -u alumne -pkeiL2lai HR -f < /etc/HR.sql > /etc/control_errors.log 2>&1

# cat control_errors.log

La segona manera de fer-ho:

$ docker exec -it mysql_m02bd mysql -u alumne -pkeiL2lai HR

mysql> \. /etc/HR.sql
o bé
mysql> source /etc/HR.sql

Per tant, podem potinejar amb les dades tant com vulguem, que sempre podrem regenerar la base de dades. I com a última solució, recorda que sempre et pots tornar a descarregar el docker.

Insert (todo)

INSERT INTO dependents( first_name, last_name, relationship, employee_id) VALUES ( 'Dustin', 'Johnson', 'Child', 178 );

# comprovació:
SELECT * FROM dependents WHERE employee_id = 178;

INSERT INTO dependents( first_name, last_name, relationship, employee_id) VALUES 
( 'Cameron', 'Bell', 'Child', 192 ), 
( 'Michelle', 'Bell', 'Child', 192 );

SELECT * FROM dependents WHERE employee_id = 192;

Per tal de fer-ho necessitem la taula dependents_archive que tingui la mateixa estructura que dependents.
(fer-ho)

INSERT INTO dependents_archive SELECT * FROM dependents;


Update (todo)

UPDATE employees SET last_name = 'Lopez' WHERE employee_id = 192;

# comprovació:
SELECT employee_id, first_name, last_name FROM employees WHERE employee_id = 192;

UPDATE dependents SET last_name = 'Lopez' WHERE employee_id = 192;

# fem un update amb una subquery

UPDATE dependents SET last_name =
( SELECT last_name FROM employees WHERE employee_id = dependents.employee_id);

Delete (todo)

# comprovació:
SELECT count(*) FROM dependents WHERE dependent_id = 16;

DELETE FROM dependents WHERE dependent_id = 16;

# comprovació:
SELECT count(*) FROM dependents WHERE dependent_id = 16;


DELETE FROM dependents WHERE employee_id IN(100 , 101, 102);

DELETE FROM employees WHERE employee_id = 192;
DELETE FROM dependents WHERE employee_id = 192;

foreign key constraint


creat per Joan Quintana Compte, desembre 2021