| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | --- | 
					
						
							|  |  |  | title: SQL Alter Table Statement | 
					
						
							|  |  |  | --- | 
					
						
							|  |  |  | ## SQL Guide - ALTER TABLE
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## Introduction
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This guide will introduce you to and attempt to explain some of the basics of the SQL alter table functions within a relational database. | 
					
						
							| 
									
										
										
										
											2019-06-28 12:51:21 +05:30
										 |  |  | ALTER TABLE statement is used to add, remove, change datatype or rename columns. It can be also used to add or remove the constraints of the table. | 
					
						
							|  |  |  | **IMPORTANT Safety Tip:  ALWAYS backup your data before making changes!** | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-28 12:51:21 +05:30
										 |  |  | We will be using MySQL for all examples throughout this freeCodeCamp SQL guide. The reasons for selecting MySQL are  | 
					
						
							|  |  |  | 1) it is very commonly used on websites for the backend database,  | 
					
						
							|  |  |  | 2) it's free, and is fun and easy to use. | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Covered in this Guide 
 | 
					
						
							|  |  |  | We will use the tables created in the “CREATE TABLE” guide.  Feel free to review that guide if you are not familiar with creating a table. | 
					
						
							| 
									
										
										
										
											2019-06-28 12:51:21 +05:30
										 |  |  | * Adding a new column  | 
					
						
							|  |  |  | * Change column name | 
					
						
							|  |  |  | * Change column definition | 
					
						
							|  |  |  | * Remove a Column | 
					
						
							|  |  |  | * Rename the Table | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-28 12:51:21 +05:30
										 |  |  | ## Alter Table:
 | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-28 12:51:21 +05:30
										 |  |  | We will use the student table created in the “CREATE TABLE” guide. | 
					
						
							|  |  |  | To view all column names and their description of student Table, we will use below command through out this guide. | 
					
						
							|  |  |  | ```sql | 
					
						
							|  |  |  | desc student; | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-28 12:51:21 +05:30
										 |  |  | ``` | 
					
						
							|  |  |  | Result :  | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-28 12:51:21 +05:30
										 |  |  | ```text | 
					
						
							|  |  |  | +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  | | column_name        | column_default       | is_nullable  | column_type | key        | | 
					
						
							|  |  |  | +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  | | studentID          | NULL                 | NO           | int(11)     | PRI        | | 
					
						
							|  |  |  | | FullName           | NULL                 | YES          | varchar(90) |            | | 
					
						
							|  |  |  | | studentIO          | NULL                 | YES          | int(3)      |            | | 
					
						
							|  |  |  | | sat_score          | NULL                 | YES          | int(4)      |            | | 
					
						
							|  |  |  | | timeStampA         | CURRENT TIMESTAMP    | NO           | timestamp   |            | | 
					
						
							|  |  |  | | timeStampB         | 0000-00-00 00:00:00  | NO           | timestamp   |            | | 
					
						
							|  |  |  | +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							| 
									
										
										
										
											2019-03-05 20:42:16 +02:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2019-06-28 12:51:21 +05:30
										 |  |  | * Adding a new column : | 
					
						
							|  |  |  |   Let's add a new column, emailAddress. | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   alter table student add column emailAddress varchar(30) NULL ; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   Result :  | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   desc student; | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   ```text | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | column_name        | column_default       | is_nullable  | column_type | key        | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | studentID          | NULL                 | NO           | int(11)     | PRI        | | 
					
						
							|  |  |  |   | FullName           | NULL                 | YES          | varchar(90) |            | | 
					
						
							|  |  |  |   | studentIO          | NULL                 | YES          | int(3)      |            | | 
					
						
							|  |  |  |   | sat_score          | NULL                 | YES          | int(4)      |            | | 
					
						
							|  |  |  |   | timeStampA         | CURRENT TIMESTAMP    | NO           | timestamp   |            | | 
					
						
							|  |  |  |   | timeStampB         | 0000-00-00 00:00:00  | NO           | timestamp   |            | | 
					
						
							|  |  |  |   | emailAddress       | NULL                 | YES          | varchar(30) |            | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | * Change column name : | 
					
						
							|  |  |  |   Let's Change the column name sat_score to satScore . | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   alter table student change sat_score satScore int(4) NULL ; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   Result :  | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   desc student; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   ```text | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | column_name        | column_default       | is_nullable  | column_type | key        | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | studentID          | NULL                 | NO           | int(11)     | PRI        | | 
					
						
							|  |  |  |   | FullName           | NULL                 | YES          | varchar(90) |            | | 
					
						
							|  |  |  |   | studentIO          | NULL                 | YES          | int(3)      |            | | 
					
						
							|  |  |  |   | satScore           | NULL                 | YES          | int(4)      |            | | 
					
						
							|  |  |  |   | timeStampA         | CURRENT TIMESTAMP    | NO           | timestamp   |            | | 
					
						
							|  |  |  |   | timeStampB         | 0000-00-00 00:00:00  | NO           | timestamp   |            | | 
					
						
							|  |  |  |   | emailAddress       | NULL                 | YES          | varchar(30) |            | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | * Change column definition : | 
					
						
							|  |  |  |   Let's Change the emailAddress field size from varchar(30) to varchar(50). | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   alter table student change emailAddress emailAddress varchar(50) NULL ; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   Result :  | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   desc student; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   ```text | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | column_name        | column_default       | is_nullable  | column_type | key        | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | studentID          | NULL                 | NO           | int(11)     | PRI        | | 
					
						
							|  |  |  |   | FullName           | NULL                 | YES          | varchar(90) |            | | 
					
						
							|  |  |  |   | studentIO          | NULL                 | YES          | int(3)      |            | | 
					
						
							|  |  |  |   | satScore           | NULL                 | YES          | int(4)      |            | | 
					
						
							|  |  |  |   | timeStampA         | CURRENT TIMESTAMP    | NO           | timestamp   |            | | 
					
						
							|  |  |  |   | timeStampB         | 0000-00-00 00:00:00  | NO           | timestamp   |            | | 
					
						
							|  |  |  |   | emailAddress       | NULL                 | YES          | varchar(50) |            | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | * Remove a Column : | 
					
						
							|  |  |  |   Let's remove emailAddress column which we added earlier. | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   alter table student drop column emailAddress ; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   Result : | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   desc student; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   ```text | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | column_name        | column_default       | is_nullable  | column_type | key        | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | studentID          | NULL                 | NO           | int(11)     | PRI        | | 
					
						
							|  |  |  |   | FullName           | NULL                 | YES          | varchar(90) |            | | 
					
						
							|  |  |  |   | studentIO          | NULL                 | YES          | int(3)      |            | | 
					
						
							|  |  |  |   | satScore           | NULL                 | YES          | int(4)      |            | | 
					
						
							|  |  |  |   | timeStampA         | CURRENT TIMESTAMP    | NO           | timestamp   |            | | 
					
						
							|  |  |  |   | timeStampB         | 0000-00-00 00:00:00  | NO           | timestamp   |            | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  | * Rename the Table : | 
					
						
							|  |  |  |   Let's rename the table student to students.  | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   alter table student rename to students ; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ``` | 
					
						
							|  |  |  |   Result : | 
					
						
							|  |  |  |   we can also use describe command (alternative to desc) to see table description. | 
					
						
							|  |  |  |   ```sql | 
					
						
							|  |  |  |   describe students | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-28 12:51:21 +05:30
										 |  |  |   ``` | 
					
						
							|  |  |  |   ```text | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | column_name        | column_default       | is_nullable  | column_type | column_key | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   | studentID          | NULL                 | NO           | int(11)     | PRI        | | 
					
						
							|  |  |  |   | FullName           | NULL                 | YES          | varchar(90) |            | | 
					
						
							|  |  |  |   | studentIO          | NULL                 | YES          | int(3)      |            | | 
					
						
							|  |  |  |   | satScore           | NULL                 | YES          | int(4)      |            | | 
					
						
							|  |  |  |   | timeStampA         | CURRENT TIMESTAMP    | NO           | timestamp   |            | | 
					
						
							|  |  |  |   | timeStampB         | 0000-00-00 00:00:00  | NO           | timestamp   |            | | 
					
						
							|  |  |  |   +--------------------+----------------------+--------------+-------------+------------+ | 
					
						
							|  |  |  |   ``` | 
					
						
							| 
									
										
										
										
											2018-10-12 15:37:13 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | There is much more that can be done, check the manual of your database management software to learn more. | 
					
						
							|  |  |  | 
 |