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 39: Línia 39:
 
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.
 
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=
+
=Insert (todo)=
 
<pre>
 
<pre>
 
INSERT INTO dependents( first_name, last_name, relationship, employee_id) VALUES ( 'Dustin', 'Johnson', 'Child', 178 );
 
INSERT INTO dependents( first_name, last_name, relationship, employee_id) VALUES ( 'Dustin', 'Johnson', 'Child', 178 );
Línia 60: Línia 60:
  
  
=Update=
+
=Update (todo)=
 
<pre>
 
<pre>
 
UPDATE employees SET last_name = 'Lopez' WHERE employee_id = 192;
 
UPDATE employees SET last_name = 'Lopez' WHERE employee_id = 192;
Línia 74: Línia 74:
 
( SELECT last_name FROM employees WHERE employee_id = dependents.employee_id);
 
( SELECT last_name FROM employees WHERE employee_id = dependents.employee_id);
 
</pre>
 
</pre>
=Delete=
+
=Delete (todo)=
 
<pre>
 
<pre>
 
# comprovació:
 
# comprovació:

Revisió del 09:12, 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# 

# cd /etc
# 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:

# nano HR.sql
#CREATE DATABASE HR CHARACTER SET utf8 COLLATE utf8_general_ci;
#use HR;

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