Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
CREATE TABLE `Author` ( `AuthorId` int NOT NULL, `AuthorName` varchar(127) NOT NULL ); CREATE TABLE `Book` ( `BookId` int NOT NULL, `Name` varchar(100), `Publisher` varchar(127) NOT NULL, `Rating` float NOT NULL DEFAULT '5', `Reviews` int NOT NULL ); CREATE TABLE `BookAddition` ( `Id` int NOT NULL, `BranchId` int NOT NULL, `BookId` int NOT NULL, `Copies` int NOT NULL ); CREATE TABLE `BookAuthor` ( `Id` int NOT NULL, `AuthorId` int NOT NULL, `BookId` int NOT NULL ); CREATE TABLE `BookCategory` ( `Id` int NOT NULL, `BookId` int NOT NULL, `Category` varchar(127), `AuthorPercentage` int NOT NULL, `Reviews` int NOT NULL DEFAULT '0', `UserRating` float NOT NULL DEFAULT '5' ); CREATE TABLE `BookCategoryRating` ( `Id` int NOT NULL, `BorrowerId` int NOT NULL, `BookId` int NOT NULL, `BookCategory` int DEFAULT NULL, `Rating` int NOT NULL, `Comments` varchar(1023) NOT NULL ); CREATE TABLE `BookLoan` ( `Id` int NOT NULL, `BookId` int DEFAULT NULL, `BranchId` int NOT NULL, `CardNo` int NOT NULL, `DateOut` date NOT NULL, `DueDate` date NOT NULL, `ReturnDate` date DEFAULT NULL ); CREATE TABLE `BookRating` ( `Id` int NOT NULL, `BorrowerId` int NOT NULL, `BookId` int NOT NULL, `Rating` int NOT NULL, `Comments` varchar(1023) NOT NULL ); CREATE TABLE `BookStock` ( `Id` int NOT NULL, `BookId` int NOT NULL, `BranchId` int NOT NULL, `Copies` int NOT NULL ); CREATE TABLE `Borrower` ( `CardNo` int NOT NULL, `Name` varchar(127) NOT NULL, `Address` varchar(255) NOT NULL, `Phone` varchar(63) NOT NULL ); CREATE TABLE `Category` ( `Name` varchar(127) NOT NULL ); CREATE TABLE `LibraryBranch` ( `BranchId` int NOT NULL, `BranchName` varchar(127) NOT NULL, `Address` varchar(255) NOT NULL ); CREATE TABLE `Publisher` ( `Name` varchar(127) NOT NULL, `Address` varchar(255) NOT NULL, `Phone` varchar(63) NOT NULL ); DELIMITER $$ drop TRIGGER if exists `AddToBookStock`; CREATE TRIGGER `AddToBookStock` AFTER INSERT ON `BookAddition` FOR EACH ROW BEGIN Update BookStock set Copies = Copies+new.copies WHERE BranchId=new.BranchId and BookId=new.BookId; END$$ ; drop TRIGGER if exists `DeleteFromBookStock`; CREATE TRIGGER `DeleteFromBookStock` AFTER DELETE ON `BookAddition` FOR EACH ROW BEGIN UPDATE BookStock set Copies = Copies-old.copies WHERE BranchId=old.BranchId and BookId=old.BookId; END$$ ; drop TRIGGER if exists `OnBooksMinused`; CREATE TRIGGER `OnBooksMinused` AFTER DELETE ON `BookAddition` FOR EACH ROW BEGIN UPDATE BookStock set Copies = Copies - old.copies WHERE BranchId=old.BranchId and BookId=old.BookId; END$$ ; drop TRIGGER if exists `OnBookLoanUpdated`; CREATE TRIGGER `OnBookLoanUpdated` AFTER UPDATE ON `BookLoan` FOR EACH ROW BEGIN UPDATE BookStock set Copies = Copies + 1 WHERE BranchId=old.BranchId and BookId=old.BookId; UPDATE BookStock set Copies = Copies - 1 WHERE BranchId=new.BranchId and BookId=new.BookId; END$$ ; drop TRIGGER if exists `ReturnToBookStock`; CREATE TRIGGER `ReturnToBookStock` AFTER DELETE ON `BookLoan` FOR EACH ROW BEGIN UPDATE BookStock set Copies = Copies+1 WHERE BranchId=old.BranchId and BookId=old.BookId; END$$ ; drop TRIGGER if exists `TakeBookFromStock`; CREATE TRIGGER `TakeBookFromStock` AFTER INSERT ON `BookLoan` FOR EACH ROW BEGIN Update BookStock set Copies = Copies-1 WHERE BranchId=new.BranchId and BookId=new.BookId; END $$ ; drop function if exists `get_book_category_rating`; CREATE FUNCTION `get_book_category_rating`(`bid` INT, `category` VARCHAR(127)) RETURNS int NO SQL BEGIN DECLARE res int; declare sum_rate int; DECLARE cnt_rate int; select sum(rating) into sum_rate from BookCategoryRating where BookId=bid and BookCategory=category; select count(rating) into cnt_rate from BookCategoryRating where BookId=bid and BookCategory=category; set res=sum_rate/cnt_rate; RETURN res; END$$ ; drop function if exists `get_book_rating`; CREATE FUNCTION `get_book_rating`(`bid` INT) RETURNS int NO SQL BEGIN DECLARE res int; declare sum_rate int; DECLARE cnt_rate int; select sum(rating) into sum_rate from BookRating where BookId=bid; select count(rating) into cnt_rate from BookRating where BookId=bid; set res=sum_rate/cnt_rate; RETURN res; END$$ DELIMITER ;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear