Sunday, June 28, 2026

TOPIC: Creating a Student Registration Form and Saving Data to MySQL

 

WEEK 10 – TUESDAY

TOPIC: Creating a Student Registration Form and Saving Data to MySQL

Learning Objectives

At the end of this lesson, students should be able to:

  • Create an HTML form.

  • Understand the <form> tag and form fields.

  • Submit data from a webpage.

  • Save student information into the MySQL database using Django.

  • Verify that the data has been saved.


What We Are Doing

In the previous lesson, we created a Home page and a Register page.

The Register page only displayed text.

Today, we will make it functional by creating a form that allows users to enter:

  • Full Name

  • Email

  • Course

When the user clicks Register, the information will be saved into the students_student table in MySQL.


STEP 1: Open register.html

Open:

students/templates/register.html

What We Are Doing

We are replacing the placeholder text with a real registration form.

Replace the content with:

<!DOCTYPE html>
<html>
<head>
    <title>Student Registration</title>
</head>
<body>

<h1>Student Registration Form</h1>

<a href="/">
    <button>Home</button>
</a>

<hr>

<form method="POST">

    {% csrf_token %}

    <label>Full Name</label><br>
    <input type="text" name="full_name"><br><br>

    <label>Email</label><br>
    <input type="email" name="email"><br><br>

    <label>Course</label><br>
    <input type="text" name="course"><br><br>

    <button type="submit">
        Register Student
    </button>

</form>

</body>
</html>

Explanation of the Code

<form method="POST">

What We Are Doing

We are creating a form that sends data to Django.

CodeMeaning
<form>Starts a form
method="POST"Sends data securely to the server

{% csrf_token %}

What We Are Doing

We are protecting the form against unauthorized requests.

CodeMeaning
{% %}Django template tags
csrf_tokenSecurity token required for POST forms

Without this line, Django will reject the form submission.


Full Name Field

<input type="text" name="full_name">

What We Are Doing

Creating a textbox for the student's full name.

CodeMeaning
inputCreates an input field
type="text"Accepts text
name="full_name"Field name sent to Django

Email Field

<input type="email" name="email">

What We Are Doing

Creating an email input field.

The browser checks that the value looks like an email address.


Course Field

<input type="text" name="course">

What We Are Doing

Creating a textbox for the student's course.


Submit Button

<button type="submit">
Register Student
</button>

What We Are Doing

Creating a button that submits the form.


STEP 2: Open views.py

Open:

students/views.py

What We Are Doing

We are telling Django:

"When someone submits the form, save the information into the database."

Replace the register() function with:

from django.shortcuts import render, redirect
from .models import Student

def register(request):

    if request.method == "POST":

        full_name = request.POST["full_name"]
        email = request.POST["email"]
        course = request.POST["course"]

        Student.objects.create(
            full_name=full_name,
            email=email,
            course=course
        )

        return redirect("/")

    return render(request, "register.html")

Explanation of the Code

Import

from django.shortcuts import render, redirect

What We Are Doing

Importing two tools.

CodeMeaning
renderDisplays an HTML page
redirectSends the user to another page

from .models import Student

What We Are Doing

Importing the Student model so we can save data.


Check Request Method

if request.method == "POST":

What We Are Doing

Checking whether the user clicked the Register Student button.

If yes, continue.


Get Form Data

full_name = request.POST["full_name"]

What We Are Doing

Getting the value entered into the Full Name textbox.

The same happens for:

email = request.POST["email"]
course = request.POST["course"]

Save to Database

Student.objects.create(
    full_name=full_name,
    email=email,
    course=course
)

What We Are Doing

Creating a new student record in the MySQL table.

CodeMeaning
StudentOur model
objectsDjango's manager for database operations
create()Insert a new row into the table

Redirect

return redirect("/")

What We Are Doing

After saving the record, send the user back to the Home page.


STEP 3: Run the Server

python manage.py runserver

Open:

http://127.0.0.1:8000/register/

Fill in the form:

Click Register Student.

The data will be saved into the students_student table.


STEP 4: Verify the Data

Open MySQL Workbench.

Select the database:

USE student_portal;

View all students:

SELECT * FROM students_student;

What We Are Doing

We are asking MySQL to display every record stored in the students_student table.

If everything worked correctly, you'll see the student details you entered.


Practical Exercise

  1. Register five students using the form.

  2. Use SELECT * FROM students_student; to confirm they were saved.

  3. Check the data again in the Django Admin panel (/admin/) and compare it with the records shown in MySQL Workbench.

This completes a full cycle: the user enters data on a webpage, Django processes it, and MySQL stores it permanently.

Topic: Creating a Web Page with Home and Register Buttons

 WEEK 9 – THURSDAY (CONTINUATION)

Learning Objectives

At the end of this lesson, students should be able to:

  • Create a Django view.

  • Create an HTML template.

  • Create navigation buttons.

  • Connect URLs to views.

  • Display a webpage in the browser.


STEP 1: Create a Templates Folder

What we are doing

We need a place to store our HTML pages. Django looks for HTML files inside a folder called templates.

Inside your students app, create this folder:

students/
│── templates/

Inside templates, create a file named:

home.html

STEP 2: Create the Home Page

What we are doing

We are designing the first page users will see when they open the website.

Open:

students/templates/home.html

Paste:

<!DOCTYPE html>
<html>
<head>
    <title>Student Management System</title>
</head>
<body>

    <h1>Welcome to Student Management System</h1>

    <a href="/">
        <button>Home</button>
    </a>

    <a href="/register/">
        <button>Register</button>
    </a>

</body>
</html>

Explanation

  • <!DOCTYPE html> – Tells the browser this is an HTML5 document.

  • <html> – Starts the webpage.

  • <head> – Contains information about the page.

  • <title> – The title shown on the browser tab.

  • <body> – Everything the user sees.

  • <h1> – A large heading.

  • <a> – Creates a hyperlink.

  • href="/" – Links to the Home page.

  • <button> – Creates a clickable button.


STEP 3: Create the Home View

What we are doing

A view decides what Django should display when a user visits a page.

Open:

students/views.py

Replace the previous code with:

from django.shortcuts import render

def home(request):
    return render(request, "home.html")

Explanation

  • render – Displays an HTML page.

  • home – Function that handles the Home page.

  • request – Information sent by the browser.

  • "home.html" – The HTML page to display.


STEP 4: Create the Register View

What we are doing

We are creating another page called Register.

Add this below the home view:

def register(request):
    return render(request, "register.html")

This tells Django to display register.html when the Register page is requested.


STEP 5: Create the Register Page

Inside the templates folder, create:

register.html

Paste:

<!DOCTYPE html>
<html>
<head>
    <title>Register Student</title>
</head>
<body>

    <h1>Student Registration Page</h1>

    <a href="/">
        <button>Home</button>
    </a>

    <a href="/register/">
        <button>Register</button>
    </a>

    <p>This page will contain the student registration form later.</p>

</body>
</html>

STEP 6: Create URL Patterns

What we are doing

URLs tell Django which view to run when a user visits a particular web address.

Open:

students/urls.py

Replace it with:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.home, name="home"),
    path("register/", views.register, name="register"),
]

Explanation

  • path() – Creates a URL.

  • "" – The Home page (/).

  • "register/" – The Register page (/register/).

  • views.home – Calls the home view.

  • views.register – Calls the register view.

  • name – Gives the URL a name that can be used elsewhere in Django.


STEP 7: Run the Server

What we are doing

We are starting Django so we can test the website.

Run:

python manage.py runserver

Open:

http://127.0.0.1:8000/

You should see:

  • Welcome to Student Management System

  • Home button

  • Register button

When you click Register, it should open:

http://127.0.0.1:8000/register/

and display the Student Registration Page.


Expected Result

The website will have two simple pages:

Home Page

------------------------------------
Welcome to Student Management System

[ Home ]   [ Register ]
------------------------------------

Register Page

------------------------------------
Student Registration Page

[ Home ]   [ Register ]

This page will contain the student
registration form later.
------------------------------------

This is a good foundation because in the next lesson you can replace the placeholder text on the Register page with a real HTML form that saves student information into your MySQL database.

Wednesday, June 24, 2026

Django Table

 

WEEK 9 – THURSDAY

TOPIC: Creating a Database Table in Django Using MySQL

Sub-topic: Creating a Student Table with Django Models and Migrations


What We Are Doing in This Practical

We already have:

  • A Django project

  • A Django app called students

  • A MySQL database called student_portal

  • Django connected to MySQL in settings.py

Now, we want to create a Student table inside the student_portal database.

The table will store:

  • Student full name

  • Student email

  • Student course


STEP 1: Open the models.py File

Go to this file:

students/models.py

What we are doing

We are opening the file where Django allows us to describe a database table using Python code.

In Django, we do not need to first create the table manually in MySQL. We create a model in models.py, and Django uses it to create the table for us.


STEP 2: Import Django Database Tools

Inside students/models.py, write:

from django.db import models

What we are doing

We are bringing Django’s database tools into our file.

We need these tools because they help us create:

  • Tables

  • Columns

  • Text fields

  • Email fields

  • Number fields

  • Date fields

Meaning of the code

CodeMeaning
fromTake something from another place
djangoThe Django framework
.dbDjango database section
importBring a tool into this file
modelsTools for creating tables and columns

STEP 3: Create the Student Model

Under the import line, write:

class Student(models.Model):

What we are doing

We are creating a Django model called Student.

A model is like a blueprint for a database table.

Django will use this blueprint to create a table for students inside MySQL.

Meaning of the code

CodeMeaning
classCreate a blueprint/template
StudentThe name of our model
models.ModelTells Django that this is a database table
:Starts the code inside the model

Table name Django will create

Because our app is called students and our model is called Student, Django will normally create:

students_student

STEP 4: Create the Full Name Column

Inside the Student model, write:

full_name = models.CharField(max_length=100)

What we are doing

We are creating a column called full_name.

This column will store each student’s name.

Examples:

Musa Ibrahim
Aisha Bello
John David

Meaning of the code

CodeMeaning
full_nameName of the column
=Give this column a field type
models.CharFieldStore short text
max_length=100Allow a maximum of 100 characters

STEP 5: Create the Email Column

Write:

email = models.EmailField()

What we are doing

We are creating a column called email.

This column will store each student’s email address.

Examples:

musa@gmail.com
aisha@gmail.com

Meaning of the code

CodeMeaning
emailName of the column
=Give this column a field type
models.EmailField()Store email addresses and check email format

STEP 6: Create the Course Column

Write:

course = models.CharField(max_length=100)

What we are doing

We are creating a column called course.

This column will store the course each student is studying.

Examples:

Python Programming
Web Development
Data Analysis

Meaning of the code

CodeMeaning
courseName of the column
models.CharFieldStore short text
max_length=100Allow a maximum of 100 characters

STEP 7: Save the Complete Model

Your complete students/models.py file should look like this:

from django.db import models

class Student(models.Model):
    full_name = models.CharField(max_length=100)
    email = models.EmailField()
    course = models.CharField(max_length=100)

What we have done

We have created the blueprint for a student table.

At this point, the table is not yet inside MySQL. Django only knows what the table should look like.


STEP 8: Create a Migration File

Open your terminal inside the project folder where manage.py is located.

Run:

python manage.py makemigrations

What we are doing

We are telling Django:

“Look at my model and prepare instructions for creating the table.”

Django creates a migration file inside:

students/migrations/

You may see:

Migrations for 'students':
  students/migrations/0001_initial.py
    + Create model Student

Meaning of the command

CodeMeaning
pythonRun Python
manage.pyDjango command file
makemigrationsCreate instructions for database changes

STEP 9: Send the Table to MySQL

Run:

python manage.py migrate

What we are doing

We are telling Django:

“Use the migration instructions and create the table inside the MySQL database.”

Django connects to the database named student_portal because that is the database name written in settings.py.

After this command, the students_student table is created inside MySQL.

Meaning of the command

CodeMeaning
pythonRun Python
manage.pyDjango command file
migrateApply the migration instructions to the database

STEP 10: Check the Table in MySQL

Open MySQL Workbench.

Run:

USE student_portal;

What we are doing

We are selecting the database where our table was created.

Meaning of the code

CodeMeaning
USESelect a database
student_portalThe database name
;End the MySQL command

STEP 11: Show All Tables

Run:

SHOW TABLES;

What we are doing

We are asking MySQL to show every table inside the student_portal database.

You should see:

students_student

You may also see Django tables such as:

auth_user
django_admin_log
django_migrations
django_session

STEP 12: Check the Columns in the Student Table

Run:

DESCRIBE students_student;

What we are doing

We are asking MySQL to show the columns inside the students_student table.

You should see columns similar to:

ColumnMeaning
idAutomatic student number created by Django
full_nameStudent’s full name
emailStudent’s email
courseStudent’s course

Final Summary

Create Student model in models.py
        ↓
Create migration with makemigrations
        ↓
Run migrate
        ↓
Django creates students_student table in MySQL
        ↓
Check the table in MySQL Workbench

Wednesday, May 13, 2026

MySQL Workbench

 

Complete Guide: Reinstall MySQL Workbench + MySQL Server (Windows)

This will completely reinstall everything properly so your connection works.


PART 1 — Remove Old Installation

Step 1: Uninstall MySQL

Press:

Windows + R

Type:

appwiz.cpl

Press Enter.


Step 2: Remove All MySQL Programs

Uninstall anything named:

  • MySQL Workbench

  • MySQL Server

  • MySQL Installer

  • MySQL Shell

  • Connector

Remove all MySQL items.

Restart your PC after uninstalling.


PART 2 — Download MySQL

Step 3: Download Installer

Open:

MySQL Community Installer

Download:

mysql-installer-web-community

or full installer.


PART 3 — Install MySQL Correctly

Step 4: Open Installer

Double-click the installer.

Click:

  • Yes (if Windows asks permission)


Step 5: Choose Setup Type

Select:

Developer Default

This installs:

  • MySQL Server

  • MySQL Workbench

  • Shell

  • Drivers

Click:

  • Next


Step 6: Install Required Packages

If prompted:

  • Click Execute

Wait for installation.

Then:

  • Next


PART 4 — Configure MySQL Server

Step 7: Configuration Type

Leave defaults:

OptionValue
Config TypeDevelopment Computer
ProtocolTCP/IP
Port3306

Click:

  • Next


Step 8: Authentication Method

Choose:

Use Strong Password Encryption

Click:

  • Next


Step 9: Create Root Password

Create password.

Example:

Admin123

Write it down somewhere safe.

Click:

  • Next


Step 10: Windows Service

Leave defaults:

OptionValue
Service NameMySQL80
Start at StartupChecked

Click:

  • Next


Step 11: Apply Configuration

Click:

  • Execute

Wait for all green checkmarks ✅

Then:

  • Finish


PART 5 — Open MySQL Workbench

Step 12: Launch Workbench

Press Windows key.

Search:

MySQL Workbench

Open it.


PART 6 — Create Connection

Step 13: Create New Connection

On the home screen:

  • Click the ➕ plus icon

Fill in:

FieldValue
Connection NameLocal MySQL
Hostname127.0.0.1
Port3306
Usernameroot

Step 14: Add Password

Click:

  • Store in Vault

Enter your password:

  • Example: Admin123

Click:

  • OK


Step 15: Test Connection

Click:

  • Test Connection

You should see:

Successfully made the MySQL connection

Click:

  • OK


PART 7 — Start Writing SQL

Double-click your connection.

Click the SQL tab.

Paste:

CREATE DATABASE school;

USE school;

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

INSERT INTO students VALUES (1, 'John');

SELECT * FROM students;

Run using:

  • ⚡ lightning icon


If It Still Does Not Work

Check service:

Press:

Windows + R

Type:

services.msc

Find:

  • MySQL80

Status should be:

  • Running

If not:

  • Right-click → Start


Official MySQL Resources

MySQL Workbench Documentation

MySQL Server Documentation

Saturday, April 18, 2026

mysql and python django complete

 

WEEK 1: INTRODUCTION TO DATABASE

 

WEEK 1 – MONDAY

TOPIC: WHAT IS DATABASE

1. WHAT IS DATA?

📘 Meaning:

Data = raw facts or information

Examples of data:

  • Student name → “Aliyu Musa”
  • Phone number → “08012345678”
  • Age → “15”

These are just raw values, not organized yet.

 

Simple Explanation:

Data is anything you can write or store in raw form.

 

2. WHAT IS DATABASE?

Meaning:

A database is an organized collection of data stored in a computer system.

 

Simple Explanation:

Instead of writing student names in a notebook, we store them in a database.

 

Example:

A school database contains:

  • Student names
  • Phone numbers
  • Courses

Key Idea:

Database = organized storage

Data = raw information inside it

 

3. REAL-LIFE USAGE OF DATABASE

 Where databases are used:

School system

Stores:

  • Students
  • Teachers
  • Results

Bank system

Stores:

  • Account numbers
  • Money balance

Phone contacts

Stores:

  • Names
  • Phone numbers

 

PRACTICAL PART (MYSQL)

Now we move to writing actual MySQL commands.

 

EXAMPLE 1

CREATE DATABASE school_db;

🧠 Word-by-word explanation:

CREATE

Means: “make something new”

We are telling MySQL to create something.

 

DATABASE

Means: “storage container for data”

We are not creating a table yet, we are creating a database.

 

school_db

This is the name of the database

You can change it to anything like:

  • my_school
  • training_center

 

 Full meaning:

“Create a new database called school_db”

 

EXAMPLE 2

USE school_db;

 

 Word-by-word explanation:

USE

Means: “open or activate”

We are telling MySQL:
“Start working inside this database”

 

school_db

This is the database we created earlier.

 

Full meaning:

 “Open and start using the school_db database”

 

SIMPLE FLOW IDEA

1.     CREATE DATABASE → make storage

2.     USE DATABASE → open storage

 

ASSIGNMENTS (EXPLAINED)

 

TASK 1:

Create a database called my_first_db

Expected answer:

CREATE DATABASE my_first_db;

 Meaning:

You are creating a new empty database named my_first_db.

 

TASK 2:

Write 2 places where database is used

Correct answers:

1.     School system (stores students and results)

2.     Bank system (stores money and accounts)

 

WEEK 1 – TUESDAY

📘 TOPIC: TABLES CONCEPT (What is a Table?)


🧠 1. WHAT IS A TABLE?

📘 Meaning:

A table is a structure used to store data in rows and columns inside a database.


🧠 Simple Teaching Explanation:

Think of a table like an Excel sheet or register book.

It has:

  • Columns (fields)
  • Rows (records)

📌 Example in real life:

id

name

1

Aliyu Musa

2

Aisha Bello


🧠 Key Idea:

  • Column = type of information (name, id)
  • Row = actual data (Aliyu Musa, 1)

🧠 2. WHAT IS ROW AND COLUMN?

📘 COLUMN:

A column is a category of data

Examples:

  • name
  • phone
  • age

👉 It defines WHAT we are storing


📘 ROW:

A row is actual record (data of one person)

Example:

  • 1, Aliyu Musa, 08012345678

👉 It contains real values


🧠 Simple Memory Trick:

  • Column = label
  • Row = value

💻 PRACTICAL PART (MYSQL TABLE CREATION)

Now we write real SQL.


🔧 EXAMPLE 1

CREATE TABLE students (

  id INT,

  name VARCHAR(100)

);


🧠 WORD-BY-WORD EXPLANATION


CREATE TABLE

CREATE

Means: make something new

TABLE

Means: structure that holds data (like Excel sheet)

👉 Together:
“Make a new structure to store data”


students

This is the name of the table

👉 It means:
“This table will store student data”


( )

The brackets mean:
👉 “inside this table, define columns”


id INT

id

Column name (student identity number)

INT

Means INTEGER (whole numbers only)

👉 So:
id = 1, 2, 3, 4...


name VARCHAR(100)

name

Column name for student names

VARCHAR

Means text (letters, words)

(100)

Means maximum 100 characters allowed

👉 Example:
“Aliyu Musa” fits inside 100 letters


📌 FULL MEANING:

👉 “Create a table called students with:

  • id as number
  • name as text”

🔧 EXAMPLE 2

CREATE TABLE courses (

  id INT,

  course_name VARCHAR(100)

);


🧠 WORD-BY-WORD EXPLANATION


CREATE TABLE

Same meaning:
👉 Make a new structure for data


courses

Table name

👉 This table stores course information


id INT

Course ID number (1,2,3...)


course_name VARCHAR(100)

course_name

Name of course (MySQL, Django)

VARCHAR(100)

Text up to 100 characters


📌 FULL MEANING:

👉 “Create a table called courses to store course ID and course names”


🧠 SIMPLE CLASS SUMMARY

Today you learned:

Table = structure for storing data
Column = type of data
Row = actual record
INT = numbers
VARCHAR = text


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Create a table called teachers

Expected Answer:

CREATE TABLE teachers (

  id INT,

  name VARCHAR(100)

);


🧠 Meaning:

You are creating a table to store teacher data.


🧠 TASK 2:

👉 List 3 columns in students table

Correct Answer:

  1. id
  2. name
  3. phone

🧠 Explanation:

These are fields used to store student information.


Good — I will continue exactly like a teacher in class, staying ONLY within:


If you want to add more fields (columns) to an existing table in MySQL Workbench, use ALTER TABLE.

Example:

ALTER TABLE students
ADD email VARCHAR(100);

Explanation

  • ALTER TABLE students → modify the table

  • ADD email → add new field/column named email

  • VARCHAR(100) → data type for the field

Add multiple fields

ALTER TABLE students
ADD address VARCHAR(100),
ADD phone VARCHAR(20);

To check the new fields

DESCRIBE students;

Or:

SELECT * FROM students;





🟡 WEEK 1 – WEDNESDAY

📘 TOPIC: DATA TYPES (INT, VARCHAR, DATE)


🧠 1. WHAT ARE DATA TYPES?

📘 Meaning:

A data type tells MySQL what kind of data a column will store.


🧠 Simple Teaching Explanation:

When we create a table, we must tell MySQL:

👉 “What type of data is this column storing?”

Example:

  • Number? → INT
  • Text? → VARCHAR
  • Date? → DATE

🧠 2. WHY DATA TYPES ARE IMPORTANT

📘 Explanation:

Data types help MySQL:

  • Store correct information
  • Save space
  • Prevent wrong input

📌 Example:

If phone column is INT:
❌ It will fail for +234 numbers or long digits

So we use:
VARCHAR


🧠 3. MAIN DATA TYPES FOR TODAY


INT (INTEGER)

📘 Meaning:

INT = whole numbers only

📌 Examples:

  • 1
  • 20
  • 1000

🧠 Used for:

  • ID numbers
  • Age count
  • Quantity

VARCHAR (TEXT)

📘 Meaning:

VARCHAR = letters, words, text

📌 Examples:

  • “Aliyu Musa”
  • “MySQL Course”
  • “Kubwa Abuja”

🧠 Used for:

  • Names
  • Phone numbers
  • Descriptions

DATE

📘 Meaning:

DATE = stores calendar date

📌 Format:

YYYY-MM-DD

📌 Example:

  • 2026-04-18

🧠 Used for:

  • Birth date
  • Payment date
  • Registration date

💻 PRACTICAL PART (MYSQL)

Now we write real SQL.


🔧 EXAMPLE 1

CREATE TABLE students (

  id INT,

  name VARCHAR(100),

  phone VARCHAR(15)

);


🧠 WORD-BY-WORD EXPLANATION

CREATE TABLE

👉 Make a new structure to store data


students

👉 Name of the table (stores student records)


id INT

  • id = column name
  • INT = numbers only

👉 Stores student ID like 1,2,3


name VARCHAR(100)

  • name = column name
  • VARCHAR = text
  • (100) = maximum characters

👉 Stores student names


phone VARCHAR(15)

  • phone = column name
  • VARCHAR = text format

👉 We use VARCHAR because phone numbers may contain:

  • 0 at start
  • long digits

📌 FULL MEANING:

👉 “Create a student table with ID, name, and phone number”


🔧 EXAMPLE 2

CREATE TABLE payments (

  id INT,

  amount DECIMAL(10,2)

);


🧠 WORD-BY-WORD EXPLANATION


CREATE TABLE

👉 Make a new table


payments

👉 Table name for storing money transactions


id INT

👉 Payment ID number


amount DECIMAL(10,2)

Now important part:


🧠 DECIMAL(10,2) EXPLAINED

DECIMAL

👉 Used for money values (accurate numbers)


(10,2)

  • 10 = total digits allowed
  • 2 = digits after decimal point

📌 Example values:

  • 5000.00
  • 250.50
  • 100.99

📌 FULL MEANING:

👉 “Create a payments table with ID and money amount”


🧠 SIMPLE CLASS SUMMARY

Today you learned:

INT = numbers
VARCHAR = text
DATE = date values
DECIMAL = money values


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Create a table with date column

Answer:

CREATE TABLE attendance (

  id INT,

  student_name VARCHAR(100),

  attendance_date DATE

);


🧠 Explanation:

  • id → number
  • student_name → text
  • attendance_date → date (YYYY-MM-DD)

🧠 TASK 2:

👉 Create product table with price

Answer:

CREATE TABLE products (

  id INT,

  product_name VARCHAR(100),

  price DECIMAL(10,2)

);


🧠 Explanation:

  • product_name → text
  • price → money value with decimals

🎯 FINAL UNDERSTANDING OF TODAY

Students should now understand:

What data types are
Why we use INT
Why we use VARCHAR
Why DATE is important
Why DECIMAL is used for money


If you want next, I will continue:

👉 THURSDAY (PRACTICAL PROJECT DAY – DATA TYPES APPLICATION IN REAL SYSTEM)

THURSDAY (PROJECT PRACTICAL)

🎯 Project Task:

  • Create database + tables

🔧 Work:

CREATE DATABASE training_center;
USE training_center;

CREATE TABLE students (
  id INT,
  name VARCHAR(100),
  phone VARCHAR(15)
);

📝 Assignments:

1.     Create 2 tables in your database

2.     Draw your database structure


🟢 FRIDAY (PROJECT PRACTICAL)

🎯 Project Task:

  • Improve database system

🔧 Work:

  • Add more tables (courses, teachers)

📝 Assignments:

1.     Create course table

2.     Create teacher table


 

Good — I will teach this like a classroom lesson, strictly inside:

🟡 WEEK 2 – MONDAY

📘 TOPIC: PRIMARY KEY + AUTO_INCREMENT


🧠 1. WHAT IS PRIMARY KEY?

📘 Meaning:

A Primary Key is a column that uniquely identifies each record in a table.


🧠 Simple Explanation:

In a classroom:

  • No two students should have the same student ID

👉 That unique ID is called Primary Key


🧠 Key Idea:

It must be unique
It cannot repeat
It cannot be empty


🧠 2. WHAT IS AUTO_INCREMENT?

📘 Meaning:

AUTO_INCREMENT means MySQL will automatically increase numbers for you.


🧠 Simple Explanation:

Instead of typing:

  • 1
  • 2
  • 3

👉 MySQL does it automatically.


💻 PRACTICAL PART


🔧 EXAMPLE 1

CREATE TABLE students (

  id INT AUTO_INCREMENT PRIMARY KEY,

  name VARCHAR(100)

);


🧠 WORD-BY-WORD EXPLANATION


CREATE TABLE

👉 Make a new structure in database


students

👉 Name of table (stores student data)


id INT

  • id = column name
  • INT = numbers only

👉 Example: 1, 2, 3


AUTO_INCREMENT

👉 Automatically increases number for each new record

Example:

  • Aliyu → 1
  • Aisha → 2
  • John → 3

PRIMARY KEY

👉 Makes this column:

  • Unique
  • Important identifier

name VARCHAR(100)

  • name = student name column
  • VARCHAR = text type
  • 100 = max characters

📌 FULL MEANING:

👉 “Create students table where each student has a unique auto-generated ID and a name”


🔧 EXAMPLE 2

CREATE TABLE courses (

  id INT AUTO_INCREMENT PRIMARY KEY,

  course_name VARCHAR(100)

);


🧠 WORD-BY-WORD EXPLANATION


CREATE TABLE

👉 Make new table


courses

👉 Table name for storing courses


id INT AUTO_INCREMENT PRIMARY KEY

👉 Unique ID automatically generated


course_name VARCHAR(100)

  • course_name = name of course
  • VARCHAR = text storage

📌 FULL MEANING:

👉 “Create a courses table where each course has a unique ID and name”


🧠 SIMPLE CLASS SUMMARY

Today you learned:

Primary Key = unique identifier
Auto Increment = automatic numbering
Each table must have a unique ID system


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Create table with primary key


ANSWER:

CREATE TABLE teachers (

  id INT AUTO_INCREMENT PRIMARY KEY,

  teacher_name VARCHAR(100)

);


🧠 Explanation:

  • id = unique teacher number
  • teacher_name = teacher’s name

🧠 TASK 2:

👉 Explain primary key


ANSWER (SIMPLE STUDENT ANSWER):

A primary key is a column in a table that is used to uniquely identify each record. It does not repeat and cannot be empty.


🧠 EXTRA SIMPLE VERSION:

👉 It is the unique ID of each record in a table.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should understand:

What primary key is
Why uniqueness is important
How auto increment works
How to create structured tables properly


If you want, next I will continue:

👉 WEEK 2 – TUESDAY (INSERT DATA – REAL PRACTICAL RECORD CREATION)

Good — I will teach this strictly as a classroom practical lesson, staying ONLY inside:

🟡 WEEK 2 – TUESDAY

📘 TOPIC: INSERT DATA INTO TABLES


🧠 1. WHAT DOES INSERT MEAN?

📘 Meaning:

INSERT means adding new data into a table.


🧠 Simple Explanation:

When you create a table, it is empty.

👉 INSERT is how we put real information inside it.

Example:

  • Adding student names
  • Adding course names

🧠 2. BASIC STRUCTURE OF INSERT

INSERT INTO table_name (column)

VALUES (data);


🧠 Breakdown:

INSERT INTO

Means: “put data inside a table”


table_name

The table you want to insert into

Example:

  • students
  • courses

(column)

The column where data will go

Example:

  • name

VALUES

Means: the actual data you are adding


('Aliyu Musa')

This is the real data (student name)


💻 PRACTICAL PART


🔧 EXAMPLE 1

INSERT INTO students (name)

VALUES ('Aliyu Musa');


🧠 WORD-BY-WORD EXPLANATION


INSERT INTO

👉 Add new data into a table


students

👉 Table name where data is stored


(name)

👉 Column where data will go


VALUES

👉 The actual data being inserted


'Aliyu Musa'

👉 Student name being stored


📌 FULL MEANING:

👉 “Add a student named Aliyu Musa into the students table”


🔧 EXAMPLE 2

INSERT INTO students (name)

VALUES ('Aisha Bello');


🧠 WORD-BY-WORD EXPLANATION


INSERT INTO

👉 Add data


students

👉 Table name


(name)

👉 Column where name is stored


VALUES

👉 The actual data


'Aisha Bello'

👉 Another student name


📌 FULL MEANING:

👉 “Add Aisha Bello into students table”


🧠 IMPORTANT UNDERSTANDING

Each INSERT adds ONE record
You can insert many students one by one
Data must match column type


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Insert 5 students


ANSWER:

INSERT INTO students (name) VALUES ('John');

INSERT INTO students (name) VALUES ('Mary');

INSERT INTO students (name) VALUES ('Peter');

INSERT INTO students (name) VALUES ('Fatima');

INSERT INTO students (name) VALUES ('David');


🧠 Explanation:

You are adding 5 different student records into the table.


🧠 TASK 2:

👉 Insert 3 courses


ANSWER:

INSERT INTO courses (course_name) VALUES ('MySQL Basics');

INSERT INTO courses (course_name) VALUES ('Django Intro');

INSERT INTO courses (course_name) VALUES ('Web Development');


🧠 Explanation:

You are adding 3 course names into the courses table.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What INSERT means
How to add data into tables
How records are stored one by one
How columns and values work together


If you want, next I will continue:

👉 WEEK 2 – WEDNESDAY (SELECT DATA – VIEWING RECORDS)

Good — I will teach this strictly as a classroom continuation lesson, staying ONLY inside:

🟡 WEEK 2 – WEDNESDAY

📘 TOPIC: MORE INSERT + STRUCTURE PRACTICE


🧠 1. WHAT ARE WE DOING TODAY?

📘 Meaning:

Today we continue INSERT INTO, but now focusing on:

  • More real data entry
  • Building proper database structure

🧠 Simple Explanation:

Yesterday you inserted students.

👉 Today you will insert:

  • Courses
  • Teachers

So your system becomes more complete.


💻 PRACTICAL PART


🔧 EXAMPLE 1

INSERT INTO courses (course_name)

VALUES ('MySQL Basics');


🧠 WORD-BY-WORD EXPLANATION


INSERT INTO

👉 Means: add new data into a table


courses

👉 Table name where data is stored


(course_name)

👉 Column where course name will go


VALUES

👉 The actual data you are inserting


'MySQL Basics'

👉 The real course name being added


📌 FULL MEANING:

👉 “Add a course called MySQL Basics into the courses table”


🔧 EXAMPLE 2

INSERT INTO courses (course_name)

VALUES ('Django Intro');


🧠 WORD-BY-WORD EXPLANATION


INSERT INTO

👉 Add data into table


courses

👉 Table name


(course_name)

👉 Column for course names


VALUES

👉 Data being inserted


'Django Intro'

👉 Another course name


📌 FULL MEANING:

👉 “Add Django Intro into courses table”


🧠 IMPORTANT STRUCTURE IDEA

Now your database is building structure:

students → student data
courses → course data
teachers → instructor data

👉 This is how real systems work.


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Insert 5 courses


ANSWER:

INSERT INTO courses (course_name) VALUES ('HTML');

INSERT INTO courses (course_name) VALUES ('CSS');

INSERT INTO courses (course_name) VALUES ('JavaScript');

INSERT INTO courses (course_name) VALUES ('Python');

INSERT INTO courses (course_name) VALUES ('SQL');


🧠 Explanation:

You are building a full list of courses in the system.


🧠 TASK 2:

👉 Insert 2 teachers


STEP 1 (First create structure if not yet created)

CREATE TABLE teachers (

  id INT AUTO_INCREMENT PRIMARY KEY,

  teacher_name VARCHAR(100)

);


STEP 2 (Insert data)

INSERT INTO teachers (teacher_name)

VALUES ('Mr John');

INSERT INTO teachers (teacher_name)

VALUES ('Mrs Amina');


🧠 Explanation:

  • teachers → table storing instructor names
  • teacher_name → column for names
  • VALUES → actual teacher data

🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should understand:

How to insert multiple records
How different tables store different data
How a database structure is built step-by-step
How real systems (school database) are formed


If you want next, I will continue:

👉 THURSDAY (PROJECT PRACTICAL – BUILD FULL INSERT SYSTEM USING STUDENTS, COURSES, TEACHERS)

THURSDAY (PROJECT PRACTICAL)

🎯 Task:

  • Build student system with data

📝 Assignments:

1.     Insert 10 students

2.     Insert 5 courses


🟢 FRIDAY (PROJECT PRACTICAL)

🎯 Task:

  • Complete database setup

📝 Assignments:

1.     Add teacher data

2.     Review all tables


 

Good — I will teach this strictly as a classroom lesson, staying ONLY inside:

🟡 WEEK 3 – MONDAY

📘 TOPIC: SELECT (VIEWING DATA)


🧠 1. WHAT DOES SELECT MEAN?

📘 Meaning:

SELECT is used to view or display data stored in a table.


🧠 Simple Explanation:

After inserting data into a table:

👉 SELECT is how we “open and see” the data.

Like:

  • Opening a student register book
  • Reading what is inside

🧠 2. BASIC IDEA OF SELECT

👉 INSERT = put data in
👉 SELECT = see data


💻 PRACTICAL PART


🔧 EXAMPLE 1

SELECT * FROM students;


🧠 WORD-BY-WORD EXPLANATION


SELECT

👉 Means: “show data”


*

👉 Means: “all columns”

So it means:
👉 show everything in the table


FROM

👉 Means: “where to get the data from”


students

👉 Table name


📌 FULL MEANING:

👉 “Show all data from students table”


🧠 RESULT EXAMPLE:

id

name

phone

1

Aliyu Musa

08012345678

2

Aisha Bello

08098765432


🔧 EXAMPLE 2

SELECT name FROM students;


🧠 WORD-BY-WORD EXPLANATION


SELECT

👉 Show data


name

👉 Only the name column


FROM

👉 Source of data


students

👉 Table name


📌 FULL MEANING:

👉 “Show only the names of students”


🧠 RESULT EXAMPLE:

name

Aliyu Musa

Aisha Bello


🧠 IMPORTANT UNDERSTANDING

SELECT * = show everything
SELECT column = show only that column


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Select all students


ANSWER:

SELECT * FROM students;


🧠 Explanation:

You are displaying every record in the students table.


🧠 TASK 2:

👉 Select only course names


ANSWER:

SELECT course_name FROM courses;


🧠 Explanation:

You are showing only the course names column from courses table.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

How to view data in a table
Difference between SELECT * and SELECT column
How to retrieve specific information
How databases are read (not only stored)


If you want next, I will continue:

👉 WEEK 3 – TUESDAY (WHERE FILTERING – SEARCHING SPECIFIC DATA)

Good — I will teach this strictly as a classroom lesson, ONLY inside:

🟡 WEEK 3 – TUESDAY

📘 TOPIC: WHERE FILTER (SEARCHING DATA)


🧠 1. WHAT IS WHERE?

📘 Meaning:

WHERE is used to filter data and find specific records in a table.


🧠 Simple Explanation:

When a table has many records:

👉 WHERE helps us search for one or some specific data.

Like:

  • Finding one student in a class
  • Searching one record in a book

🧠 2. BASIC IDEA

  • SELECT = show all data
  • WHERE = show only what matches condition

💻 PRACTICAL PART


🔧 EXAMPLE 1

SELECT * FROM students

WHERE name='Aliyu Musa';


🧠 WORD-BY-WORD EXPLANATION


SELECT

👉 Means: show data


*

👉 Means: all columns


FROM students

👉 Get data from students table


WHERE

👉 Means: filter condition (search rule)


name

👉 Column being checked


=

👉 Means: equal to


'Aliyu Musa'

👉 The exact value we are searching for


📌 FULL MEANING:

👉 “Show all student details where name is Aliyu Musa”


🧠 RESULT EXAMPLE:

id

name

phone

1

Aliyu Musa

08012345678


🔧 EXAMPLE 2

SELECT * FROM students

WHERE id=1;


🧠 WORD-BY-WORD EXPLANATION


SELECT *

👉 Show all columns


FROM students

👉 From students table


WHERE

👉 Apply filter condition


id

👉 Column being checked


= 1

👉 Look for record where id is 1


📌 FULL MEANING:

👉 “Show student whose ID is 1”


🧠 RESULT EXAMPLE:

id

name

phone

1

Aliyu Musa

08012345678


🧠 IMPORTANT UNDERSTANDING

WHERE is used to search specific data
It must match exactly unless advanced search is used
It helps avoid showing all records


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Find student by name


ANSWER:

SELECT * FROM students

WHERE name='Aisha Bello';


🧠 Explanation:

You are searching for a student whose name is Aisha Bello.


🧠 TASK 2:

👉 Find course by id


ANSWER:

SELECT * FROM courses

WHERE id=1;


🧠 Explanation:

You are searching for a course whose ID is 1.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What WHERE means
How to search specific records
How to filter data using conditions
Difference between SELECT ALL and SELECT FILTERED


If you want next, I will continue:

👉 WEEK 3 – WEDNESDAY (LIKE SEARCH + PATTERN FILTERING – BEGINNER LEVEL)

Good — I will teach this strictly like a classroom lesson, ONLY inside:

🟡 WEEK 3 – WEDNESDAY

📘 TOPIC: SEARCH SYSTEM (LIKE OPERATOR)


🧠 1. WHAT IS SEARCH SYSTEM?

📘 Meaning:

A search system is used to find data using patterns instead of exact words.


🧠 Simple Explanation:

Yesterday we used:

  • exact search (WHERE name = 'Aliyu Musa')

Today we are learning:
👉 “find data that starts with, ends with, or contains something”


🧠 2. WHAT IS LIKE?

📘 Meaning:

LIKE is used to search for patterns in data.


🧠 Simple Idea:

Instead of saying:

  • exact name

We say:
👉 names that start with A
👉 phones that start with 080


🧠 3. WHAT IS % SYMBOL?

📘 Meaning:

% means “any number of characters”


🧠 Examples:

  • 'A%' → starts with A
  • '080%' → starts with 080
  • '%a' → ends with a
  • '%Aliyu%' → contains Aliyu

💻 PRACTICAL PART


🔧 EXAMPLE 1

SELECT * FROM students

WHERE name LIKE 'A%';


🧠 WORD-BY-WORD EXPLANATION


SELECT *

👉 Show all columns


FROM students

👉 Get data from students table


WHERE

👉 Apply condition (filter)


name

👉 Column being checked


LIKE

👉 Search using pattern (not exact match)


'A%'

👉 Pattern meaning:
👉 names starting with letter A


📌 FULL MEANING:

👉 “Show all students whose names start with A”


🧠 RESULT EXAMPLE:

id

name

1

Aliyu Musa

2

Aisha Bello


🔧 EXAMPLE 2

SELECT * FROM students

WHERE phone LIKE '080%';


🧠 WORD-BY-WORD EXPLANATION


SELECT *

👉 Show all data


FROM students

👉 From students table


WHERE

👉 Filter condition


phone

👉 Column being checked


LIKE

👉 Pattern search


'080%'

👉 Means:
👉 phone numbers starting with 080


📌 FULL MEANING:

👉 “Show students whose phone numbers start with 080”


🧠 RESULT EXAMPLE:

id

name

phone

1

Aliyu Musa

08012345678

2

Aisha Bello

08098765432


🧠 IMPORTANT UNDERSTANDING

LIKE = flexible search
% = wildcard (any characters)
Useful when you don’t know full value


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Search students by letter


ANSWER:

SELECT * FROM students

WHERE name LIKE 'A%';


🧠 Explanation:

This shows all students whose names start with A.


🧠 TASK 2:

👉 Search phone numbers


ANSWER:

SELECT * FROM students

WHERE phone LIKE '080%';


🧠 Explanation:

This shows all students whose phone numbers start with 080.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What LIKE means
How to search using patterns
Meaning of % wildcard
How to build simple search systems


If you want next, I will continue:

👉 THURSDAY (PROJECT PRACTICAL – BUILD SEARCH SYSTEM USING STUDENTS TABLE)

🟢 THURSDAY (PROJECT PRACTICAL)

🎯 Task:

  • Build search system

📝 Assignments:

1.     Search student by name

2.     Display all records


🟢 FRIDAY (PROJECT PRACTICAL)

🎯 Task:

  • Mini student system

📝 Assignments:

1.     Build full SELECT system

2.     Filter records

Good — I will teach this strictly like a classroom lesson, ONLY inside:

🟡 MONTH 2 – WEEK 5 – MONDAY

📘 TOPIC: UPDATE (EDITING DATA)


🧠 1. WHAT IS UPDATE?

📘 Meaning:

UPDATE is used to change existing data inside a table.


🧠 Simple Explanation:

After inserting data into a table:

👉 UPDATE allows you to correct mistakes or change information.

Example:

  • Change student name
  • Change phone number

🧠 IMPORTANT RULE:

👉 Without WHERE, UPDATE will change ALL records ❌
👉 With WHERE, UPDATE changes ONLY selected record ✅


💻 PRACTICAL PART


🔧 EXAMPLE 1

UPDATE students

SET name = 'Aliyu Ibrahim'

WHERE id = 1;


🧠 WORD-BY-WORD EXPLANATION


UPDATE

👉 Means: “change existing data”


students

👉 Table where data is stored


SET

👉 Means: “assign new value”


name

👉 Column being changed


=

👉 Means: replace old value with new value


'Aliyu Ibrahim'

👉 New name being saved


WHERE

👉 Condition (very important)


id = 1

👉 Only row with ID 1 will be updated


📌 FULL MEANING:

👉 “Change the name of the student whose ID is 1 to Aliyu Ibrahim”


🔧 EXAMPLE 2

UPDATE students

SET phone = '09011112222'

WHERE name = 'Aisha Bello';


🧠 WORD-BY-WORD EXPLANATION


UPDATE

👉 Modify existing data


students

👉 Table name


SET

👉 Assign new value


phone

👉 Column being changed


=

👉 Replace value


'09011112222'

👉 New phone number


WHERE

👉 Filter condition


name = 'Aisha Bello'

👉 Only update this student


📌 FULL MEANING:

👉 “Change Aisha Bello’s phone number to 09011112222”


🧠 VERY IMPORTANT UNDERSTANDING

UPDATE changes existing records
SET defines new value
WHERE protects other data


⚠️ WARNING (VERY IMPORTANT IN CLASS)

UPDATE students

SET name = 'Test';

👉 This will change ALL students ❌

That is why WHERE is VERY IMPORTANT.


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Update a student name using ID


ANSWER:

UPDATE students

SET name = 'John Michael'

WHERE id = 2;


🧠 EXPLANATION:

  • Find student with ID 2
  • Change name to John Michael

🧠 TASK 2:

👉 Update phone number using name


ANSWER:

UPDATE students

SET phone = '08123456789'

WHERE name = 'Aliyu Musa';


🧠 EXPLANATION:

  • Find Aliyu Musa
  • Change his phone number

🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What UPDATE means
How SET works
Why WHERE is important
How to modify records safely


If you want next, I will continue:

👉 WEEK 5 – TUESDAY (DELETE DATA – REMOVING RECORDS SAFELY)

Good — I will teach this strictly like a classroom lesson, ONLY inside:

🟡 WEEK 5 – TUESDAY

📘 TOPIC: DELETE (REMOVING DATA)


🧠 1. WHAT IS DELETE?

📘 Meaning:

DELETE is used to remove existing records from a table.


🧠 Simple Explanation:

When data is no longer needed:

👉 DELETE removes it from the database.

Example:

  • Remove a wrong student record
  • Delete an old course

⚠️ VERY IMPORTANT RULE

👉 DELETE WITHOUT WHERE = DANGEROUS ❌
👉 DELETE WITH WHERE = SAFE ✅


💻 PRACTICAL PART


🔧 EXAMPLE 1

DELETE FROM students

WHERE id = 3;


🧠 WORD-BY-WORD EXPLANATION


DELETE

👉 Means: remove data permanently


FROM

👉 Specifies the table


students

👉 Table name


WHERE

👉 Condition (very important filter)


id = 3

👉 Only delete record where ID is 3


📌 FULL MEANING:

👉 “Remove the student whose ID is 3 from the students table”


🔧 EXAMPLE 2

DELETE FROM students

WHERE name = 'John';


🧠 WORD-BY-WORD EXPLANATION


DELETE

👉 Remove data


FROM students

👉 From students table


WHERE

👉 Filter condition


name = 'John'

👉 Only delete student named John


📌 FULL MEANING:

👉 “Delete student record where name is John”


⚠️ DANGER EXAMPLE (VERY IMPORTANT)

DELETE FROM students;

👉 This deletes EVERYTHING in the table ❌❌❌


🧠 TEACHER WARNING:

Without WHERE:

  • All students will be deleted
  • Table becomes empty

🧠 KEY UNDERSTANDING

DELETE removes records permanently
WHERE protects data
Missing WHERE = total data loss


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Delete a student using ID


ANSWER:

DELETE FROM students

WHERE id = 2;


🧠 EXPLANATION:

  • Find student with ID 2
  • Remove that record

🧠 TASK 2:

👉 Delete a course by name


ANSWER:

DELETE FROM courses

WHERE course_name = 'MySQL Basics';


🧠 EXPLANATION:

  • Find course named MySQL Basics
  • Delete it from courses table

🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What DELETE means
How to remove specific records
Why WHERE is very important
Danger of deleting all data


If you want next, I will continue:

👉 WEEK 5 – WEDNESDAY (COMBINING UPDATE + DELETE PRACTICE – REAL DATABASE MANAGEMENT LAB)

WEEK 5 – WEDNESDAY

📘 TOPIC: COMBINING UPDATE + DELETE (DATABASE CLEANING)


🧠 1. WHAT IS DATABASE CLEANING?

📘 Meaning:

Database cleaning means correcting and removing wrong or unwanted data in a table.


🧠 Simple Explanation:

In real systems:

  • Students may have wrong names
  • Courses may be duplicated
  • Data may need correction

👉 So we use:

  • UPDATE → to fix errors
  • DELETE → to remove wrong records

🧠 2. TODAY’S FOCUS

Fix wrong data
Remove unwanted data
Keep database clean and accurate


💻 PRACTICAL PART


🔧 EXAMPLE 1 (UPDATE – FIXING DATA)

UPDATE courses
SET course_name = 'Advanced MySQL'
WHERE id = 2;


🧠 WORD-BY-WORD EXPLANATION


UPDATE

👉 Means: change existing data


courses

👉 Table name


SET

👉 Assign new value


course_name

👉 Column being updated


=

👉 Replace old value


'Advanced MySQL'

👉 New corrected course name


WHERE id = 2

👉 Only update record with ID 2


📌 FULL MEANING:

👉 “Change the course name of ID 2 to Advanced MySQL”


🔧 EXAMPLE 2 (DELETE – REMOVING DATA)

DELETE FROM courses
WHERE id = 5;


🧠 WORD-BY-WORD EXPLANATION


DELETE

👉 Remove data permanently


FROM courses

👉 From courses table


WHERE

👉 Filter condition


id = 5

👉 Only delete record with ID 5


📌 FULL MEANING:

👉 “Delete course whose ID is 5”


🧠 KEY CLASS UNDERSTANDING

UPDATE = fix wrong data
DELETE = remove wrong data
WHERE = protects correct data


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Correct wrong course name


ANSWER:

UPDATE courses
SET course_name = 'Python Programming'
WHERE course_name = 'Pyhton Programing';


🧠 EXPLANATION:

  • Find wrong spelling
  • Replace with correct name

🧠 TASK 2:

👉 Remove duplicate student


ANSWER:

DELETE FROM students
WHERE id = 4;


🧠 EXPLANATION:

  • Find duplicate student by ID
  • Remove unwanted record

⚠️ TEACHER WARNING

Before DELETE:
👉 Always confirm ID or name
Otherwise you may delete correct data.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

How to fix database errors
How to remove duplicate records
How UPDATE and DELETE work together
Importance of data accuracy

🟢 THURSDAY: PROJECT PRACTICAL (DATA MANAGEMENT SYSTEM)

🎯 Project Task:

👉 “Fix and manage school database”


🧩 Tasks:

  • Update 5 student records
  • Delete 2 wrong entries
  • Clean course table

📝 Assignments:

1.     Update at least 5 students

2.     Delete incorrect records safely


🟢 FRIDAY: PROJECT PRACTICAL (DATABASE CLEANING)

🎯 Task:

👉 Improve database accuracy


🧩 Tasks:

  • Update student info
  • Remove incorrect courses

📝 Assignments:

1.     Clean full student table

2.     Explain why WHERE is important

Good — I will teach this like a classroom lesson, strictly inside:

🟡 WEEK 6 – MONDAY

📘 TOPIC: INTRO TO RELATIONSHIPS (WHY TABLES CONNECT)


🧠 1. WHAT IS A RELATIONSHIP?

📘 Meaning:

A relationship is a connection between two or more tables in a database.


🧠 Simple Explanation:

In real life:

  • A student can study many courses
  • A course can have many students

👉 So we must connect tables to show this relationship


🧠 2. WHY TABLES CONNECT

📘 Explanation:

If we keep everything in one table:

  • Data becomes messy
  • Repetition increases
  • Hard to manage

🧠 Better Approach:

students table → student info
courses table → course info
connection table → links them

👉 This is called a relationship system


🧠 3. REAL-LIFE EXAMPLE

Student → Course

Student

Course

Aliyu

MySQL

Aliyu

Django

Aisha

MySQL

👉 One student can have many courses
👉 One course can have many students


💻 PRACTICAL PART


🔧 EXAMPLE 1 (COURSES TABLE)

CREATE TABLE courses (

  id INT AUTO_INCREMENT PRIMARY KEY,

  course_name VARCHAR(100)

);


🧠 WORD-BY-WORD EXPLANATION


CREATE TABLE

👉 Create a new table


courses

👉 Table name (stores course data)


id INT AUTO_INCREMENT PRIMARY KEY

  • id → unique course ID
  • INT → numbers
  • AUTO_INCREMENT → automatic numbering
  • PRIMARY KEY → unique identifier

course_name VARCHAR(100)

  • course_name → name of course
  • VARCHAR → text
  • 100 → max characters

📌 FULL MEANING:

👉 “Create a courses table with unique ID and course name”


🔧 EXAMPLE 2 (RELATIONSHIP TABLE)

CREATE TABLE student_courses (

  student_id INT,

  course_id INT

);


🧠 WORD-BY-WORD EXPLANATION


CREATE TABLE

👉 Create a new table


student_courses

👉 Table name used to connect students and courses


student_id INT

👉 Stores student ID from students table


course_id INT

👉 Stores course ID from courses table


📌 FULL MEANING:

👉 “Create a table that links students and courses using their IDs”


🧠 VERY IMPORTANT UNDERSTANDING

This table does NOT store names
It stores IDs only
It connects two tables together


🧠 SIMPLE VISUAL STRUCTURE

students            courses

---------          ----------

id                 id

name               course_name

 

        ↓ connects via ↓

 

      student_courses

      ----------------

      student_id

      course_id


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Explain relationship in your own words


SAMPLE ANSWER:

A relationship is a connection between tables in a database that allows data from one table to be linked to another table.


🧠 SIMPLE VERSION:

👉 Relationship means linking tables together.


🧠 TASK 2:

👉 Draw student-course connection


SAMPLE DRAWING:

students

---------

id | name

 

courses

---------

id | course_name

 

student_courses

----------------

student_id | course_id


🧠 EXPLANATION:

  • student_id links to students table
  • course_id links to courses table

🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What a relationship is
Why tables must connect
How real systems avoid repetition
How connection tables work


If you want next, I will continue:

Good — CRUD on a relationship (junction) table is exactly how real systems like school portals work.

I’ll use a simple example:

  • Student table

  • Course table

  • Enrollment (relationship) table


🔵 Crud for relationship table 

1. CREATE (Add relationship table structure)

This is just the setup (done once)

CREATE TABLE enrollment (
    enroll_id INT PRIMARY KEY,
    student_id INT,
    course_id INT
);

👉 Meaning: “I want a table that connects students and courses”


🟢 2. INSERT (Create relationship / register student)

INSERT INTO enrollment (enroll_id, student_id, course_id)
VALUES (1, 1, 101);

👉 Meaning:

  • student_id = 1 (Bola)

  • course_id = 101 (MySQL)

✔ Bola registered for MySQL


🟡 3. READ (SELECT data from relationship)

Show all registrations

SELECT * FROM enrollment;

Output

enroll_idstudent_idcourse_id
11101

Show names (real system view)

SELECT student.student_name, course.course_name
FROM enrollment
JOIN student ON enrollment.student_id = student.student_id
JOIN course ON enrollment.course_id = course.course_id;

Output

student_namecourse_name
BolaMySQL

🟠 4. UPDATE (Change relationship)

Example: change Bola from MySQL to Python

UPDATE enrollment
SET course_id = 102
WHERE student_id = 1 AND course_id = 101;

👉 Meaning:

  • remove old course

  • assign new course


🔴 5. DELETE (Remove relationship)

Remove a student from a course

DELETE FROM enrollment
WHERE student_id = 1 AND course_id = 102;

👉 Meaning:

  • Bola is no longer taking Python


⭐ Final Simple Understanding

  • CREATE → build relationship table

  • INSERT → connect student + course

  • SELECT → view relationships

  • UPDATE → change course/student link

  • DELETE → remove link


If you want next step, I can give you a mini project (school system CRUD test) where you practice like real exam qu

👉 WEEK 6 – TUESDAY (INNER JOIN – HOW TO COMBINE TABLES AND SEE LINKED DATA)

Good — I will teach this like a classroom lesson, strictly inside:

🟡 WEEK 6 – TUESDAY

📘 TOPIC: INNER JOIN (COMBINING TABLES)


🧠 1. WHAT IS INNER JOIN?

📘 Meaning:

INNER JOIN is used to combine data from two or more tables based on a related column.


🧠 Simple Explanation:

We already have:

  • students table → student names
  • courses table → course names
  • student_courses table → connects them

👉 INNER JOIN helps us see the full result together


🧠 Real Idea:

Without JOIN:

  • Data is separated ❌

With JOIN:

  • Data is combined into one result ✅

💻 PRACTICAL PART


🔧 EXAMPLE 1 (FULL JOIN)

