Advertisement
Guest User

Untitled

a guest
Apr 4th, 2017
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 10.92 KB | None | 0 0
  1. DROP TABLE GroupPosition CASCADE CONSTRAINTS;
  2. DROP TABLE Editor CASCADE CONSTRAINTS;
  3. DROP TABLE Category CASCADE CONSTRAINTS;
  4. DROP TABLE Article CASCADE CONSTRAINTS;
  5. DROP TABLE Membership CASCADE CONSTRAINTS;
  6. DROP TABLE grants_access_to CASCADE CONSTRAINTS;
  7. DROP TABLE RegisteredUser CASCADE CONSTRAINTS;
  8. DROP TABLE ArticleComment CASCADE CONSTRAINTS;
  9.  
  10. CREATE TABLE GroupPosition
  11. (
  12.   baseSalary FLOAT NOT NULL,
  13.   POSITIONNAME VARCHAR2(30) NOT NULL,
  14.   PRIMARY KEY (POSITIONNAME)
  15. );
  16.  
  17. CREATE TABLE Editor
  18. (
  19.   email VARCHAR2(30) NOT NULL,
  20.   publishingName VARCHAR2(30) NOT NULL,
  21.   RegisteredUsername VARCHAR2(30) NOT NULL,
  22.   password VARCHAR2(30) NOT NULL,
  23.   POSITIONNAME VARCHAR2(30) NOT NULL,
  24.   PRIMARY KEY (email),
  25.   FOREIGN KEY (POSITIONNAME) REFERENCES GroupPosition(POSITIONNAME)
  26. );
  27.  
  28. CREATE TABLE Category
  29. (
  30.   categoryName VARCHAR2(30) NOT NULL,
  31.   PRIMARY KEY (categoryName)
  32. );
  33.  
  34. CREATE TABLE Article
  35. (
  36.   articleID INT NOT NULL,
  37.   title VARCHAR2(60) NOT NULL,
  38.   datePublished DATE NOT NULL,
  39.   email VARCHAR2(30) NOT NULL,
  40.   categoryName VARCHAR2(30) NOT NULL,
  41.   PRIMARY KEY (articleID),
  42.   FOREIGN KEY (email) REFERENCES Editor(email),
  43.   FOREIGN KEY (categoryName) REFERENCES Category(categoryName)
  44. );
  45.  
  46. CREATE TABLE Membership
  47. (
  48.   TYPE VARCHAR2(30) NOT NULL,
  49.   PRIMARY KEY (TYPE)
  50. );
  51.  
  52. CREATE TABLE grants_access_to
  53. (
  54.   TYPE VARCHAR2(30) NOT NULL,
  55.   articleID INT NOT NULL,
  56.   PRIMARY KEY (TYPE, articleID),
  57.   FOREIGN KEY (TYPE) REFERENCES Membership(TYPE),
  58.   FOREIGN KEY (articleID) REFERENCES Article(articleID)
  59. );
  60.  
  61. CREATE TABLE RegisteredUser
  62. (
  63.   email VARCHAR2(30) NOT NULL,
  64.   RegisteredUsername VARCHAR2(30) NOT NULL,
  65.   password VARCHAR2(30) NOT NULL,
  66.   TYPE VARCHAR2(30),
  67.   PRIMARY KEY (email),
  68.   FOREIGN KEY (TYPE) REFERENCES Membership(TYPE)
  69. );
  70.  
  71. CREATE TABLE ArticleComment
  72. (
  73.   ArticleCommentID INT NOT NULL,
  74.   numberOfLikes INT NOT NULL,
  75.   email VARCHAR2(30) NOT NULL,
  76.   commentText varchar2(60) NOT NULL,
  77.   PRIMARY KEY (ArticleCommentID),
  78.   FOREIGN KEY (email) REFERENCES RegisteredUser(email)
  79. );
  80.  
  81. DROP SEQUENCE AutoIncSeq;
  82.  
  83. CREATE SEQUENCE AutoIncSeq
  84. MINVALUE 0
  85. START WITH 0
  86. INCREMENT BY 1
  87. CACHE 10;
  88.  
  89. DROP SEQUENCE AutoIncSeq2;
  90.  
  91. CREATE SEQUENCE AutoIncSeq2
  92. MINVALUE 0
  93. START WITH 0
  94. INCREMENT BY 1
  95. CACHE 10;
  96.  
  97. INSERT INTO GroupPosition VALUES (200,'part-time worker');
  98. INSERT INTO GroupPosition VALUES (150,'new part-time worker');
  99. INSERT INTO GroupPosition VALUES (500,'junior editor');
  100. INSERT INTO GroupPosition VALUES (700,'senior editor');
  101. INSERT INTO GroupPosition VALUES (1000,'veduci oddelenia');
  102.  
  103. INSERT INTO EDITOR VALUES ('KristopherDenzel@yahoo.com','Kristopher Denzel','KristopherDenzel','PASSWORD1','part-time worker');
  104. INSERT INTO EDITOR VALUES ('BillPrudence@gmail.com','Bill Prudence','BillPrudence',            'PASSWORD2','new part-time worker');
  105. INSERT INTO EDITOR VALUES ('LinfordMilford@gmail.com','Linford Milford','LinfordMilford',      'PASSWORD3','junior editor');
  106. INSERT INTO EDITOR VALUES ('AydanTyson@gmail.com','Aydan Tyson','AydanTyson',                  'PASSWORD32','junior editor');
  107. INSERT INTO EDITOR VALUES ('MaryanneWat@yahoo.com','Maryanne Wat','MaryanneWat',               'PASSWORD4','junior editor');
  108. INSERT INTO EDITOR VALUES ('RaynerBarnabas@gmail.com','Rayner Barnabas','RaynerBarnabas',      'PASSWORD42','senior editor');
  109. INSERT INTO EDITOR VALUES ('UlricStevie@gmail.com','Ulric Stevie','UlricStevie',               'PASSWORD5','veduci oddelenia');
  110.  
  111. INSERT INTO CATEGORY VALUES ('travel');
  112. INSERT INTO CATEGORY VALUES ('local news');
  113. INSERT INTO CATEGORY VALUES ('world news');
  114. INSERT INTO CATEGORY VALUES ('fashion');
  115. INSERT INTO CATEGORY VALUES ('music');
  116. INSERT INTO CATEGORY VALUES ('politics');
  117. INSERT INTO CATEGORY VALUES ('stars');
  118. INSERT INTO CATEGORY VALUES ('tech');
  119. INSERT INTO CATEGORY VALUES ('science');
  120. INSERT INTO CATEGORY VALUES ('finance');
  121.  
  122. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'Russia used fake news to manipulate election','18-03-2017','KristopherDenzel@yahoo.com','politics');
  123. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'Colombian police seize more than six tonnes of cocaine','18-03-2017','KristopherDenzel@yahoo.com','world news');
  124. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'Top Asian News 5:23 p.m. GMT','1-03-2017','RaynerBarnabas@gmail.com','world news');
  125. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'Mammoth discovery: Six-foot tusk found on Essex beach','21-02-2017','RaynerBarnabas@gmail.com','science');
  126. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'NASAs ice-world robots can reach, launch, and melt','15-03-2017','RaynerBarnabas@gmail.com','science');
  127. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'Windows 10 Creators Update: Microsofts best just got better','3-01-2017','AydanTyson@gmail.com','tech');
  128. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'This season new trends','12-02-2017','AydanTyson@gmail.com','fashion');
  129. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'Best places to travel to in the summer','3-01-2017','AydanTyson@gmail.com','travel');
  130. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'How to choose right savings account','3-01-2017','BillPrudence@gmail.com','finance');
  131. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'What to wear this spring','30-01-2017','MaryanneWat@yahoo.com','fashion');
  132. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'Hollywood stars that rocked this red carpet','14-02-2017','MaryanneWat@yahoo.com','stars');
  133. INSERT INTO ARTICLE VALUES (AutoIncSeq2.NEXTVAL,'Plastic makes up nearly 70% of all ocean litter','06-03-2017','MaryanneWat@yahoo.com','science');
  134.  
  135. INSERT INTO MEMBERSHIP VALUES ('NoMembership');
  136. INSERT INTO MEMBERSHIP VALUES ('Basic');
  137. INSERT INTO MEMBERSHIP VALUES ('Silver');
  138. INSERT INTO MEMBERSHIP VALUES ('Gold');
  139. INSERT INTO MEMBERSHIP VALUES ('Diamond');
  140.  
  141. INSERT INTO GRANTS_ACCESS_TO VALUES ('NoMembership',1);
  142. INSERT INTO GRANTS_ACCESS_TO VALUES ('Basic',1);
  143. INSERT INTO GRANTS_ACCESS_TO VALUES ('Basic',2);
  144. INSERT INTO GRANTS_ACCESS_TO VALUES ('Silver',1);
  145. INSERT INTO GRANTS_ACCESS_TO VALUES ('Silver',2);
  146. INSERT INTO GRANTS_ACCESS_TO VALUES ('Silver',3);
  147. INSERT INTO GRANTS_ACCESS_TO VALUES ('Gold',1);
  148. INSERT INTO GRANTS_ACCESS_TO VALUES ('Gold',2);
  149. INSERT INTO GRANTS_ACCESS_TO VALUES ('Gold',3);
  150. INSERT INTO GRANTS_ACCESS_TO VALUES ('Gold',4);
  151. INSERT INTO GRANTS_ACCESS_TO VALUES ('Gold',12);
  152. INSERT INTO GRANTS_ACCESS_TO VALUES ('Gold',11);
  153. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',1);
  154. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',2);
  155. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',3);
  156. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',4);
  157. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',5);
  158. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',6);
  159. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',7);
  160. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',8);
  161. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',9);
  162. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',10);
  163. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',11);
  164. INSERT INTO GRANTS_ACCESS_TO VALUES ('Diamond',12);
  165.  
  166. INSERT INTO REGISTEREDUSER VALUES ('DarceyRowanne@gmail.com','Darcey','PASSWORD1','Diamond');
  167. INSERT INTO REGISTEREDUSER VALUES ('DaynaYorick@gmail.com','Dayna','PASSWORD2','Diamond');
  168. INSERT INTO REGISTEREDUSER VALUES ('ErnieTria@gmail.com','Ernie','PASSWORD3','Diamond');
  169. INSERT INTO REGISTEREDUSER VALUES ('WestleyCandice@yahoo.com','Westley','PASSWORD4','Gold');
  170. INSERT INTO REGISTEREDUSER VALUES ('KierstenTabatha@gmail.com','Kiersten','PASSWORD5','Gold');
  171. INSERT INTO REGISTEREDUSER VALUES ('SteveSherry@gmail.com','Steve','PASSWORD6','Silver');
  172. INSERT INTO REGISTEREDUSER VALUES ('AuraRachelle@yahoo.com','Aura','PASSWORD7','Basic');
  173. INSERT INTO REGISTEREDUSER VALUES ('FelixParker@gmail.com','Felix','PASSWORD8','NoMembership');
  174. INSERT INTO REGISTEREDUSER VALUES ('IbbieMelicent@yahoo.com','Ibbie','PASSWORD9','NoMembership');
  175.  
  176. INSERT INTO ARTICLECOMMENT VALUES (AutoIncSeq.NEXTVAL,1,'DarceyRowanne@gmail.com','text komentara1');
  177. INSERT INTO ARTICLECOMMENT VALUES (AutoIncSeq.NEXTVAL,0,'DaynaYorick@gmail.com','text komentara2');
  178. INSERT INTO ARTICLECOMMENT VALUES (AutoIncSeq.NEXTVAL,0,'ErnieTria@gmail.com','text komentara3');
  179. INSERT INTO ARTICLECOMMENT VALUES (AutoIncSeq.NEXTVAL,5,'ErnieTria@gmail.com','text komentara4');
  180. INSERT INTO ARTICLECOMMENT VALUES (AutoIncSeq.NEXTVAL,7,'ErnieTria@gmail.com','text komentara5');
  181. INSERT INTO ARTICLECOMMENT VALUES (AutoIncSeq.NEXTVAL,3,'ErnieTria@gmail.com','text komentara51');
  182. INSERT INTO ARTICLECOMMENT VALUES (AutoIncSeq.NEXTVAL,12,'AuraRachelle@yahoo.com','text komentara6');
  183. INSERT INTO ARTICLECOMMENT VALUES (AutoIncSeq.NEXTVAL,3,'AuraRachelle@yahoo.com','text komentara7');
  184.  
  185. ------- JEDNODUCHE SELECTY
  186. /*Zobraz vsetkych registrovanych uzivatelov kt. maju gmail.*/
  187. CREATE OR REPLACE VIEW GmailUsers AS
  188. SELECT * FROM REGISTEREDUSER WHERE REGEXP_LIKE (EMAIL, '*.@gmail.com');
  189.  
  190. /*Zobraz všetky články ktoré patria do kategórie fashion.*/
  191. CREATE OR REPLACE VIEW FashionCategory AS
  192. SELECT * FROM ARTICLE WHERE CATEGORYNAME='fashion';
  193.  
  194. /*najdi vsetky clanky ktore patria do kategorie science a boli napisane senior editorom*/
  195. CREATE OR REPLACE VIEW ScienceArticlesBySeniorEditor AS
  196. SELECT * FROM ARTICLE
  197. WHERE ARTICLE.EMAIL=(SELECT EMAIL
  198. FROM EDITOR
  199. WHERE EDITOR.POSITIONNAME='senior editor')
  200. AND ARTICLE.CATEGORYNAME='science';
  201.  
  202. ------- SPAJANIE TABULIEK
  203. /*Mená a emaily editorov, ktorí už napísali nejaký (aspoň 1) článok. ----------- outer JOIN */
  204. CREATE OR REPLACE VIEW OuterJOIN AS
  205. SELECT UNIQUE EDITOR.PUBLISHINGNAME, ARTICLE.EMAIL
  206. FROM EDITOR
  207. RIGHT OUTER JOIN ARTICLE
  208. ON EDITOR.EMAIL = ARTICLE.EMAIL;
  209.  
  210. /*Vypise pouzivatelov, ktory napisali nejaký komentár, daný komentár a pocet likov. -------- spajanie 2 tabuliek */
  211. CREATE OR REPLACE VIEW TwoTablesJOIN AS
  212. SELECT u.REGISTEREDUSERNAME,u.EMAIL,a.COMMENTTEXT,a.NUMBEROFLIKES
  213. FROM ARTICLECOMMENT a
  214. JOIN REGISTEREDUSER u
  215. ON a.EMAIL = u.EMAIL
  216. ORDER BY a.ARTICLECOMMENTID;
  217.  
  218. /*vsetky clanky napisane serior editorom ku ktorym maju pristup uzivatelia s gold membershipom ---------- spajanie 3 tabuliek */
  219. CREATE OR REPLACE VIEW ThreeTablesJOIN AS
  220. SELECT a.TITLE, e.POSITIONNAME, gat.TYPE
  221. FROM ARTICLE a
  222. JOIN EDITOR e ON a.EMAIL=e.EMAIL
  223. JOIN GRANTS_ACCESS_TO gat ON gat.ARTICLEID=a.ARTICLEID
  224. WHERE gat.TYPE='Gold' AND e.POSITIONNAME='senior editor';
  225.  
  226. ------ AGREGACNE FUNKCIE
  227. /*Pocet najnovsich clankov - napisanych v posledny den publikacie na stranke.*/
  228. CREATE OR REPLACE VIEW NewestArticles AS
  229. SELECT COUNT(ARTICLEID) AS "NUMBER OF NEWEST ARTICLES"
  230. FROM ARTICLE
  231. WHERE ARTICLE.DATEPUBLISHED=(SELECT MAX(DATEPUBLISHED) FROM ARTICLE);
  232.  
  233. /*Najkratsie meno používatela, ktorý neodberá ziaden membership.*/
  234. CREATE OR REPLACE VIEW ShortestNameWithNoMembership AS
  235. SELECT MIN(REGISTEREDUSERNAME)  AS "SHORTEST NAME"
  236. FROM REGISTEREDUSER
  237. WHERE TYPE='NoMembership';
  238.  
  239. /*Pocet clankov napisanych danym editorom.*/
  240. CREATE OR REPLACE VIEW NumberOfArticlesByEditor AS
  241. SELECT EMAIL, COUNT (EMAIL) AS "NUMBER OF ARTICLES"
  242. FROM ARTICLE
  243. GROUP BY EMAIL
  244. ORDER BY 2 DESC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement