129 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			6.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: SQL Update Query
 | |
| localeTitle: Consulta de actualización de SQL
 | |
| ---
 | |
| ## Consulta de actualización de SQL
 | |
| 
 | |
| ### Lo que puede hacer una consulta de actualización
 | |
| 
 | |
| Una consulta de actualización le da al programador que usa DBA o SQL la capacidad de actualizar muchos registros con un solo comando.
 | |
| 
 | |
| ¡Importante consejo de seguridad! ¡Siempre tenga una copia de respaldo de lo que está a punto de cambiar ANTES de cambiarlo!
 | |
| 
 | |
| Esta guía:
 | |
| 
 | |
| *   agregar un nuevo campo a la mesa de estudiantes
 | |
| *   prueba la lógica para actualizar ese campo con una dirección de correo electrónico asignada por la escuela
 | |
| *   actualizar el nuevo campo
 | |
| 
 | |
| Aquí está la tabla de estudiantes al comenzar este proceso.
 | |
| 
 | |
| ```sql
 | |
| SELECT * FROM student; 
 | |
| ```
 | |
| 
 | |
| ```text
 | |
| +-----------+------------------------+-----------+------------------+---------------------+---------------------+ 
 | |
|  | studentID | FullName               | sat_score | programOfStudy   | rcd_Created         | rcd_Updated         | 
 | |
|  +-----------+------------------------+-----------+------------------+---------------------+---------------------+ 
 | |
|  |         1 | Monique Davis          |       400 | Literature       | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | 
 | |
|  |         2 | Teri Gutierrez         |       800 | Programming      | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | 
 | |
|  |         3 | Spencer Pautier        |      1000 | Programming      | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | 
 | |
|  |         4 | Louis Ramsey           |      1200 | Programming      | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | 
 | |
|  |         5 | Alvin Greene           |      1200 | Programming      | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | 
 | |
|  |         6 | Sophie Freeman         |      1200 | Programming      | 2017-08-16 15:34:50 | 2017-08-16 15:34:50 | 
 | |
|  |         7 | Edgar Frank "Ted" Codd |      2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 | 
 | |
|  |         8 | Donald D. Chamberlin   |      2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 | 
 | |
|  |         9 | Raymond F. Boyce       |      2400 | Computer Science | 2017-08-16 15:35:33 | 2017-08-16 15:35:33 | 
 | |
|  +-----------+------------------------+-----------+------------------+---------------------+---------------------+ 
 | |
|  9 rows in set (0.00 sec) 
 | |
| ```
 | |
| 
 | |
| ### Alterar la tabla y agregar un nuevo campo.
 | |
| 
 | |
| ```sql
 | |
|     ALTER TABLE `fcc_sql_guides_database`.`student` 
 | |
|     ADD COLUMN `schoolEmailAdr` VARCHAR(125) NULL AFTER `programOfStudy`; 
 | |
| ```
 | |
| 
 | |
| La tabla de alumnos después de la alteración se ejecuta.
 | |
| 
 | |
| ```text
 | |
| mysql> SELECT FullName, sat_score, programOfStudy, schoolEmailAdr FROM student; 
 | |
|  +------------------------+-----------+------------------+----------------+ 
 | |
|  | FullName               | sat_score | programOfStudy   | schoolEmailAdr | 
 | |
|  +------------------------+-----------+------------------+----------------+ 
 | |
|  | Monique Davis          |       400 | Literature       | NULL           | 
 | |
|  | Teri Gutierrez         |       800 | Programming      | NULL           | 
 | |
|  | Spencer Pautier        |      1000 | Programming      | NULL           | 
 | |
|  | Louis Ramsey           |      1200 | Programming      | NULL           | 
 | |
|  | Alvin Greene           |      1200 | Programming      | NULL           | 
 | |
|  | Sophie Freeman         |      1200 | Programming      | NULL           | 
 | |
|  | Edgar Frank "Ted" Codd |      2400 | Computer Science | NULL           | 
 | |
|  | Donald D. Chamberlin   |      2400 | Computer Science | NULL           | 
 | |
|  | Raymond F. Boyce       |      2400 | Computer Science | NULL           | 
 | |
|  +------------------------+-----------+------------------+----------------+ 
 | |
|  9 rows in set (0.00 sec) 
 | |
| ```
 | |
