# SQL Fundamentals
> By Gerard Balaoro. 1st Draft.
## Course Description
This course attempts to cover the basics of practical uses of SQL technology and equip the learners with the fundamental understanding of databases and it's concepts, as well as the necessary programming skills that would allow them to design and manage working relational database systems and interacting with them using Structured Query Language (SQL).
## Prerequisites
This course does not have any prerequisites.
## Objectives
By the end of this course, all learners must be able to:
* Demonstrate an understanding of SQL, database servers, databases, tables, and queries.
* Interact with an SQL database through command line or web interface.
* Create a basic database schema demonstrating different types of relationships.
* Add, retrieve, update, and delete records from a database using queries that demonstrates the WHERE, ORDER BY, JOIN ON, and LIKE clauses.
* Design their own database applying all the concepts learned from this course.
## Projects
* **Demo Project** - a database for a blog (with users, posts, categories, and tags feature).
* **Independent Project** - a database for a music app (with artists, albums, and songs)
## Activities
* Weekly coding challenges
- Participants will be tasked to solve a small problem using the concepts learned throughout the week.
* Code reading assignments
- Participants will be tasked to explain and document a snippet of code assigned to them.
## Content
1. Introduction to SQL
* What is SQL?
* Servers, Databases, and Data Tables
* Setting up your SQL development environment
2. Basic SQL Syntax
* What is are Queries?
* Types of SQL Queries
* Parts of an SQL Query
* Executing queries using the command line
* Executing queries using a Web Interface (PHPMyAdmin)
3. Setting Up the Project
* Object-oriented design
* Visualizing your database
5. Data Definition Queries
* Creating, deleting, and interacting with databases
* Creating tables and introduction to SQL data types
* Altering and deleting tables
4. Data Manipulation Queries
* What is CRUD?
* Adding records to tables
* Retrieving data from tables
* Updating records from tables
* Deleting records from tables
5. Table Relationships
* Types of data relationships
* Foreign and reference keys
* Retrieving data from multiple tables
* Many-to-many relationships and junction tables
## Technologies
* MariaDB / MySQL (Included in XAMPP bundle)
* PHPMyAdmin (Included in XAMPP bundle)
* Visual Studio Code / Sublime Text
* Command Line (cmd, git-bash, bash)
## References
* [MySQL Reference Manual](https://dev.mysql.com/doc/refman/8.0/en/)
* [Basic MySQL Tutorial](https://www.mysqltutorial.org/basic-mysql-tutorial.aspx)
* [SQL Tutorial by w3schools](https://www.w3schools.com/sql/)