VandanRogheliya

DBMS Prac5

Sep 14th, 2020
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.91 KB | None | 0 0
  1. --1. Book(isbn_no pk ,bname ,name_author,Pub_name)
  2. --2. Department (deptno pk,dname )
  3. --3. Student (uidno pk, fname , dept_no fk)
  4. --4. Faculty(empno pk ,fname , dept_no fk,designation)
  5. --5. Student_book(isbn_no fk, uidno fk, date_of_issue,date_return) pk(isbn, uidno, data of issue)
  6. --6. Faculty_book(isbn_no fk, faculty_id fk, date_of_issue,date_return) pk(isbn, fa id, d o i)
  7.  
  8. CREATE TABLE Book(isbn_no INT PRIMARY KEY, bname VARCHAR(20), name_author VARCHAR(20), pub_name VARCHAR(20));
  9. CREATE TABLE Department(deptno INT PRIMARY KEY, dname VARCHAR(20));
  10. CREATE TABLE Student (uidno INT PRIMARY KEY, fname VARCHAR(20), dept_no INT, CONSTRAINT stu_fk FOREIGN KEY(dept_no) REFERENCES Department)
  11. CREATE TABLE Faculty (empno INT PRIMARY KEY, fname VARCHAR(20), dept_no INT, designation VARCHAR(20),CONSTRAINT fac_fk FOREIGN KEY(dept_no) REFERENCES Department)
  12. CREATE TABLE Student_book(isbn_no INT, uidno INT, date_of_issue DATE,date_return DATE,
  13.     CONSTRAINT isbn_fk FOREIGN KEY(isbn_no) REFERENCES Book,
  14.     CONSTRAINT uid_fk FOREIGN KEY(uidno) REFERENCES Student,
  15.     CONSTRAINT sb_pk PRIMARY KEY(isbn_no, uidno, date_of_issue))
  16.    
  17. CREATE TABLE aculty_book(isbn_no INT, faculty_id INT, date_of_issue DATE,date_return DATE,
  18.     CONSTRAINT isbn2_fk FOREIGN KEY(isbn_no) REFERENCES Book,
  19.     CONSTRAINT fa_fk FOREIGN KEY(faculty_id) REFERENCES Faculty,
  20.     CONSTRAINT fb_pk PRIMARY KEY(isbn_no, faculty_id, date_of_issue))
  21.    
  22. ALTER TABLE Book DROP COLUMN name_author2
  23.    
  24. -- QUESTIONS
  25. -- 1) Details of students who have taken books from the course IT
  26. SELECT * FROM student
  27.     WHERE uidno IN (SELECT uidno FROM Student_book) AND dept_no = (SELECT deptno FROM Department d2 WHERE dname = 'IT')
  28.    
  29. -- 2) Details of the books published by ALPHA publisher
  30. SELECT * FROM Book b WHERE pub_name = 'pub1'
  31.    
  32. -- 3) Details of authors who have published maximum no of books
  33. SELECT name_author FROM Book b GROUP BY name_author
  34.     HAVING COUNT(*) = (SELECT MAX(y.COUNT) FROM (SELECT COUNT(*) 'count' FROM Book GROUP BY name_author) y)
  35.  
  36. -- 4) Details of author who have published minimum no of books
  37. SELECT name_author FROM Book b GROUP BY name_author
  38.     HAVING COUNT(*) = (SELECT MIN(y.COUNT) FROM (SELECT COUNT(*) 'count' FROM Book GROUP BY name_author) y)
  39.  
  40.    
  41. -- 5) Details of students who have taken the book ‘DBMS’
  42. SELECT * FROM Student s WHERE s.uidno =
  43.     (SELECT uidno FROM Student_book sb WHERE isbn_no = (SELECT isbn_no FROM Book b2 WHERE bname = 'book1'))
  44.  
  45.    
  46. -- 6) Details of authors who have written more than 1 books
  47. SELECT name_author FROM Book b GROUP BY name_author
  48.     HAVING COUNT(*) > 1
  49.  
  50.  
  51. -- 7) Details of students who have taken at least one book
  52. SELECT * FROM Student s WHERE uidno IN (SELECT uidno FROM Student_book sb)
  53.    
  54. -- 8) Find the number of students studying in each class
  55. SELECT COUNT(*), dept_no FROM Student s GROUP BY dept_no
  56.  
  57. -- 9) Display the details of the department with maximum number of students
  58. SELECT * FROM department
  59.     WHERE deptno IN (SELECT dept_no FROM student GROUP BY dept_no HAVING COUNT(*) = (SELECT MAX(y.cnt) FROM
  60.         (SELECT COUNT(*) 'cnt' FROM Student s2 GROUP BY dept_no ) y))
  61.  
  62. -- 10)Details of students who have not yet returned the book.
  63. SELECT * FROM Student s WHERE uidno = (SELECT uidno FROM Student_book sb WHERE date_return IS NULL)
  64.        
  65. -- 11)Details of the books which have a co author
  66. SELECT * FROM Book b WHERE name_author2 IS NOT NULL
  67.  
  68. -- 12)Details of the books which have been issued more than 1 times in the year 2020. Try with union
  69. CREATE VIEW stu_book_cnt AS SELECT COUNT(*) 'count', isbn_no FROM Student_book sb WHERE YEAR(date_of_issue) = 2020 GROUP BY isbn_no
  70. CREATE VIEW fac_book_cnt AS SELECT COUNT(*) 'count', isbn_no FROM faculty_book fb WHERE YEAR(date_of_issue) = 2020 GROUP BY isbn_no
  71.  
  72. SELECT * FROM Book b WHERE isbn_no IN
  73.     (SELECT s.isbn_no FROM stu_book_cnt s, fac_book_cnt f WHERE s.COUNT + f.COUNT > 1 AND s.isbn_no = f.isbn_no)
  74.  
  75.    
  76.    
  77.    
  78.    
  79.    
  80.    
  81.    
  82.    
  83.    
  84.    
  85.    
Advertisement
Add Comment
Please, Sign In to add comment