129 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			129 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: SQL Update Query | |||
|  | localeTitle: Запрос на обновление SQL | |||
|  | --- | |||
|  | ## Запрос на обновление SQL
 | |||
|  | 
 | |||
|  | ### Что может сделать запрос Update
 | |||
|  | 
 | |||
|  | Запрос на обновление дает программисту DBA или SQL возможность обновлять многие записи одной командой. | |||
|  | 
 | |||
|  | Важный совет по безопасности! Всегда имейте резервную копию того, что вы собираетесь изменить, прежде чем вы его измените! | |||
|  | 
 | |||
|  | Это руководство будет: | |||
|  | 
 | |||
|  | *   добавить новое поле в таблицу учеников | |||
|  | *   проверить логику, чтобы обновить это поле с помощью назначенного школьным адресом электронной почты | |||
|  | *   обновите новое поле. | |||
|  | 
 | |||
|  | Вот стол студента, когда мы начинаем этот процесс | |||
|  | 
 | |||
|  | ```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)  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### Измените таблицу и добавьте новое поле
 | |||
|  | 
 | |||
|  | ```sql | |||
|  |     ALTER TABLE `fcc_sql_guides_database`.`student`  | |||
|  |     ADD COLUMN `schoolEmailAdr` VARCHAR(125) NULL AFTER `programOfStudy`;  | |||
|  | ``` | |||
|  | 
 | |||
|  | Выполняется таблица ученика после изменения. | |||
|  | 
 | |||
|  | ```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)  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### ИСПЫТАНИЕ логики (ОЧЕНЬ важный шаг!)
 | |||
|  | 
 | |||
|  | ```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)  | |||
|  | ``` | |||
|  | 
 | |||
|  | _Заметка о concat (): в MySQL эта команда используется для объединения строк, а не в других версиях SQL (проверьте свое руководство). В этом использовании он работает следующим образом: Подстрока поля FullName до, но не включая первое пространство, объединяется с «@ someSchool.edu». В реальном мире это было бы намного сложнее, и вам нужно было бы убедиться, что адрес электронной почты уникален._ | |||
|  | 
 | |||
|  | ### Выполнение обновления
 | |||
|  | 
 | |||
|  | Мы притворимся, что это то, что мы хотим, и обновим таблицу этой информацией: | |||
|  | 
 | |||
|  | ```sql | |||
|  | UPDATE student SET schoolEmailAdr = concat(substring(FullName,1,instr(FullName," ")-1),"@someSchool.edu")  | |||
|  |  WHERE schoolEmailAdr is NULL;  | |||
|  | ``` | |||
|  | 
 | |||
|  | Успех! | |||
|  | 
 | |||
|  | ```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)  | |||
|  | ``` | |||
|  | 
 | |||
|  | Как и для всех этих SQL-вещей, MUCH MORE им больше, чем в этом вводном руководстве. | |||
|  | 
 | |||
|  | Надеюсь, это, по крайней мере, даст вам достаточно, чтобы начать. | |||
|  | 
 | |||
|  | Пожалуйста, ознакомьтесь с руководством для своего менеджера баз данных и получайте удовольствие от различных вариантов. |