This project demonstrates the implementation of a Library Management System using SQL. It showcases database design, CRUD operations, CTAS, and advanced querying techniques to manage library operations such as book issues, returns, employees, and members efficiently.
The goal of this project is to display intermediate-level SQL skills and real-world data handling scenarios in a structured and maintainable way.
- Database: MySQL / PostgreSQL
- Language: SQL
- Level: Intermediate
- Project Type: Database Design & Querying Project
library_db| Table Name | Description |
|---|---|
branch |
Library branches and managers |
employees |
Employee details |
members |
Library member records |
books |
Book inventory |
issued_status |
Book issue records |
return_status |
Book return history |
CREATE DATABASE library_db;Branch Table
CREATE TABLE branch (
branch_id VARCHAR(10) PRIMARY KEY,
manager_id VARCHAR(10),
branch_address VARCHAR(30),
contact_no VARCHAR(15)
);Employees Table
CREATE TABLE employees (
emp_id VARCHAR(10) PRIMARY KEY,
emp_name VARCHAR(30),
position VARCHAR(30),
salary DECIMAL(10,2),
branch_id VARCHAR(10),
FOREIGN KEY (branch_id) REFERENCES branch(branch_id)
);Members Table
CREATE TABLE members (
member_id VARCHAR(10) PRIMARY KEY,
member_name VARCHAR(30),
member_address VARCHAR(30),
reg_date DATE
);Books Table
CREATE TABLE books (
isbn VARCHAR(50) PRIMARY KEY,
book_title VARCHAR(80),
category VARCHAR(30),
rental_price DECIMAL(10,2),
status VARCHAR(10),
author VARCHAR(30),
publisher VARCHAR(30)
);Issued Status Table
CREATE TABLE issued_status (
issued_id VARCHAR(10) PRIMARY KEY,
issued_member_id VARCHAR(30),
issued_book_name VARCHAR(80),
issued_date DATE,
issued_book_isbn VARCHAR(50),
issued_emp_id VARCHAR(10),
FOREIGN KEY (issued_member_id) REFERENCES members(member_id),
FOREIGN KEY (issued_emp_id) REFERENCES employees(emp_id),
FOREIGN KEY (issued_book_isbn) REFERENCES books(isbn)
);Return Status Table
CREATE TABLE return_status (
return_id VARCHAR(10) PRIMARY KEY,
issued_id VARCHAR(30),
return_book_name VARCHAR(80),
return_date DATE,
return_book_isbn VARCHAR(50),
FOREIGN KEY (return_book_isbn) REFERENCES books(isbn)
);INSERT INTO books VALUES (
'978-2-70728-234-9',
'Wings of Fire',
'Autobiography',
7.00,
'yes',
'APJ Abdul Kalam',
'SVC Publications'
);UPDATE members
SET member_name = 'Jack'
WHERE member_id = 'C119';DELETE FROM issued_status
WHERE issued_id = 'IS121';SELECT e.emp_id, i.issued_book_name
FROM employees e
JOIN issued_status i
ON e.emp_id = i.issued_emp_id
WHERE emp_id = 'E102';SELECT issued_emp_id, COUNT(*) AS total_count
FROM issued_status
GROUP BY issued_emp_id
HAVING COUNT(*) > 1;SELECT * FROM books
WHERE category = 'Classic';SELECT b.category, SUM(b.rental_price)
FROM books b
JOIN issued_status i
ON b.isbn = i.issued_book_isbn
GROUP BY b.category;SELECT * FROM members
WHERE reg_date >= CURRENT_DATE - INTERVAL '180 days';SELECT
e1.emp_id, e1.emp_name, e1.position,
e2.emp_name AS manager_name
FROM employees e1
JOIN branch b
ON e1.branch_id = b.branch_id
LEFT JOIN employees e2
ON e2.emp_id = b.manager_id;SELECT *
FROM issued_status i
LEFT JOIN return_status r
ON i.issued_id = r.issued_id
WHERE r.return_id IS NULL;CREATE TABLE book_issued_count AS
SELECT
isbn,
book_title,
COUNT(issued_id) AS count_issue
FROM books
JOIN issued_status
ON isbn = issued_book_isbn
GROUP BY isbn, book_title;CREATE TABLE expensive_books AS
SELECT * FROM books
WHERE rental_price > 6.00;- Relational database design
- Primary & foreign key implementation
- Aggregate functions
- Subqueries & joins
- CTAS usage
- Analytical SQL queries
- Real-world data modelling
- Strong understanding of SQL relationships
- Hands-on practice with real-world business queries
- Query optimization & filtering
- Data summarization and reporting
- Create database
library_db - Run table creation scripts
- Insert sample data
- Execute provided queries
- Explore results and modify queries
Tirupathi Rao G SQL Learner | Data Enthusiast | MCA Student
If you like this project, give it a star β on GitHub and feel free to fork or improve it.
