Mastering SQL Presentation
Mastering SQL Presentation
Presentation Objectives
Introduction to SQL
What is SQL?
SQL (Structured Query Language) is used for managing and manipulating databases. SQL
allows us to interact with databases through commands.
Creating a Database
Dropping a Database
SQL Command: DROP DATABASE
Creating a Table
Common Constraints
Types of Constraints
Altering Tables
Inserting Data
Updating Data
SQL Command: UPDATE
Deleting Data
Selecting Data
Aggregate Functions
One-to-One Relationships
One-to-Many Relationships
Many-to-One Relationships
Many-to-Many Relationships
Inner Join
Left Join
Right Join
Creating a View
DELIMITER //
CREATE PROCEDURE GetStudentsByGrade(IN gradeLevel VARCHAR(5))
BEGIN
SELECT * FROM Students WHERE grade = gradeLevel;
END //
DELIMITER ;
DELIMITER //
CREATE PROCEDURE GetStudentDetails(IN studentID INT)
BEGIN
SELECT * FROM Students WHERE id = studentID;
SELECT * FROM Grades WHERE student_id = studentID;
END //
DELIMITER ;
Introduction to Functions
Functions in SQL return a single value and are used for calculations.
Creating a Function
DELIMITER //
CREATE FUNCTION CalculateAge(birthdate DATE) RETURNS INT DETERMINISTIC
BEGIN
RETURN TIMESTAMPDIFF(YEAR, birthdate, CURDATE());
END //
DELIMITER ;
Using Functions
SQL Command: Using CalculateAge function.
SELECT CalculateAge('2005-04-20');
DELIMITER //
CREATE FUNCTION GetGradeByAge(age INT) RETURNS VARCHAR(5)
BEGIN
IF age >= 15 THEN
RETURN 'High School';
ELSE
RETURN 'Middle School';
END IF;
END //
DELIMITER ;
DELIMITER //
CREATE FUNCTION CalculateFee(courseCount INT) RETURNS DECIMAL(10,2)
BEGIN
RETURN courseCount * 100;
END //
DELIMITER ;
Introduction to Triggers
Triggers are automatic actions executed when certain events occur in a database.
DELIMITER //
CREATE TRIGGER before_student_insert
BEFORE INSERT ON Students
FOR EACH ROW
BEGIN
IF NEW.age < 5 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Age must be at least 5';
END IF;
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER prevent_grade_downgrade
BEFORE UPDATE ON Students
FOR EACH ROW
BEGIN
IF NEW.grade < OLD.grade THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Grade downgrade not
allowed';
END IF;
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER after_student_insert
AFTER INSERT ON Students FOR EACH ROW BEGIN INSERT INTO StudentLog
(student_id, action) VALUES (NEW.id, 'Student Inserted'); END // DELIMITER ;
---
DELIMITER //
CREATE TRIGGER before_student_delete
BEFORE DELETE ON Students
FOR EACH ROW
BEGIN
IF OLD.age < 18 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot delete student
under 18';
END IF;
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER audit_student_changes
AFTER UPDATE ON Students
FOR EACH ROW
BEGIN
INSERT INTO AuditLog (student_id, action, old_value, new_value, timestamp)
VALUES (NEW.id, 'Grade Change', OLD.grade, NEW.grade, NOW());
END //
DELIMITER ;
Transactions in SQL