SELECT students.name, courses.course_name

FROM students

JOIN student_courses ON students.id = student_courses.student_id

JOIN courses ON courses.id = student_courses.course_id;


🧠 WORD-BY

📌 SQL Query

SELECT nobigdealstudents.student_name,
       nobigdealcourses.course_name

FROM nobigdealstudent 
JOIN student_course_relationship
ON nobigdealstudents.id = student_course_relationship.student_id

JOIN nobigdealcourses
ON nobigdealcourses.id = student_course_relationship.course_id;

🎯 What This Query Does

This query displays:

✅ Student names
✅ The courses they registered for


🔍 Step-by-Step Explanation


1️⃣ SELECT

SELECT nobigdealstudents.student_name,
       nobigdealcourses.course_name

This means:

👉 “Show the student name and the course name.”


Example Output

student_namecourse_name
JohnWeb Development
MaryData Analysis

2️⃣ FROM nobigdealstudents

FROM nobigdealstudents

This tells SQL:

👉 “Start with the nobigdealstudents table.”


Example Table

idstudent_name
1John
2Mary

3️⃣ JOIN student_course_relationship

JOIN student_course_relationship
ON nobigdealstudents.id = student_course_relationship.student_id

This connects students to the relationship table.


📘 Relationship Table

student_idcourse_id
11
12
22

Meaning:

  • John registered for Course 1

  • John registered for Course 2

  • Mary registered for Course 2


🔗 ON Condition

nobigdealstudents.id = student_course_relationship.student_id

This matches:

Student ID  →  Relationship Student ID

So SQL knows which course belongs to which student.


4️⃣ JOIN nobigdealcourses

JOIN nobigdealcourses
ON nobigdealcourses.id = student_course_relationship.course_id;

Now SQL connects the courses table.


📗 Courses Table

idcourse_name
1Web Development
2Data Analysis

🔗 ON Condition

nobigdealcourses.id = student_course_relationship.course_id

This matches:

Course ID → Relationship Course ID

🧠 How All Tables Connect

nobigdealstudents
        |
        | id
        ↓
student_course_relationship
        ↑
        | course_id
nobigdealcourses

🚀 Final Result

SQL combines everything and shows:

student_namecourse_name
JohnWeb Development
JohnData Analysis
MaryData Analysis

💡 Simple Meaning

This query says:

👉 “Show every student and the courses they are taking.”



🔧 EXAMPLE 2 (PARTIAL JOIN)

SELECT students.name, student_courses.course_id

FROM students

JOIN student_courses ON students.id = student_courses.student_id;


🧠 WORD-BY-WORD EXPLANATION


SELECT students.name, student_courses.course_id

👉 Show:

  • student name
  • course ID

FROM students

👉 Start from students table


JOIN student_courses

👉 Connect students with relationship table


ON students.id = student_courses.student_id

👉 Match student IDs


📌 FULL MEANING:

👉 “Show student names with their course IDs”


🧠 IMPORTANT UNDERSTANDING

JOIN connects tables
ON defines how they connect
You can combine multiple tables


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Join students and courses


ANSWER:

SELECT students.name, courses.course_name

FROM students

JOIN student_courses ON students.id = student_courses.student_id

JOIN courses ON courses.id = student_courses.course_id;


🧠 EXPLANATION:

You are connecting all tables to display full information.


🧠 TASK 2:

👉 Display student-course mapping


ANSWER:

SELECT students.name, student_courses.course_id

FROM students

JOIN student_courses ON students.id = student_courses.student_id;


🧠 EXPLANATION:

You are showing which student is linked to which course ID.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What INNER JOIN means
How to combine multiple tables
How ON condition works
How relationships display real data


If you want next, I will continue:

👉 WEEK 6 – WEDNESDAY (JOIN PRACTICE – BUILD FULL STUDENT-COURSE SYSTEM WITH DATA)

 

Good — I will teach this like a practical classroom session, strictly inside:

🟡 WEEK 6 – WEDNESDAY

📘 TOPIC: PRACTICAL JOIN EXERCISE (REAL SYSTEM LOGIC)


🧠 1. WHAT ARE WE DOING TODAY?

📘 Meaning:

Today you are practicing how relationships work in a real system.


🧠 Simple Explanation:

You already learned:

  • students table
  • courses table
  • student_courses table

👉 Today you will:
Connect them
Display real data
Count records


🧠 2. REAL SYSTEM LOGIC

In real life:

👉 A student can register for many courses
👉 A course can have many students

👉 So we use JOIN to see the full picture


💻 PRACTICAL PART


🔧 EXAMPLE 1 (SHOW FULL RELATIONSHIP)

SELECT students.name, courses.course_name

FROM students

JOIN student_courses ON students.id = student_courses.student_id

JOIN courses ON courses.id = student_courses.course_id;


🧠 WORD-BY-WORD EXPLANATION


SELECT students.name, courses.course_name

👉 Show:

  • student names
  • course names

FROM students

👉 Start from students table


JOIN student_courses

👉 Connect students with relationship table


ON students.id = student_courses.student_id

👉 Match student IDs


JOIN courses

👉 Connect courses table


ON courses.id = student_courses.course_id

👉 Match course IDs


📌 FULL MEANING:

👉 “Show all students and the courses they are studying”


🧠 RESULT EXAMPLE:

name

course_name

Aliyu Musa

MySQL

Aliyu Musa

Django

Aisha Bello

MySQL


🔧 EXAMPLE 2 (COUNT RECORDS)

SELECT COUNT(student_id) FROM student_courses;


🧠 WORD-BY-WORD EXPLANATION


SELECT

👉 Show result


COUNT(student_id)

👉 Count number of student_id entries

👉 This tells us:
“How many records exist”


FROM student_courses

👉 From relationship table


📌 FULL MEANING:

👉 “Count how many student-course registrations exist”


🧠 RESULT EXAMPLE:

COUNT(student_id)

5

👉 Means 5 course enrollments


🧠 IMPORTANT UNDERSTANDING

JOIN shows relationships
COUNT counts records
student_courses shows enrollment


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Show all student-course links


ANSWER:

SELECT students.name, courses.course_name

FROM students

JOIN student_courses ON students.id = student_courses.student_id

JOIN courses ON courses.id = student_courses.course_id;


🧠 EXPLANATION:

You are displaying full relationship between students and courses.


🧠 TASK 2:

👉 Count enrolled students


ANSWER:

SELECT COUNT(student_id) FROM student_courses;


🧠 EXPLANATION:

You are counting how many course enrollments exist.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

How relationships work in real systems
How JOIN displays connected data
How COUNT helps analyze data
How to interpret database results


If you want next, I will continue:

👉 WEEK 7 (DATA ANALYSIS – SUM, AVG, GROUP BY, HAVING)

 

🟢 THURSDAY: PROJECT PRACTICAL (RELATIONSHIP SYSTEM)

🎯 Task:

👉 Build student-course system


🧩 Tasks:

  • Create relationship tables
  • Link students to courses

📝 Assignments:

1.     Assign 5 students to courses

2.     Display joined result


🟢 FRIDAY: PROJECT PRACTICAL

🎯 Task:

👉 Full mini school system


🧩 Tasks:

  • Build complete student-course system

📝 Assignments:

1.     Show full student-course report

2.     Explain JOIN in real life


Good — I will teach this like a clear classroom lesson, strictly inside:

🟡 WEEK 7 – MONDAY

📘 TOPIC: COUNT (COUNTING RECORDS)


🧠 1. WHAT IS COUNT?

📘 Meaning:

COUNT is used to count the number of records (rows) in a table.


🧠 Simple Explanation:

If you want to know:

  • How many students you have
  • How many courses exist

👉 You use COUNT


🧠 REAL IDEA:

Instead of manually counting:

👉 MySQL counts for you automatically ✅


💻 PRACTICAL PART


🔧 EXAMPLE 1

SELECT COUNT(*) FROM students;


🧠 WORD-BY-WORD EXPLANATION


SELECT

👉 Show result


COUNT(*)

COUNT

👉 Means: count records

*

👉 Means: all rows

👉 Together:
👉 Count all records in the table


FROM students

👉 From students table


📌 FULL MEANING:

👉 “Count all students in the students table”


🧠 RESULT EXAMPLE:

COUNT(*)

5

👉 Meaning: there are 5 students


🔧 EXAMPLE 2

SELECT COUNT(*) FROM courses;


🧠 WORD-BY-WORD EXPLANATION


SELECT COUNT(*)

👉 Count all records


FROM courses

👉 From courses table


📌 FULL MEANING:

👉 “Count all courses in the courses table”


🧠 RESULT EXAMPLE:

COUNT(*)

3

👉 Meaning: there are 3 courses


🧠 IMPORTANT UNDERSTANDING

COUNT(*) counts all rows
It is used for analysis
Helps in reports and decisions


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Count all students


ANSWER:

SELECT COUNT(*) FROM students;


🧠 EXPLANATION:

This shows total number of students.


🧠 TASK 2:

👉 Count all courses


ANSWER:

SELECT COUNT(*) FROM courses;


🧠 EXPLANATION:

This shows total number of courses.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What COUNT means
How to count records in a table
How to analyze data using COUNT
How to read results from COUNT


If you want next, I will continue:

👉 WEEK 7 – TUESDAY (SUM & AVG – TOTAL AND AVERAGE CALCULATION)

Good — I will teach this like a clear classroom lesson, strictly inside:

🟡 WEEK 7 – TUESDAY

📘 TOPIC: SUM & AVG (TOTAL AND AVERAGE)


🧠 1. WHAT IS SUM?

📘 Meaning:

SUM is used to calculate the total of a numeric column.


🧠 Simple Explanation:

If you have payments like:

  • 1000
  • 2000
  • 3000

👉 SUM will add everything:

👉 Total = 6000


🧠 2. WHAT IS AVG?

📘 Meaning:

AVG is used to calculate the average (mean) value of a column.


🧠 Simple Explanation:

Using same numbers:

  • 1000
  • 2000
  • 3000

👉 AVG = (1000 + 2000 + 3000) ÷ 3
👉 AVG = 2000


💻 PRACTICAL PART


🔧 EXAMPLE 1 (SUM)

SELECT SUM(amount) FROM payments;


🧠 WORD-BY-WORD EXPLANATION


SELECT

👉 Show result


SUM(amount)

SUM

👉 Add all values together

amount

👉 Column being calculated (money column)


FROM payments

👉 From payments table


📌 FULL MEANING:

👉 “Calculate the total amount of all payments”


🧠 RESULT EXAMPLE:

SUM(amount)

15000.00

👉 Meaning: total money received is 15,000


🔧 EXAMPLE 2 (AVG)

SELECT AVG(amount) FROM payments;


🧠 WORD-BY-WORD EXPLANATION


SELECT

👉 Show result


AVG(amount)

AVG

👉 Calculate average value

amount

👉 Column being calculated


FROM payments

👉 From payments table


📌 FULL MEANING:

👉 “Calculate the average payment amount”


🧠 RESULT EXAMPLE:

AVG(amount)

3000.00

👉 Meaning: average payment is 3,000


🧠 IMPORTANT UNDERSTANDING

SUM = total
AVG = average
Works only on numeric columns (INT, DECIMAL)


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Find total payment


ANSWER:

SELECT SUM(amount) FROM payments;


🧠 EXPLANATION:

Adds all payment values to give total income.


🧠 TASK 2:

👉 Find average payment


ANSWER:

SELECT AVG(amount) FROM payments;


🧠 EXPLANATION:

Calculates the average amount paid.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What SUM means
What AVG means
How to calculate totals and averages
How to analyze financial data


If you want next, I will continue:

👉 WEEK 7 – WEDNESDAY (GROUP BY & HAVING – ADVANCED ANALYSIS)

Good — I will teach this like a classroom lesson, strictly inside:

🟡 WEEK 7 – WEDNESDAY

📘 TOPIC: BUSINESS ANALYSIS (GROUP BY + COUNT)


🧠 1. WHAT IS BUSINESS ANALYSIS?

📘 Meaning:

Business analysis means using data to understand and make decisions.


🧠 Simple Explanation:

In a training center, we may want to know:

  • How much each student paid
  • How many payments were made

👉 We use SQL to answer these questions.


🧠 2. WHAT IS GROUP BY?

📘 Meaning:

GROUP BY is used to group rows that have the same value.


🧠 Simple Explanation:

If many payments belong to one student:

👉 GROUP BY will combine them and allow calculation (like SUM)


💻 PRACTICAL PART


🔧 EXAMPLE 1 (TOTAL PER STUDENT)

SELECT student_id, SUM(amount)

FROM payments

GROUP BY student_id;


🧠 WORD-BY-WORD EXPLANATION


SELECT student_id, SUM(amount)

👉 student_id → identifies student
👉 SUM(amount) → total payment


FROM payments

👉 From payments table


GROUP BY student_id

👉 Group all records by student ID

👉 So each student gets one total


📌 FULL MEANING:

👉 “Show each student and the total amount they have paid”


🧠 RESULT EXAMPLE:

student_id

SUM(amount)

1

5000

2

3000

3

7000


🔧 EXAMPLE 2 (COUNT ALL TRANSACTIONS)

SELECT COUNT(*) FROM payments;


🧠 WORD-BY-WORD EXPLANATION


SELECT COUNT(*)

👉 COUNT = count records
👉 * = all rows


FROM payments

👉 From payments table


📌 FULL MEANING:

👉 “Count all payment records (transactions)”


🧠 RESULT EXAMPLE:

COUNT(*)

6

👉 Meaning: 6 payments made


🧠 IMPORTANT UNDERSTANDING

GROUP BY groups similar records
SUM calculates totals
COUNT counts records
Used for reporting and decision-making


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Total payment per student


ANSWER:

SELECT student_id, SUM(amount)

FROM payments

GROUP BY student_id;


🧠 EXPLANATION:

You are calculating how much each student has paid in total.


🧠 TASK 2:

👉 Count transactions


ANSWER:

SELECT COUNT(*) FROM payments;


🧠 EXPLANATION:

You are counting all payment records.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What GROUP BY means
How to calculate totals per group
How COUNT is used in reports
How SQL helps in business decisions


If you want next, I will continue:

👉 THURSDAY (PROJECT PRACTICAL – FULL PAYMENT ANALYSIS SYSTEM)

THURSDAY: PROJECT PRACTICAL (REPORT SYSTEM)

🎯 Task:

👉 Build payment analysis system


🧩 Tasks:

  • Calculate totals
  • Analyze students

📝 Assignments:

1.     Find highest paying student

2.     Show total income


🟢 FRIDAY: PROJECT PRACTICAL

🎯 Task:

👉 Business report system


🧩 Tasks:

  • Build payment report

📝 Assignments:

1.     Create income report

2.     Identify top student


Good — I will teach this like a clear classroom lesson, strictly inside:

🟡 WEEK 8 – MONDAY

📘 TOPIC: GROUP BY (GROUPING DATA)


🧠 1. WHAT IS GROUP BY?

📘 Meaning:

GROUP BY is used to group rows that have the same value in a column.


🧠 Simple Explanation:

If one student has many payments:

👉 GROUP BY will gather all their records together.


🧠 REAL IDEA:

Without GROUP BY:

  • Data is scattered ❌

With GROUP BY:

  • Data is organized into groups ✅

💻 PRACTICAL PART


🔧 EXAMPLE 1 (GROUP PAYMENTS BY STUDENT)

SELECT student_id, COUNT(*)

FROM payments

GROUP BY student_id;


🧠 WORD-BY-WORD EXPLANATION


SELECT student_id, COUNT(*)

👉 student_id → identifies each student
👉 COUNT(*) → counts how many records


FROM payments

👉 From payments table


GROUP BY student_id

👉 Group records based on student ID


📌 FULL MEANING:

👉 “Show each student and how many payments they made”


🧠 RESULT EXAMPLE:

student_id

COUNT(*)

1

2

2

1

3

3


🔧 EXAMPLE 2 (GROUP STUDENTS BY COURSE)

SELECT course_id, COUNT(*)

FROM student_courses

GROUP BY course_id;


🧠 WORD-BY-WORD EXPLANATION


SELECT course_id, COUNT(*)

👉 course_id → identifies course
👉 COUNT(*) → number of students


FROM student_courses

👉 From relationship table


GROUP BY course_id

👉 Group by course


📌 FULL MEANING:

👉 “Show each course and number of students in it”


🧠 RESULT EXAMPLE:

course_id

COUNT(*)

1

5

2

3


🧠 IMPORTANT UNDERSTANDING

GROUP BY organizes data
COUNT counts records in each group
Useful for reports


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Group payments by student


ANSWER:

SELECT student_id, COUNT(*)

FROM payments

GROUP BY student_id;


🧠 EXPLANATION:

You are counting how many payments each student made.


🧠 TASK 2:

👉 Group students by course


ANSWER:

SELECT course_id, COUNT(*)

FROM student_courses

GROUP BY course_id;


🧠 EXPLANATION:

You are counting how many students are in each course.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What GROUP BY means
How to group records
How to count within groups
How to analyze grouped data


If you want next, I will continue:

👉 WEEK 8 – TUESDAY (HAVING – FILTERING GROUPED DATA)

Good — I will teach this like a clear classroom lesson, strictly inside:

🟡 WEEK 8 – TUESDAY

📘 TOPIC: HAVING (FILTERING GROUPED DATA)


🧠 1. WHAT IS HAVING?

📘 Meaning:

HAVING is used to filter results after GROUP BY has been applied.


🧠 Simple Explanation:

  • WHERE → filters rows before grouping
  • HAVING → filters groups after grouping

👉 So HAVING works with:

  • SUM
  • COUNT
  • AVG

🧠 REAL IDEA

If you group data:

👉 HAVING helps you select only important results

Example:

  • Students who paid more than 5000
  • Courses with more than 2 students

💻 PRACTICAL PART


🔧 EXAMPLE 1 (TOP PAYING STUDENTS)

SELECT student_id, SUM(amount)

FROM payments

GROUP BY student_id

HAVING SUM(amount) > 5000;


🧠 WORD-BY-WORD EXPLANATION


SELECT student_id, SUM(amount)

👉 student_id → identifies student
👉 SUM(amount) → total payment


FROM payments

👉 From payments table


GROUP BY student_id

👉 Group payments by each student


HAVING SUM(amount) > 5000

👉 Filter grouped result

  • SUM(amount) → total payment

·         5000 → only students who paid more than 5000


📌 FULL MEANING:

👉 “Show students whose total payment is greater than 5000”


🧠 RESULT EXAMPLE:

student_id

SUM(amount)

1

7000

3

8000


🔧 EXAMPLE 2 (POPULAR COURSES)

SELECT course_id, COUNT(*)

FROM student_courses

GROUP BY course_id

HAVING COUNT(*) > 2;


🧠 WORD-BY-WORD EXPLANATION


SELECT course_id, COUNT(*)

👉 course_id → identifies course
👉 COUNT(*) → number of students


FROM student_courses

👉 From relationship table


GROUP BY course_id

👉 Group by each course


HAVING COUNT(*) > 2

👉 Filter groups

  • COUNT(*) → number of students

·         2 → only courses with more than 2 students


📌 FULL MEANING:

👉 “Show courses that have more than 2 students”


🧠 RESULT EXAMPLE:

course_id

COUNT(*)

1

5

2

3


🧠 IMPORTANT UNDERSTANDING

HAVING filters grouped results
Works after GROUP BY
Used with SUM, COUNT, AVG


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Show top paying students


ANSWER:

SELECT student_id, SUM(amount)

FROM payments

GROUP BY student_id

HAVING SUM(amount) > 5000;


🧠 EXPLANATION:

Shows students whose total payment is above 5000.


🧠 TASK 2:

👉 Show popular courses


ANSWER:

SELECT course_id, COUNT(*)

FROM student_courses

GROUP BY course_id

HAVING COUNT(*) > 2;


🧠 EXPLANATION:

Shows courses with many students (more than 2).


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What HAVING means
Difference between WHERE and HAVING
How to filter grouped data
How to find important business insights


If you want next, I will continue:

👉 WEDNESDAY (FULL BUSINESS REPORT – COMBINING COUNT, SUM, GROUP BY, HAVING)

Good — I will teach this like a complete classroom lesson, strictly inside:

🟡 WEEK 8 – WEDNESDAY

📘 TOPIC: FULL ANALYSIS (BUSINESS DECISION MAKING)


🧠 1. WHAT IS FULL ANALYSIS?

📘 Meaning:

Full analysis means combining multiple SQL functions to understand data for decision making.


🧠 Simple Explanation:

Instead of just:

  • counting OR
  • summing

👉 We now combine:
SUM (total money)
COUNT (number of transactions)

👉 To understand the full situation


🧠 REAL BUSINESS IDEA

A training center wants to know:

  • Which student pays the most
  • Which course is most popular

👉 This is called business reporting


💻 PRACTICAL PART


🔧 EXAMPLE 1 (STUDENT PAYMENT ANALYSIS)

SELECT student_id, SUM(amount), COUNT(*)

FROM payments

GROUP BY student_id;


🧠 WORD-BY-WORD EXPLANATION


SELECT student_id, SUM(amount), COUNT(*)

👉 student_id → identifies student
👉 SUM(amount) → total payment
👉 COUNT(*) → number of payments


FROM payments

👉 From payments table


GROUP BY student_id

👉 Group all records by each student


📌 FULL MEANING:

👉 “Show each student, total money paid, and number of payments made”


🧠 RESULT EXAMPLE:

student_id

SUM(amount)

COUNT(*)

1

7000

2

2

3000

1

3

9000

3


🧠 BUSINESS MEANING:

👉 Student 3 pays the most
👉 Student 3 pays more frequently


🔧 EXAMPLE 2 (COURSE POPULARITY ANALYSIS)

SELECT course_id, COUNT(student_id)

FROM student_courses

GROUP BY course_id;


🧠 WORD-BY-WORD EXPLANATION


SELECT course_id, COUNT(student_id)

👉 course_id → identifies course
👉 COUNT(student_id) → number of students


FROM student_courses

👉 From relationship table


GROUP BY course_id

👉 Group records by course


📌 FULL MEANING:

👉 “Show each course and how many students are enrolled”


🧠 RESULT EXAMPLE:

course_id

COUNT(student_id)

1

5

2

3


🧠 BUSINESS MEANING:

👉 Course 1 is more popular
👉 Course 2 has fewer students


🧠 IMPORTANT UNDERSTANDING

SUM shows total
COUNT shows frequency
GROUP BY organizes data
Combined = full business insight


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Analyze student payments


ANSWER:

SELECT student_id, SUM(amount), COUNT(*)

FROM payments

GROUP BY student_id;


🧠 EXPLANATION:

You are analyzing how much each student paid and how many times.


🧠 TASK 2:

👉 Analyze course popularity


ANSWER:

SELECT course_id, COUNT(student_id)

FROM student_courses

GROUP BY course_id;


🧠 EXPLANATION:

You are checking which courses have more students.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

How to combine SUM and COUNT
How to analyze student behavior
How to measure course popularity
How SQL supports business decisions


If you want next, I will move you into:

👉 MONTH 3: MYSQL + DJANGO (REAL APPLICATION DEVELOPMENT)

THURSDAY: PROJECT PRACTICAL (FULL REPORT SYSTEM)

🎯 Task:

👉 Build business dashboard queries


🧩 Tasks:

  • Generate reports
  • Identify performance

📝 Assignments:

1.     Create full report system

2.     Show top 3 students


🟢 FRIDAY: PROJECT PRACTICAL (FINAL WEEK 2 PROJECT)

🎯 Final Task:

👉 Complete school reporting system


🧩 Tasks:

  • Combine all SQL knowledge

📝 Assignments:

1.     Build full analytics system

2.     Present results like a dashboard


🎯 END OF MONTH 2 OUTCOME

Students can now:

Update & manage databases
Connect tables (JOIN)
Analyze data (SUM, AVG, COUNT)
Group business data
Build real reporting systems

 

MONTH 3: MYSQL + DJANGO (WEB DEVELOPMENT INTEGRATION)

💻 BUILDING REAL-WORLD APPLICATIONS


🎯 MONTH GOAL:

Students will:
Connect MySQL to Django
Build web applications
Create models (tables in Django)
Display data on website
Build a full Student Management System

Good — I will teach this like a classroom lesson, strictly inside:

🟡 WEEK 9 – MONDAY

📘 TOPIC: INTRODUCTION TO DJANGO


🧠 1. WHAT IS DJANGO?

📘 Meaning:

Django is a Python framework used to build web applications.


🧠 Simple Explanation:

Django helps you create:

  • Websites
  • Web apps
  • Systems like school portals

👉 It handles the backend (logic + data processing)


🧠 VERY SIMPLE IDEA:

👉 MySQL = stores data
👉 Django = shows and controls data


🧠 2. BACKEND VS FRONTEND


FRONTEND

📘 Meaning:

Frontend is what users see on the screen.


🧠 Examples:

  • Buttons
  • Forms
  • Pages

BACKEND

📘 Meaning:

Backend is what happens behind the scene.


🧠 Examples:

  • Saving data
  • Processing requests
  • Connecting to database

🧠 SIMPLE COMPARISON:

Part

Work

Frontend

What user sees

Backend

Logic + database work


🧠 3. WHY DJANGO IS USED WITH MYSQL


📘 Explanation:

Django needs a place to store data.

👉 That place is a database like MySQL.


🧠 HOW THEY WORK TOGETHER:

  1. User fills a form (Frontend)
  2. Django receives data (Backend)
  3. Django saves data in MySQL
  4. Django retrieves data and shows it

🧠 SIMPLE FLOW:

User → Django → MySQL → Django → User


💻 PRACTICAL EXPLANATION


🔧 Example 1:

👉 Django is a Python framework used to build web applications.


🧠 Meaning:

  • Django uses Python
  • It helps create websites and systems

🔧 Example 2:

👉 MySQL stores data, Django displays it on web.


🧠 Meaning:

  • MySQL = database (storage)
  • Django = controller (handles display and logic)

🧠 REAL-LIFE EXAMPLE

School System:

  • Student registers → Django receives data
  • Django saves → MySQL
  • Teacher views students → Django retrieves data

📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Explain Django in your own words


SAMPLE ANSWER:

Django is a Python framework used to build web applications and handle backend operations like processing data and connecting to a database.


🧠 SIMPLE VERSION:

👉 Django is used to build and control websites using Python.


🧠 TASK 2:

👉 List 3 uses of Django


ANSWER:

  1. Building websites
  2. Creating web applications
  3. Connecting and managing databases

🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What Django is
Difference between backend and frontend
How Django works with MySQL
How real web systems operate


If you want next, I will continue:

👉 WEEK 9 – TUESDAY (INSTALLATION + DJANGO PROJECT SETUP STEP-BY-STEP)

🟡 WEEK 9 – TUESDAY

📘 TOPIC: INSTALLATION SETUP (DJANGO + MYSQL CONNECTOR)


🧠 1. WHAT IS INSTALLATION?

📘 Meaning:

Installation means putting software (Django, tools, libraries) into your computer so you can use it.


🧠 Simple Explanation:

Before you can build a Django project:

👉 You must install:

  • Django (web framework)
  • MySQL connector (to connect Django to MySQL)

🧠 2. WHAT YOU NEED FIRST

Before installation, you must have:

Python installed
Internet connection
Command line (CMD / Terminal)


💻 PRACTICAL PART


🔧 STEP 1: INSTALL DJANGO

pip install django


🧠 WORD-BY-WORD EXPLANATION


pip

👉 Python package manager
👉 Used to install Python tools


install

👉 Means “add software to system”


django

👉 The framework being installed


📌 FULL MEANING:

👉 “Download and install Django into Python system”


🧠 WHAT HAPPENS AFTER RUNNING:

Django is downloaded
Installed into Python
Ready for use


🔧 STEP 2: INSTALL MYSQL CONNECTOR

pip install mysqlclient


🧠 WORD-BY-WORD EXPLANATION


pip

👉 Python installer tool


install

👉 Add package


mysqlclient

👉 Tool that connects Django to MySQL database


📌 FULL MEANING:

👉 “Install tool that allows Django to communicate with MySQL”


🧠 IMPORTANT UNDERSTANDING

Django = web framework
MySQL = database
mysqlclient = bridge between them


💻 CHECK PYTHON VERSION


🔧 COMMAND:

python --version


🧠 WORD-BY-WORD EXPLANATION


python

👉 Runs Python system


--version

👉 Shows installed version


📌 FULL MEANING:

👉 “Show the version of Python installed on your computer”


🧠 RESULT EXAMPLE:

