diff --git a/HOW TO SQL V2.sql b/HOW TO SQL V2.sql
new file mode 100644
index 0000000..1fd348e
--- /dev/null
+++ b/HOW TO SQL V2.sql
@@ -0,0 +1,17 @@
+-- ===============================================================================================================
+-- HOW TO --------------------------------------------------------------------------------------------------------
+-- How to display all availables tables in a database
+USE database_name;
+SHOW TABLES;
+-- ---------------------------------------------------------------------------------------------------------------
+-- How to display all availables data in a table
+USE database_name;
+SELECT * FROM table_name;
+-- ---------------------------------------------------------------------------------------------------------------
+-- How to
+DESCRIBE table_name;
+SHOW COLUMNS FROM table_name;
+-- ===============================================================================================================
+-- QUESTIONS!
+
+-- ===============================================================================================================
diff --git a/HOW TO SQL.sql b/HOW TO SQL.sql
new file mode 100644
index 0000000..22f95ac
--- /dev/null
+++ b/HOW TO SQL.sql
@@ -0,0 +1,38 @@
+-- ===============================================================================================================
+-- HOW TO --------------------------------------------------------------------------------------------------------
+-- How to drop a table from a database
+DROP TABLE `table_name`;
+-- ---------------------------------------------------------------------------------------------------------------
+-- How to alter a table and drop a foreign key
+ALTER TABLE `table_name`
+DROP FOREIGN KEY `foreign_key_name`;
+-- ---------------------------------------------------------------------------------------------------------------
+
+-- How to add constraints (Foreign keys to a table)
+-- only add to the one that has a many or depends on it
+-- Alter the table with constraints (relationships)
+ALTER TABLE `table_name`
+ADD CONSTRAINT `constraint_name` FOREIGN KEY (`foreign key name`) REFERENCES source_table(`foreign key name`),
+ADD CONSTRAINT `constraint_name` FOREIGN KEY (`foreign key name`) REFERENCES source_table(`foreign key name`),
+ADD CONSTRAINT `constraint_name` FOREIGN KEY (`foreign key name`) REFERENCES source_table(`foreign key name`);
+-- ---------------------------------------------------------------------------------------------------------------
+-- How to seed data into a table
+ -- download the table you want to seed from as a .csv file
+ -- import it into your database
+ -- take data columns from it to the column of the table u wanna seed it in
+ -- INSERT DATA INTO TABLE INVOICES from different tables
+INSERT INTO TABLE ('column_1', 'column_2', 'column_3')
+SELECT 'column_1' FROM 'source_1,
+SELECT 'column_2' FROM 'source_2,
+SELECT 'column_3' FROM 'source_3,
+GROUP BY
+ 'column_1',
+ 'column_2',
+ 'column_3';
+-- ===============================================================================================================
+-- QUESTIONS!
+-- When to use VARCHAR or CHAR?
+-- What's the difference between CHAR, VARCHAR, TEXT?
+-- Storage engine must support FK? What does it mean exactly?
+SHOW TABLE STATUS WHERE Name = 'table_name';
+-- ===============================================================================================================
diff --git a/challenge solved.sql b/challenge solved.sql
new file mode 100644
index 0000000..c1366a2
--- /dev/null
+++ b/challenge solved.sql
@@ -0,0 +1,84 @@
+-- ===============================================================================================================
+-- 1. Display all available tables in the Sakila database.
+USE sakila;
+SHOW TABLES;
+-- ===============================================================================================================
+-- 2. Retrieve all the data from the tables `actor`, `film` and `customer`.
+SELECT * FROM actor;
+SELECT * FROM film; -- original_language_id is null?
+SELECT * FROM customer;
+-- ===============================================================================================================
+-- 3. Retrieve the following columns from their respective tables:
+--
+-- 3.1 Titles of all films from the `film` table
+SELECT title FROM film;
+--
+-- 3.2 List of languages used in films, with the column aliased as `language` from the `language` table
+SELECT language_id AS language FROM film;
+--
+-- 3.3 List of first names of all employees from the `staff` table
+SELECT first_name AS first_name FROM staff;
+
+-- ===============================================================================================================
+-- 4. Retrieve unique release years.
+SELECT DISTINCT release_year FROM film; -- same as python df[column].unique()
+-- ===============================================================================================================
+-- 5. Counting records for database insights: COUNT
+--
+-- 5.1 Determine the number of stores that the company has.
+SELECT * FROM store;
+SELECT COUNT(store_id) AS nbr_stores FROM store;
+--
+-- 5.2 Determine the number of employees that the company has.
+SELECT * FROM staff;
+SELECT COUNT(staff_id) AS nbr_employees FROM staff;
+--
+-- 5.3 Determine how many films are available for rent and how many have been rented.
+SELECT * FROM film;
+DESCRIBE film;
+
+-- struggled a bit with this one
+--
+-- Number of all films
+SELECT COUNT(*) AS nbr_films_all FROM film;
+SELECT * FROM film;
+--
+-- Number of films available for rent
+SELECT * FROM inventory;
+SELECT DISTINCT film_id FROM inventory;
+SELECT COUNT(DISTINCT film_id) AS nbr_films_available_for_rent FROM inventory;
+--
+-- Number of films that have been rented
+SELECT * FROM rental;
+SELECT COUNT(DISTINCT rental_id) AS number_of_films_rented
+FROM rental;
+
+--
+-- 5.4 Determine the number of distinct last names of the actors in the database.
+SELECT DISTINCT last_name AS actors_last_name FROM actor;
+SELECT COUNT(DISTINCT last_name) AS nbr_actors_last_name FROM actor; -- i mixed up the distinct before count
+-- ===============================================================================================================
+-- 6. Retrieve the 10 longest films.
+-- method 1 : ORDER BY / DESC LIMIT 10
+SELECT * FROM film ORDER BY length DESC LIMIT 10;
+-- method 2 : WHERE column = (SELECT MAX(column)FROM table_name)
+SELECT * FROM film WHERE length = (SELECT MAX(length) FROM film);
+-- ===============================================================================================================
+-- 7. Use filtering techniques in order to:
+--
+-- 7.1 Retrieve all actors with the first name "SCARLETT".
+SELECT * FROM actor;
+SELECT * FROM actor WHERE first_name = 'SCARLETT';
+--
+-- 7.2 Retrieve all movies that have ARMAGEDDON in their title and have a duration longer than 100 minutes.
+-- **Hint: use `LIKE` operator. [More information here.](https://www.w3schools.com/sql/sql_like.asp)**
+SELECT * FROM film WHERE title LIKE 'ARMAGEDDON'; -- false gotta use regex
+SELECT * FROM film WHERE title LIKE '%ARMAGEDDON%';
+SELECT * FROM film WHERE title LIKE '%ARMAGEDDON%' AND length > 100;
+--
+-- 7.3 Determine the number of films that include Behind the Scenes content
+SELECT * FROM film;
+SELECT * FROM film WHERE special_features LIKE '%Behind the Scenes%';
+SELECT COUNT(*) FROM film WHERE special_features LIKE '%Behind the Scenes%';
+SELECT COUNT(*) AS films_behind_the_scenes FROM film WHERE special_features LIKE '%Behind the Scenes%';
+-- ===============================================================================================================
diff --git a/readme.ipynb b/readme.ipynb
new file mode 100644
index 0000000..41a3bba
--- /dev/null
+++ b/readme.ipynb
@@ -0,0 +1,382 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "d55664dc",
+ "metadata": {},
+ "source": [
+ "# LAB | SQL Basic Queries\n",
+ "\n",
+ "\n",
+ " \n",
+ " Learning Goals
\n",
+ "
\n",
+ "\n",
+ " This lab allows you to practice and apply the concepts and techniques taught in class. \n",
+ "\n",
+ " Upon completion of this lab, you will be able to:\n",
+ " \n",
+ "- Use SQL queries to extract insights from the data and answer research questions or problem statements, using techniques such as selecting columns with SELECT clause, filtering with WHERE clause, sorting data with ORDER BY clause, limiting results with LIMIT, using DISTINCT to retrieve unique values, and counting records with COUNT.\n",
+ "\n",
+ "\n",
+ "
\n",
+ "
\n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ " \n",
+ " Prerequisites
\n",
+ "
\n",
+ "\n",
+ "Before this starting this lab, you should have learnt about:\n",
+ "\n",
+ "- SELECT, FROM, ORDER BY, LIMIT, WHERE clauses.\n",
+ "- DISTINCT keyword to return only unique values, AS keyword for using aliases, COUNT function for counting records.\n",
+ "
\n",
+ "
\n",
+ "\n",
+ " \n",
+ "\n",
+ "---\n",
+ "\n",
+ "## Introduction\n",
+ "\n",
+ "Welcome to the SQL Basic Queries lab!\n",
+ "\n",
+ "In this lab, you will practice how to use SQL queries to extract insights from the [Sakila](https://dev.mysql.com/doc/sakila/en/) database which contains information about movie rentals. \n",
+ "\n",
+ "In this lab, you'll practice the basics of SQL, including how to select data from tables, filter results using the WHERE clause, aggregate data with functions like COUNT, and sort results using the ORDER BY clause. \n",
+ "\n",
+ "Throughout the lab, you will work with two SQL query files: `sakila-schema.sql`, which creates the database schema, and `sakila-data.sql`, which inserts the data into the database. You can download the necessary files locally by following the steps listed in [Sakila sample database - installation](https://dev.mysql.com/doc/sakila/en/sakila-installation.html). \n",
+ "\n",
+ "You can also refer to the Entity Relationship Diagram (ERD) of the database to guide your analysis:\n",
+ "\n",
+ "
\n",
+ "\n",
+ "\n",
+ "\n",
+ "
\n",
+ "\n",
+ "---\n",
+ "\n",
+ "## Challenge\n",
+ "Use the sakila database to do the following tasks:\n",
+ "\n",
+ "1. Display all available tables in the Sakila database.\n",
+ "2. Retrieve all the data from the tables `actor`, `film` and `customer`.\n",
+ "3. Retrieve the following columns from their respective tables:\n",
+ "\t- 3.1 Titles of all films from the `film` table\n",
+ "\t- 3.2 List of languages used in films, with the column aliased as `language` from the `language` table\n",
+ "\t- 3.3 List of first names of all employees from the `staff` table\n",
+ "\n",
+ "4. Retrieve unique release years.\n",
+ "5. Counting records for database insights:\n",
+ "\t- 5.1 Determine the number of stores that the company has.\n",
+ "\t- 5.2 Determine the number of employees that the company has.\n",
+ "\t- 5.3 Determine how many films are available for rent and how many have been rented.\n",
+ "\t- 5.4 Determine the number of distinct last names of the actors in the database.\n",
+ "6. Retrieve the 10 longest films.\n",
+ "7. Use filtering techniques in order to:\n",
+ "\t- 7.1 Retrieve all actors with the first name \"SCARLETT\".\n",
+ "\n",
+ "\tBONUS: \n",
+ "\t- 7.2 Retrieve all movies that have ARMAGEDDON in their title and have a duration longer than 100 minutes. \n",
+ "\t\n",
+ "\t\t- *Hint: use `LIKE` operator. [More information here.](https://www.w3schools.com/sql/sql_like.asp)*\n",
+ "\t- 7.3 Determine the number of films that include Behind the Scenes content\n",
+ "\n",
+ "---\n",
+ "## Requirements\n",
+ "\n",
+ "- Fork this repo\n",
+ "- Clone it to your machine\n",
+ "\n",
+ "\n",
+ "## Getting Started\n",
+ "\n",
+ "Complete the challenges in this readme in a `.sql`file.\n",
+ "\n",
+ "## Submission\n",
+ "\n",
+ "- Upon completion, run the following commands:\n",
+ "\n",
+ "```bash\n",
+ "git add .\n",
+ "git commit -m \"Solved lab\"\n",
+ "git push origin master\n",
+ "```\n",
+ "\n",
+ "- Please only include a .sql file with your solution, not the sakila files\n",
+ "- Paste the link of your lab in Student Portal.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ccdded01",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "---\n",
+ "# Solved LAB | SQL Basic Queries"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8d7315d3",
+ "metadata": {},
+ "source": [
+ "## Challenge\n",
+ "Use the sakila database to do the following tasks:\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f2332705",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "### 1. Display all available tables in the Sakila database.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "4f51932c",
+ "metadata": {
+ "vscode": {
+ "languageId": "sql"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "-- 1. Display all available tables in the Sakila database.\n",
+ "USE sakila;\n",
+ "SHOW TABLES;"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "94842bd0",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "### 2. Retrieve all the data from the tables `actor`, `film` and `customer`.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b0d0650b",
+ "metadata": {
+ "vscode": {
+ "languageId": "sql"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "-- 2. Retrieve all the data from the tables `actor`, `film` and `customer`.\n",
+ "SELECT * FROM actor;\n",
+ "SELECT * FROM film; -- original_language_id is null?\n",
+ "SELECT * FROM customer;"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6eb0ee8f",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "### 3. Retrieve the following columns from their respective tables:\n",
+ "#### - 3.1 Titles of all films from the `film` table\n",
+ "#### - 3.2 List of languages used in films, with the column aliased as `language` from the `language` table\n",
+ "#### - 3.3 List of first names of all employees from the `staff` table"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c4834925",
+ "metadata": {
+ "vscode": {
+ "languageId": "sql"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "-- 3. Retrieve the following columns from their respective tables:\n",
+ "--\n",
+ "-- 3.1 Titles of all films from the `film` table\n",
+ "SELECT title FROM film;\n",
+ "--\n",
+ "-- 3.2 List of languages used in films, with the column aliased as `language` from the `language` table\n",
+ "SELECT language_id AS language FROM film;\n",
+ "--\n",
+ "-- 3.3 List of first names of all employees from the `staff` table\n",
+ "SELECT first_name AS `first name` FROM staff;"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9dbe373b",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "### 4. Retrieve unique release years.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "eff16499",
+ "metadata": {
+ "vscode": {
+ "languageId": "sql"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "-- 4. Retrieve unique release years.\n",
+ "SELECT DISTINCT release_year FROM film; -- same as python df[column].unique()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fd5b7b58",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "### 5. Counting records for database insights:\n",
+ "#### - 5.1 Determine the number of stores that the company has.\n",
+ "#### - 5.2 Determine the number of employees that the company has.\n",
+ "#### - 5.3 Determine how many films are available for rent and how many have been rented.\n",
+ "#### - 5.4 Determine the number of distinct last names of the actors in the database."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "98313c68",
+ "metadata": {
+ "vscode": {
+ "languageId": "sql"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "-- 5. Counting records for database insights: COUNT\n",
+ "--\n",
+ "-- 5.1 Determine the number of stores that the company has.\n",
+ "SELECT * FROM store;\n",
+ "SELECT COUNT(store_id) AS nbr_stores FROM store;\n",
+ "--\n",
+ "-- 5.2 Determine the number of employees that the company has.\n",
+ "SELECT * FROM staff;\n",
+ "SELECT COUNT(staff_id) AS nbr_employees FROM staff;\n",
+ "--\n",
+ "-- 5.3 Determine how many films are available for rent and how many have been rented.\n",
+ "-- struggled a bit with this one\n",
+ "--\n",
+ "SELECT * FROM film;\n",
+ "DESCRIBE film;\n",
+ "--\n",
+ "-- Number of all films\n",
+ "SELECT COUNT(*) AS nbr_films_all FROM film;\n",
+ "SELECT * FROM film;\n",
+ "--\n",
+ "-- Number of films available for rent\n",
+ "SELECT * FROM inventory;\n",
+ "SELECT DISTINCT film_id FROM inventory;\n",
+ "SELECT COUNT(DISTINCT film_id) AS nbr_films_available_for_rent FROM inventory;\n",
+ "--\n",
+ "-- Number of films that have been rented\n",
+ "SELECT * FROM rental;\n",
+ "SELECT COUNT(DISTINCT rental_id) AS number_of_films_rented\n",
+ "FROM rental;\n",
+ "--\n",
+ "-- 5.4 Determine the number of distinct last names of the actors in the database.\n",
+ "SELECT DISTINCT last_name AS actors_last_name FROM actor;\n",
+ "SELECT COUNT(DISTINCT last_name) AS nbr_actors_last_name FROM actor; -- i mixed up the distinct before count"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "bd65cf23",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "### 6. Retrieve the 10 longest films."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5da1dbcb",
+ "metadata": {
+ "vscode": {
+ "languageId": "sql"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "-- 6. Retrieve the 10 longest films.\n",
+ "-- method 1 : ORDER BY / DESC LIMIT 10\n",
+ "SELECT * FROM film ORDER BY length DESC LIMIT 10;\n",
+ "-- method 2 : WHERE column = (SELECT MAX(column)FROM table_name)\n",
+ "SELECT * FROM film WHERE length = (SELECT MAX(length) FROM film);"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "7bdd6e1a",
+ "metadata": {},
+ "source": [
+ "---\n",
+ "### 7. Use filtering techniques in order to:\n",
+ "\n",
+ "#### - 7.1 Retrieve all actors with the first name \"SCARLETT\".\n",
+ "### BONUS: \n",
+ "#### - 7.2 Retrieve all movies that have ARMAGEDDON in their title and have a duration longer than 100 minutes. \n",
+ "**Hint: use `LIKE` operator. [More information here.](https://www.w3schools.com/sql/sql_like.asp)**\n",
+ "#### - 7.3 Determine the number of films that include Behind the Scenes content"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "75e70eb1",
+ "metadata": {
+ "vscode": {
+ "languageId": "sql"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "-- 7. Use filtering techniques in order to:\n",
+ "--\n",
+ "-- 7.1 Retrieve all actors with the first name \"SCARLETT\".\n",
+ "SELECT * FROM actor;\n",
+ "SELECT * FROM actor WHERE first_name = 'SCARLETT';\n",
+ "--\n",
+ "-- 7.2 Retrieve all movies that have ARMAGEDDON in their title and have a duration longer than 100 minutes. \n",
+ "-- **Hint: use `LIKE` operator. [More information here.](https://www.w3schools.com/sql/sql_like.asp)**\n",
+ "SELECT * FROM film WHERE title LIKE 'ARMAGEDDON'; -- false gotta use regex\n",
+ "SELECT * FROM film WHERE title LIKE '%ARMAGEDDON%';\n",
+ "SELECT * FROM film WHERE title LIKE '%ARMAGEDDON%' AND length > 100;\n",
+ "--\n",
+ "-- 7.3 Determine the number of films that include Behind the Scenes content\n",
+ "SELECT * FROM film;\n",
+ "SELECT * FROM film WHERE special_features LIKE '%Behind the Scenes%';\n",
+ "SELECT COUNT(*) FROM film WHERE special_features LIKE '%Behind the Scenes%';\n",
+ "SELECT COUNT(*) AS films_behind_the_scenes FROM film WHERE special_features LIKE '%Behind the Scenes%';"
+ ]
+ }
+ ],
+ "metadata": {
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}