# Databases

### Learning Objectives <a href="#learning-objectives" id="learning-objectives"></a>

By the end of this lesson students should be able to

* Explain why databases are needed in Web Development
* Define what SQL is and what it is used for
* Describe what `table`, `rows` and `columns` are used for in a relational database
* Install and create a database using PostgreSQL
* Create a table in a database using PostgreSQL
* Insert data into a table using PostgreSQL
* Retrieve data from a table using PostgreSQL
* Retrieve data from a table using conditionals in PostgreSQL
* List the different kinds of data that can be held in a PostgreSQL database
* Add and remove columns in a pre-existing table using PostgreSQL using `ALTER`
* Rename tables and columns in a pre-existing table using PostgreSQL using `DELETE`
* Update rows in a pre-existing table using PostgreSQL using `UPDATE`
* Combine tables together using PostgreSQL using `INNER JOIN`
* Connect a PostgreSQL database to a NodeJS application
* Retrieve data from a PostgreSQL database in a NodeJS application
* Create an API endpoint that can add data to a database
* Write code that effectively validates data before adding it to a database
* Be aware of the dangers of SQL injection attacks, and how to avoid them
* Create an API endpoint that can retrieve data from a database with multiple parameters
* Create an API endpoint that can update data in a database
* Create an API endpoint that can delete data in a database

## Lessons

{% content-ref url="databases/1-introduction-to-sql" %}
[1-introduction-to-sql](https://volunteers.migracode.org/coding-course/class-information/teaching-instructions/databases/1-introduction-to-sql)
{% endcontent-ref %}

{% content-ref url="databases/2-sql-with-node" %}
[2-sql-with-node](https://volunteers.migracode.org/coding-course/class-information/teaching-instructions/databases/2-sql-with-node)
{% endcontent-ref %}

{% content-ref url="databases/3-crud-with-sql-and-node" %}
[3-crud-with-sql-and-node](https://volunteers.migracode.org/coding-course/class-information/teaching-instructions/databases/3-crud-with-sql-and-node)
{% endcontent-ref %}