Python 3.11.2


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Install Django


ANSWER (COMMAND):

pip install django


🧠 EXPLANATION:

This installs Django framework into your system.


🧠 TASK 2:

👉 Check Python version


ANSWER (COMMAND):

python --version


🧠 EXPLANATION:

This shows which Python version is installed.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

How to install Django
How to install MySQL connector
How to check Python version
What tools are needed for Django setup


If you want next, I will continue:

👉 WEEK 9 – WEDNESDAY (CREATE DJANGO PROJECT + RUN SERVER STEP-BY-STEP)

🟡 WEEK 9 – WEDNESDAY

📘 TOPIC: CREATE DJANGO PROJECT


🧠 1. WHAT IS A DJANGO PROJECT?

📘 Meaning:

A Django project is the main container that holds your entire web application.


🧠 Simple Explanation:

Think of it like a box:

📦 Inside the box you have:

  • settings (configuration)
  • apps (features like students, courses)
  • database connection

👉 Everything in Django starts from a project.


🧠 2. PROJECT STRUCTURE (VERY IMPORTANT)

When you create a Django project, you will see files like:

school_system/

├── manage.py

├── school_system/

   ├── settings.py

   ├── urls.py

   ├── asgi.py

   └── wsgi.py


🧠 SIMPLE MEANING:

  • manage.py → runs commands
  • settings.py → configuration
  • urls.py → links pages
  • wsgi/asgi → deployment system

💻 PRACTICAL PART


🔧 STEP 1: CREATE DJANGO PROJECT

django-admin startproject school_system


🧠 WORD-BY-WORD EXPLANATION


django-admin

👉 Django command tool


startproject

👉 Means: create a new project


school_system

👉 Name of your project


📌 FULL MEANING:

👉 “Create a new Django project called school_system”


🔧 STEP 2: RUN SERVER

python manage.py runserver


🧠 WORD-BY-WORD EXPLANATION


python

👉 Runs Python


manage.py

👉 File that controls Django project commands


runserver

👉 Starts web server (makes project live)


📌 FULL MEANING:

👉 “Start Django web server so the project can run in browser”


🧠 WHAT YOU SEE AFTER RUNNING:

Starting development server at http://127.0.0.1:8000/

👉 Open this in browser


🧠 IMPORTANT UNDERSTANDING

Project = main container
runserver = start website
Django runs locally first


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Create Django project


ANSWER:

django-admin startproject school_system


🧠 EXPLANATION:

This creates a new Django project folder.


🧠 TASK 2:

👉 Run server


ANSWER:

python manage.py runserver


🧠 EXPLANATION:

This starts your Django website on local computer.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What a Django project is
Project structure
How to create a project
How to run Django server


If you want next, I will continue:

👉 WEEK 9 – THURSDAY (CREATE DJANGO APP + CONNECT TO MYSQL INTRO)

Got it — you want this as a proper classroom discussion lesson, not just notes.


WEEK 9 – THURSDAY

PROJECT PRACTICAL: CREATE DJANGO APP + CONNECT TO MYSQL (INTRO)

THURSDAY: SYSTEM SETUP DISCUSSION


1. Introduction (Class Discussion)

Today we are going to build a real web system using:

  • Django (backend framework)

  • MySQL (database)

  • Python (programming language)

Question for students:

👉 “Have you ever used a website that saves your information (like registration or login)?”

That is what we are building today.


2. Meaning of the System We Are Building

We are building a Student Management System

This system will:

  • Add students

  • Store student data

  • Connect to a database (MySQL)

  • Show students in admin panel


3. Key Concept Discussion

(A) What is Django?

Django is a tool that helps you build websites faster.

👉 Think of it like a house builder kit:

  • Instead of starting from zero

  • Django already gives you tools (login, database, admin)


(B) What is an App in Django?

A Django app is just ONE part of a project.

Example discussion:

👉 “In a school system, what departments do we have?”

Students will answer:

  • Students

  • Teachers

  • Fees

  • Results

✔ Each one is a Django app


(C) What is MySQL?

MySQL is where data is stored.

👉 Think of it like a digital cupboard

It stores:

  • Names

  • Emails

  • Courses

  • Passwords


4. Practical Setup (Step-by-Step Discussion)

Now we move to system setup.


STEP 1: Create Project Folder

mkdir django_mysql_project
cd django_mysql_project

Explanation:

  • mkdir = create folder

  • cd = enter folder

👉 Discussion question:
“What happens if we don’t organize our project in a folder?”


STEP 2: Create Virtual Environment

python -m venv venv

Meaning:

We are creating a private space for this project only

👉 Discussion:
“Why do we not install everything directly on our computer?”


STEP 3: Activate Environment

venv\Scripts\activate

Meaning:

We are switching ON the project workspace

👉 If successful you see:

(venv)

STEP 4: Install Django

pip install Django

Meaning:

We are downloading Django tools


STEP 5: Create Django Project

django-admin startproject config .

Breakdown:

  • django-admin = Django controller

  • startproject = create project

  • config = project name

  • . = put files in current folder


STEP 6: Start Server

python manage.py runserver

Open browser:

http://127.0.0.1:8000/

👉 If page opens, system is working


5. Create First App

python manage.py startapp students

Discussion:

👉 “Why do we not put everything in one file?”

Answer:
Because apps make project organized.


6. Register App

Open:

config/settings.py

Add:

INSTALLED_APPS = [
    "students",
]

Meaning:

We are telling Django:
👉 “This app is part of my project”


7. Connect Django to MySQL (Introduction)

Step 1: Create Database

In MySQL:

CREATE DATABASE student_portal;

Meaning:

We are creating storage for data.


8. Install MySQL Connector

pip install mysqlclient

Meaning:

This allows Django and MySQL to communicate.


9. Connect Database in Django

In settings.py:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "student_portal",
        "USER": "root",
        "PASSWORD": "your_password",
        "HOST": "127.0.0.1",
        "PORT": "3306",
    }
}

Discussion:

👉 “What happens if password is wrong?”

Answer:
Connection will fail


10. Final System Test

python manage.py migrate

Meaning:

Django creates tables in MySQL automatically


11. Class Activity (Practical Task)

Students should:

  1. Create Django project

  2. Create students app

  3. Connect MySQL database

  4. Run server successfully


12. Wrap-Up Discussion

Questions:

  • What is Django?

  • What is an app?

  • What is MySQL used for?

  • Why do we use virtual environment?


Simple Summary

👉 Django = Website builder
👉 App = One feature
👉 MySQL = Data storage
👉 Virtual environment = Project space


If you want, I can turn this into:
✔ PowerPoint slides
✔ PDF lesson note
✔ Teacher script (word-for-word teaching guide)
✔ Student assignment sheet

Just tell me 👍

THURSDAY: PROJECT PRACTICAL (SETUP SYSTEM)

🎯 Task:

👉 Start Django project for Training Centre


🧩 Tasks:

  • Create project
  • Run server

📝 Assignments:

1.     Create project called training_system

2.     Open localhost server


🟢 FRIDAY: PROJECT PRACTICAL

🎯 Task:

👉 Explore Django project structure


🧩 Tasks:

  • Understand folders

📝 Assignments:

1.     Identify project folders

2.     Explain what manage.py does

🟡 WEEK 10 – MONDAY

📘 TOPIC: DATABASE CONNECTION THEORY (DJANGO + MYSQL)


🧠 1. WHAT DOES “DATABASE CONNECTION” MEAN?

📘 Meaning:

A database connection is how Django communicates with a database (MySQL) to store and retrieve data.


🧠 Simple Explanation:

Think of it like this:

  • Django = the brain (controller) 🧠
  • MySQL = storage room (database) 📦

👉 The connection is the bridge between them


🧠 2. WHY DJANGO NEEDS A DATABASE

📘 Explanation:

Django is a web framework, but:

👉 It cannot store data by itself
👉 It needs a database like MySQL

So we connect them.


🧠 3. HOW DJANGO CONNECTS TO MYSQL

📘 Meaning:

Django connects to MySQL through:

👉 settings.py file

This is where we tell Django:

  • database type
  • database name
  • username
  • password
  • host

🧠 SIMPLE FLOW:

User → Django → settings.py → MySQL → Data Stored


🧠 4. ROLE OF MYSQL IN DJANGO

📘 Meaning:

MySQL is responsible for:

Storing data
Retrieving data
Organizing records


🧠 SIMPLE IDEA:

Without MySQL:
👉 Django has no memory ❌

With MySQL:
👉 Django can save and use data ✅


💻 PRACTICAL EXPLANATION (THEORY ONLY)


🔧 Example 1:

👉 Django connects to database through settings.py


🧠 MEANING:

Inside Django project, there is a file called:

👉 settings.py

This file tells Django:

  • which database to use
  • how to connect to it

🔧 Example 2:

👉 MySQL stores actual data for Django app


🧠 MEANING:

All information like:

  • students
  • courses
  • payments

👉 are stored inside MySQL


🧠 VERY IMPORTANT UNDERSTANDING

Django = application logic
MySQL = data storage
settings.py = connection bridge


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Why connect Django to MySQL?


SAMPLE ANSWER:

Django is connected to MySQL so that it can store, retrieve, and manage data for web applications.


🧠 SIMPLE VERSION:

👉 To allow Django to save and use data in a database.


🧠 TASK 2:

👉 List 2 benefits


ANSWER:

  1. Data storage and retrieval
  2. Better data management for web applications

🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What database connection means
Why Django needs MySQL
Role of settings.py
Why backend systems need databases


If you want next, I will continue:

👉 WEEK 10 – TUESDAY (ACTUAL DJANGO + MYSQL CONNECTION SETUP IN settings.py)

🟡 WEEK 10 – TUESDAY

📘 TOPIC: DATABASE CONFIGURATION (settings.py)


🧠 1. WHAT IS settings.py?

📘 Meaning:

settings.py is the main configuration file in Django that controls how the project works.


🧠 Simple Explanation:

Think of Django like a machine 🏭

👉 settings.py is the control panel
It tells Django:

  • what database to use
  • how to connect
  • system settings

🧠 2. WHAT IS DATABASE CONFIGURATION?

📘 Meaning:

Database configuration is where we tell Django:

👉 “Connect to this MySQL database”


💻 PRACTICAL PART


🔧 DJANGO MYSQL CONNECTION CODE

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'training_center',

        'USER': 'root',

        'PASSWORD': '',

        'HOST': 'localhost',

        'PORT': '3306',

    }

}


🧠 WORD-BY-WORD EXPLANATION


DATABASES

👉 Main dictionary for database settings


'default'

👉 Default database Django will use


ENGINE

👉 Type of database system

👉 mysql backend used here


'django.db.backends.mysql'

👉 Tells Django: “Use MySQL database”


NAME: 'training_center'

👉 Name of database in MySQL


USER: 'root'

👉 MySQL username


PASSWORD: ''

👉 Password for MySQL (empty here)


HOST: 'localhost'

👉 Database is on same computer


PORT: '3306'

👉 Default MySQL port


📌 FULL MEANING:

👉 “Connect Django project to MySQL database named training_center using local server”


🧠 SIMPLE FLOW

Django → settings.py → MySQL → training_center database


🧠 IMPORTANT UNDERSTANDING

settings.py controls everything
DATABASES section connects to MySQL
Without it, Django cannot store data


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Set database name


ANSWER:

'NAME': 'training_center'


🧠 EXPLANATION:

This tells Django which MySQL database to use.


🧠 TASK 2:

👉 Explain settings.py role


SAMPLE ANSWER:

settings.py is the configuration file in Django that controls how the project behaves, including database connection, security settings, and installed apps.


🧠 SIMPLE VERSION:

👉 settings.py controls how Django project works and connects to database.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What settings.py is
How Django connects to MySQL
Meaning of database configuration
Role of each connection field


If you want next, I will continue:

👉 WEEK 10 – WEDNESDAY (CREATE DJANGO APP + CONNECT TO MYSQL MODEL STRUCTURE)

WEDNESDAY: TEST CONNECTION

📘 Learn:

  • Checking connection

🔧 Examples:

python manage.py migrate

python manage.py runserver


📝 Assignments:

1.     Run migrations

2.     Start server

THURSDAY: PROJECT PRACTICAL (DATABASE CONNECTION)

🎯 Task:

👉 Connect Django to MySQL


🧩 Tasks:

  • Configure settings.py
  • Run migration

📝 Assignments:

1.     Connect Django to MySQL

2.     Confirm database link


🟢 FRIDAY: PROJECT PRACTICAL

🎯 Task:

👉 Verify connection system


🧩 Tasks:

  • Test database connection

📝 Assignments:

1.     Explain migration purpose

2.     Show successful connection


WEEK 11 – MONDAY

📘 TOPIC: WHAT IS A MODEL? (DJANGO MODELS)


🧠 1. WHAT IS A MODEL?

📘 Meaning:

A model in Django is a Python class that represents a database table.


🧠 Simple Explanation:

Think like this:

Django Model

MySQL

Class

Table

Attribute

Column

Object

Row

👉 So a model is just a way Django creates tables using Python code.


🧠 2. REAL-LIFE IDEA

If you create a Student model:

👉 Django will create a table called:

  • student

With columns like:

  • name
  • other fields

🧠 3. SIMPLE UNDERSTANDING

Model = Table
Field = Column
Data = Row


💻 PRACTICAL PART


🔧 EXAMPLE 1: STUDENT MODEL

class Student(models.Model):
    name = models.CharField(max_length=100)


🧠 WORD-BY-WORD EXPLANATION


class

👉 Used to create a model (blueprint)


Student

👉 Name of the model (table name in database)


models.Model

👉 Tells Django this class is a database table


name

👉 Column name in table


models.CharField(max_length=100)

👉 Text field (string)

  • CharField → stores text
  • max_length=100 → maximum 100 characters

📌 FULL MEANING:

👉 “Create a Student table with a name column”


🔧 EXAMPLE 2: COURSE MODEL

class Course(models.Model):
    course_name = models.CharField(max_length=100)


🧠 WORD-BY-WORD EXPLANATION


class Course

👉 Create a model called Course


models.Model

👉 Make it a database table


course_name

👉 Column in table


CharField

👉 Text field


max_length=100

👉 Maximum 100 characters allowed


📌 FULL MEANING:

👉 “Create a Course table with course_name column”


🧠 IMPORTANT UNDERSTANDING

