-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfile.sql
More file actions
56 lines (41 loc) · 1.43 KB
/
file.sql
File metadata and controls
56 lines (41 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
CREATE TABLE Books (
ISBN VARCHAR(13) PRIMARY KEY,
Title VARCHAR(255),
Author VARCHAR(255),
Genre VARCHAR(50),
Available INT DEFAULT 1
);
CREATE TABLE Members (
MemberID INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(255),
Email VARCHAR(255),
MembershipType VARCHAR(50)
);
CREATE TABLE Loans (
LoanID INT AUTO_INCREMENT PRIMARY KEY,
MemberID INT,
ISBN VARCHAR(13),
LoanDate DATE,
Returned BOOLEAN DEFAULT FALSE,
FOREIGN KEY (MemberID) REFERENCES Members(MemberID),
FOREIGN KEY (ISBN) REFERENCES Books(ISBN)
);
INSERT INTO Books (ISBN, Title, Author, Genre)
VALUES ('978-3-16-148410-0', 'The Great Gatsby', 'F. Scott Fitzgerald', 'Fiction');
INSERT INTO Members (Name, Email, MembershipType)
VALUES ('John Doe', 'john@example.com', 'Premium');
SELECT * FROM Books WHERE Author = 'F. Scott Fitzgerald';
SELECT Name, Email FROM Members WHERE MembershipType = 'Premium';
UPDATE Books SET Available = 0 WHERE ISBN = '978-3-16-148410-0';
DELETE FROM Members WHERE MemberID = 1;
CREATE PROCEDURE CheckOutBook(IN memberID INT, IN isbn VARCHAR(13))
BEGIN
INSERT INTO Loans (MemberID, ISBN, LoanDate) VALUES (memberID, isbn, CURDATE());
END;
CREATE TRIGGER UpdateBookAvailability AFTER INSERT ON Loans
FOR EACH ROW
BEGIN
UPDATE Books SET Available = Available - 1 WHERE ISBN = NEW.ISBN;
END;
CREATE INDEX idx_books_isbn ON Books(ISBN);
CREATE INDEX idx_members_name ON Members(Name);