122 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			122 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: SQL Update Query
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								## SQL Update Query
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### What an Update query can do
							 | 
						||
| 
								 | 
							
								An update query gives the DBA or SQL-using programmer the ability to update many records with one command. 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Important Safety Tip! Always have a backup copy of what you are about to change BEFORE you change it!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This guide will:  
							 | 
						||
| 
								 | 
							
								* add a new field to the student table
							 | 
						||
| 
								 | 
							
								* test the logic to update that field with a school assigned email address
							 | 
						||
| 
								 | 
							
								* update the new field.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Here is the student table as we start this process
							 | 
						||
| 
								 | 
							
								```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)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Alter the table and add a new field
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```sql
							 | 
						||
| 
								 | 
							
								    ALTER TABLE `fcc_sql_guides_database`.`student` 
							 | 
						||
| 
								 | 
							
									ADD COLUMN `schoolEmailAdr` VARCHAR(125) NULL AFTER `programOfStudy`;
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The student table after the alter is executed.
							 | 
						||
| 
								 | 
							
								```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)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### TESTING the logic (VERY important step!)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```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)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								*A note about concat(): in MySQL this command is used to combined strings, not so in other SQL versions (check your manual).  In this usage it works like this: The substring of the FullName field up to but not including the first space is combined with "@someSchool.edu".  In the real world this would HAVE TO be much more complex and you would need to ensure that the email address is unique.*
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Doing the update
							 | 
						||
| 
								 | 
							
								We'll pretend that this is what we want and update the table with this information:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```sql
							 | 
						||
| 
								 | 
							
								UPDATE student SET schoolEmailAdr = concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu")
							 | 
						||
| 
								 | 
							
								WHERE schoolEmailAdr is NULL;
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Success!
							 | 
						||
| 
								 | 
							
								```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)
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								As with all of these SQL things there is MUCH MORE to them than what's in this introductory guide.  
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								I hope this at least gives you enough to get started.  
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Please see the manual for your database manager and have fun trying different options yourself.
							 |