| 
 | |
| ### PRUEBA de la lógica (paso MUY importante!)
 | |
| 
 | |
| ```sql
 | |
| SELECT FullName, instr(FullName," ") AS firstSpacePosition, 
 | |
|  concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu") AS schoolEmail 
 | |
|  FROM student; 
 | |
| ```
 | |
| 
 | |
| ```text
 | |
| +------------------------+--------------------+------------------------+ 
 | |
|  | FullName               | firstSpacePosition | schoolEmail            | 
 | |
|  +------------------------+--------------------+------------------------+ 
 | |
|  | Monique Davis          |                  8 | Monique@someSchool.edu | 
 | |
|  | Teri Gutierrez         |                  5 | Teri@someSchool.edu    | 
 | |
|  | Spencer Pautier        |                  8 | Spencer@someSchool.edu | 
 | |
|  | Louis Ramsey           |                  6 | Louis@someSchool.edu   | 
 | |
|  | Alvin Greene           |                  6 | Alvin@someSchool.edu   | 
 | |
|  | Sophie Freeman         |                  7 | Sophie@someSchool.edu  | 
 | |
|  | Edgar Frank "Ted" Codd |                  6 | Edgar@someSchool.edu   | 
 | |
|  | Donald D. Chamberlin   |                  7 | Donald@someSchool.edu  | 
 | |
|  | Raymond F. Boyce       |                  8 | Raymond@someSchool.edu | 
 | |
|  +------------------------+--------------------+------------------------+ 
 | |
|  9 rows in set (0.00 sec) 
 | |
| ```
 | |
| 
 | |
| _Una nota sobre concat (): en MySQL, este comando se usa para combinar cadenas, no así en otras versiones de SQL (consulte su manual). En este uso funciona así: la subcadena del campo FullName hasta el primer espacio, pero sin incluirlo, se combina con "@ someSchool.edu". En el mundo real, esto DEBERÍA ser mucho más complejo y debería asegurarse de que la dirección de correo electrónico sea única._
 | |
| 
 | |
| ### Haciendo la actualizacion
 | |
| 
 | |
| Pretenderemos que esto es lo que queremos y actualizaremos la tabla con esta información:
 | |
| 
 | |
| ```sql
 | |
| UPDATE student SET schoolEmailAdr = concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu") 
 | |
|  WHERE schoolEmailAdr is NULL; 
 | |
| ```
 | |
| 
 | |
| ¡Éxito!
 | |
| 
 | |
| ```text
 | |
| mysql> SELECT FullName, sat_score, programOfStudy, schoolEmailAdr FROM student; 
 | |
|  +------------------------+-----------+------------------+------------------------+ 
 | |
|  | FullName               | sat_score | programOfStudy   | schoolEmailAdr         | 
 | |
|  +------------------------+-----------+------------------+------------------------+ 
 | |
|  | Monique Davis          |       400 | Literature       | Monique@someSchool.edu | 
 | |
|  | Teri Gutierrez         |       800 | Programming      | Teri@someSchool.edu    | 
 | |
|  | Spencer Pautier        |      1000 | Programming      | Spencer@someSchool.edu | 
 | |
|  | Louis Ramsey           |      1200 | Programming      | Louis@someSchool.edu   | 
 | |
|  | Alvin Greene           |      1200 | Programming      | Alvin@someSchool.edu   | 
 | |
|  | Sophie Freeman         |      1200 | Programming      | Sophie@someSchool.edu  | 
 | |
|  | Edgar Frank "Ted" Codd |      2400 | Computer Science | Edgar@someSchool.edu   | 
 | |
|  | Donald D. Chamberlin   |      2400 | Computer Science | Donald@someSchool.edu  | 
 | |
|  | Raymond F. Boyce       |      2400 | Computer Science | Raymond@someSchool.edu | 
 | |
|  +------------------------+-----------+------------------+------------------------+ 
 | |
|  9 rows in set (0.00 sec) 
 | |
| ```
 | |
| 
 | |
| Al igual que con todas estas cosas de SQL, hay MUCHO MÁS que lo que está en esta guía introductoria.
 | |
| 
 | |
| Espero que al menos esto te dé suficiente para empezar.
 | |
| 
 | |
| Consulte el manual de su administrador de base de datos y diviértase probando diferentes opciones usted mismo. |