Files
freeCodeCamp/guide/english/sql/sql-alter-table-statement/index.md

170 lines
7.9 KiB
Markdown
Raw Normal View History

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.
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
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.
* Adding a new column
* Change column name
* Change column definition
* Remove a Column
* Rename the Table
2018-10-12 15:37:13 -04:00
## Alter Table:
2018-10-12 15:37:13 -04:00
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
```
Result :
2018-10-12 15:37:13 -04:00
```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 | |
+--------------------+----------------------+--------------+-------------+------------+
```
* 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
```
```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.