Django models = database tables
Fields = columns
Models automatically become MySQL tables after migration


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 What is a model?


SAMPLE ANSWER:

A model in Django is a Python class that represents a database table and defines its structure using fields.


🧠 SIMPLE VERSION:

👉 A model is a table in Django written using Python code.


🧠 TASK 2:

👉 Create simple model


ANSWER:

class Student(models.Model):
    name = models.CharField(max_length=100)


🧠 EXPLANATION:

This creates a student table with a name column.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What a Django model is
How models represent tables
How fields represent columns
How Django builds databases using Python

🟡 WEEK 11 – TUESDAY

📘 TOPIC: ADD FIELDS (DJANGO DATA TYPES)


🧠 1. WHAT DOES “ADD FIELDS” MEAN?

📘 Meaning:

Adding fields means creating columns inside a Django model (table).


🧠 Simple Explanation:

If a model is a table:

👉 Fields are the columns inside it.

Example:

Student Table

name

phone

amount


🧠 2. DJANGO DATA TYPES

📘 Meaning:

Data types tell Django what kind of data a field will store.


🧠 Common Types (Today Focus):

CharField → text
DecimalField → money/price


💻 PRACTICAL PART


🔧 EXAMPLE 1: PHONE FIELD

phone = models.CharField(max_length=15)


🧠 WORD-BY-WORD EXPLANATION


phone

👉 Column name in database


models.CharField

👉 Text field (stores letters and numbers as text)


max_length=15

👉 Maximum number of characters allowed


📌 FULL MEANING:

👉 “Create a phone column that stores text up to 15 characters”


🧠 EXAMPLE DATA:

  • 08012345678
  • +2348012345678

🔧 EXAMPLE 2: PRICE FIELD

amount = models.DecimalField(max_digits=10, decimal_places=2)


🧠 WORD-BY-WORD EXPLANATION


amount

👉 Column name (stores money or price)


models.DecimalField

👉 Used for numbers with decimal points


max_digits=10

👉 Total number of digits allowed


decimal_places=2

👉 Number of digits after decimal point


📌 FULL MEANING:

👉 “Create a price field that supports money values like 1000.00”


🧠 EXAMPLE DATA:

  • 5000.00
  • 1200.50
  • 99.99

🧠 IMPORTANT UNDERSTANDING

CharField = text data
DecimalField = money/price
Fields = columns in database


🧠 REAL-LIFE CONNECTION

In a training system:

Field

Meaning

name

student name

phone

contact number

amount

payment fee


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Add phone field


ANSWER:

phone = models.CharField(max_length=15)


🧠 EXPLANATION:

This creates a column to store student phone numbers.


🧠 TASK 2:

👉 Add price field


ANSWER:

price = models.DecimalField(max_digits=10, decimal_places=2)


🧠 EXPLANATION:

This creates a column for storing money values.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What Django fields are
How data types work
Difference between text and money fields
How models become database columns


If you want next, I will continue:

👉 WEEK 11 – WEDNESDAY (MIGRATION – TURN MODELS INTO MYSQL TABLES)

🟡 WEEK 11 – WEDNESDAY

📘 TOPIC: MIGRATION (MODEL → MYSQL TABLE)


🧠 1. WHAT IS MIGRATION?

📘 Meaning:

Migration is the process of converting Django models (Python code) into real MySQL tables.


🧠 Simple Explanation:

You already wrote models like:

class Student(models.Model):

    name = models.CharField(max_length=100)

👉 But MySQL does not understand Python code

So we must convert it into SQL tables using:

👉 MIGRATION


🧠 2. WHY MIGRATION IS IMPORTANT

📘 Explanation:

Without migration:

  • Models stay as Python code ❌
  • No tables in MySQL ❌

With migration:

  • Tables are created automatically in MySQL ✅

💻 PRACTICAL PART


🔧 STEP 1: MAKE MIGRATIONS

python manage.py makemigrations


🧠 WORD-BY-WORD EXPLANATION


python

👉 Runs Python environment


manage.py

👉 Django control file


makemigrations

👉 Detects changes in models and prepares database changes


📌 FULL MEANING:

👉 “Check models and prepare migration files”


🧠 WHAT HAPPENS:

Django scans models
Creates migration files
Prepares SQL instructions


🔧 STEP 2: APPLY MIGRATION

python manage.py migrate


🧠 WORD-BY-WORD EXPLANATION


python

👉 Runs Python


manage.py

👉 Django command handler


migrate

👉 Apply changes to database (create tables)


📌 FULL MEANING:

👉 “Create actual MySQL tables from migration files”


🧠 WHAT HAPPENS:

Tables are created in MySQL
Models become real database structure


🧠 SIMPLE FLOW

Model (Python) → makemigrations → migration file → migrate → MySQL table


🧠 IMPORTANT UNDERSTANDING

makemigrations = prepare changes
migrate = apply changes
models become real tables


🧠 REAL-LIFE EXAMPLE

If you create:

Student model

Course model

👉 After migration:

MySQL will have:

  • student table
  • course table

📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Run makemigrations


ANSWER:

python manage.py makemigrations


🧠 EXPLANATION:

This prepares migration files based on your models.


🧠 TASK 2:

👉 Run migrate


ANSWER:

python manage.py migrate


🧠 EXPLANATION:

This creates actual tables in MySQL database.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What migration is
Difference between makemigrations and migrate
How models become real tables
How Django connects code to database


If you want next, I will continue:

👉 WEEK 11 – THURSDAY (DJANGO ADMIN PANEL – VIEWING DATABASE WITHOUT SQL)

THURSDAY: PROJECT PRACTICAL (MODELS CREATION)

🎯 Task:

👉 Create Student + Course models


🧩 Tasks:

  • Build models
  • Migrate tables

📝 Assignments:

1.     Create 2 models

2.     Run migrations


🟢 FRIDAY: PROJECT PRACTICAL

🎯 Task:

👉 Database structure finalization


🧩 Tasks:

  • Confirm tables in MySQL

📝 Assignments:

1.     Check tables in MySQL

2.     Explain model-table relationship

🟡 WEEK 12 – MONDAY

📘 TOPIC: DJANGO ADMIN PANEL


🧠 1. WHAT IS DJANGO ADMIN PANEL?

📘 Meaning:

The Django admin panel is a built-in dashboard that allows you to manage your database (add, edit, delete data) without writing SQL.


🧠 Simple Explanation:

Think of it like a control room 🖥️

👉 Instead of typing SQL commands, you:

  • Click buttons
  • Fill forms
  • Manage data easily

🧠 REAL IDEA:

Without admin panel:

  • You must write SQL ❌

With admin panel:

  • You use browser interface ✅

🧠 2. WHAT CAN YOU DO IN ADMIN PANEL?

Add students
Edit courses
Delete records
View database tables


💻 PRACTICAL PART


🔧 CREATE SUPER USER

python manage.py createsuperuser


🧠 WORD-BY-WORD EXPLANATION


python

👉 Runs Python environment


manage.py

👉 Django command file


createsuperuser

👉 Creates admin user (full access account)


📌 FULL MEANING:

👉 “Create a user who can access Django admin dashboard”


🧠 WHAT HAPPENS AFTER RUNNING:

System asks:

  • username
  • email
  • password

🧠 HOW ADMIN PANEL WORKS

After running server:

python manage.py runserver

Go to browser:

👉 http://127.0.0.1:8000/admin


🧠 LOGIN:

Use superuser details


🧠 IMPORTANT UNDERSTANDING

Admin panel = backend dashboard
No SQL needed
Used for managing database visually


🧠 WHY ADMIN PANEL IS IMPORTANT

📘 Explanation:

It helps developers:

  • Save time
  • Manage data easily
  • Avoid writing SQL

📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 What is admin panel?


SAMPLE ANSWER:

The Django admin panel is a built-in dashboard used to manage database data such as adding, editing, and deleting records without writing SQL queries.


🧠 SIMPLE VERSION:

👉 It is a web dashboard for managing Django data easily.


🧠 TASK 2:

👉 Why is it useful?


ANSWER:

  1. It makes data management easy without SQL
  2. It allows quick editing and control of database records

🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What Django admin panel is
How to create superuser
How admin system works
Why admin panel is important


If you want next, I will continue:

👉 WEEK 12 – TUESDAY (REGISTER MODELS IN ADMIN + FINAL MINI PROJECT SETUP)

🟡 WEEK 12 – TUESDAY

📘 TOPIC: REGISTER MODELS (SHOW DATA IN ADMIN PANEL)


🧠 1. WHAT DOES “REGISTER MODELS” MEAN?

📘 Meaning:

Registering models means making your database tables visible in the Django admin panel.


🧠 Simple Explanation:

Even if you created models (tables) in Django:

👉 They will NOT show in admin panel automatically ❌

So you must “register” them.


🧠 REAL IDEA:

Without Register

With Register

Models hidden ❌

Models visible ✅

Cannot manage data ❌

Can manage data easily ✅


💻 PRACTICAL PART


🔧 STEP 1: IMPORT MODEL

from .models import Student


🧠 WORD-BY-WORD EXPLANATION


from

👉 Means: take something from a file


.models

👉 The models file in the same Django app


import Student

👉 Bring Student model into admin file


📌 FULL MEANING:

👉 “Bring Student model so we can use it in admin panel”



🔧 STEP 2: REGISTER MODEL

admin.site.register(Student)


🧠 WORD-BY-WORD EXPLANATION


admin.site

👉 Django admin system


register

👉 Add model to admin panel


Student

👉 The model being registered


📌 FULL MEANING:

👉 “Show Student table in Django admin panel”



🔧 STEP 3: REGISTER COURSE MODEL

from .models import Course

admin.site.register(Course)


🧠 WORD-BY-WORD EXPLANATION


Course

👉 Another model (table)


admin.site.register(Course)

👉 Make Course visible in admin panel


📌 FULL MEANING:

👉 “Display Course table in admin dashboard”


🧠 WHAT HAPPENS AFTER REGISTERING?

When you open:

👉 http://127.0.0.1:8000/admin

You will see:

  • Students
  • Courses

🧠 IMPORTANT UNDERSTANDING

Models = database tables
Register = make them visible
Admin panel = manage data easily


🧠 SIMPLE FLOW

Model → Register → Admin Panel → Data Management


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Register models


ANSWER:

from .models import Student

from .models import Course

 

admin.site.register(Student)

admin.site.register(Course)


🧠 EXPLANATION:

This makes both Student and Course visible in admin panel.


🧠 TASK 2:

👉 Access admin panel


ANSWER:

👉 Run server:

python manage.py runserver

👉 Open browser:

http://127.0.0.1:8000/admin


🧠 EXPLANATION:

This opens Django admin dashboard where you can manage data.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

What model registration means
How to connect models to admin panel
How admin displays database tables
How to manage data visually


If you want next, I will continue:

👉 WEEK 12 – WEDNESDAY (FINAL PROJECT: STUDENT MANAGEMENT SYSTEM USING DJANGO + MYSQL)

🟡 WEEK 12 – WEDNESDAY

📘 TOPIC: DISPLAY DATA (SHOW DATA ON WEBSITE)


🧠 1. WHAT DOES “DISPLAY DATA” MEAN?

📘 Meaning:

Displaying data means showing information from the database on a web page using Django.


🧠 Simple Explanation:

You already have data in MySQL:

👉 Now you want to show it on a website (HTML page)

Example:

  • Show list of students
  • Show courses
  • Show payments

🧠 2. HOW DJANGO DISPLAYS DATA

📘 PROCESS:

  1. Django fetches data from database
  2. Sends data to view (Python file)
  3. Passes data to HTML
  4. HTML displays it on browser

🧠 SIMPLE FLOW

Database → Django (views) → HTML → Browser


💻 PRACTICAL PART


🔧 EXAMPLE 1: FETCH ALL STUDENTS

students = Student.objects.all()


🧠 WORD-BY-WORD EXPLANATION


students

👉 Variable that stores result


Student

👉 Model (table)


objects

👉 Django manager (used to interact with database)


all()

👉 Get all records


📌 FULL MEANING:

👉 “Get all students from database”


🧠 RESULT:

List of all students in database



🔧 EXAMPLE 2: SEND DATA TO HTML

return render(request, 'students.html', {'students': students})


🧠 WORD-BY-WORD EXPLANATION


return

👉 Send response back to browser


render

👉 Combine Python + HTML


request

👉 User request from browser


'students.html'

👉 HTML page name


{'students': students}

👉 Send data to HTML page


📌 FULL MEANING:

👉 “Send student data to HTML page so it can be displayed”


🧠 HOW HTML RECEIVES DATA

Inside HTML:

{% for student in students %}

    {{ student.name }}

{% endfor %}


🧠 SIMPLE MEANING:

👉 Loop through students
👉 Display each student name


🧠 IMPORTANT UNDERSTANDING

objects.all() = get data
render() = send data to HTML
HTML = display data


📝 ASSIGNMENTS (EXPLAINED)


🧠 TASK 1:

👉 Fetch all students


ANSWER:

students = Student.objects.all()


🧠 EXPLANATION:

This gets all student records from database.


🧠 TASK 2:

👉 Pass data to HTML


ANSWER:

return render(request, 'students.html', {'students': students})


🧠 EXPLANATION:

This sends student data to HTML page for display.


🎯 FINAL UNDERSTANDING OF TODAY

After this lesson, students should know:

How to fetch data from database
How Django views work
How to send data to HTML
How website displays database records


If you want next, I will continue:

👉 FINAL DAY: MINI PROJECT (FULL STUDENT SYSTEM: CRUD + MYSQL + DJANGO + ADMIN + DISPLAY)

THURSDAY: FINAL PROJECT (BUILD SYSTEM)

🎯 Task:

👉 Build full Training Centre System


🧩 Tasks:

  • Student registration
  • Course system
  • Admin panel

📝 Assignments:

1.     Add students via admin

2.     Display data on webpage


🟢 FRIDAY: FINAL PRESENTATION

🎯 Task:

👉 Complete system testing


🧩 Tasks:

  • Test full application

📝 Assignments:

1.     Demonstrate system

2.     Explain full workflow


🎯 FINAL OUTCOME OF MONTH 3

Students can:

Build Django projects
Connect MySQL database
Create real web applications
Manage admin systems
Develop full student management system

 

 

 

BEST COMPUTER GUIDE Written by Abigail Odenigbo, Published @ 2014 by NOBIGDEAL(Ipietoon)