Solution Assignment

advertisement
Solution Assignment #1
Parts a
Create statements:
SQL> Create table author
(authornum char(3) primary key,
authorlast char (18),
authorfirst char(10)); 2 3 4
Table created.
SQL> create table book
(bookcode char(4) primary key,
title char(40),
publish_code char(2),
type char(4),
price number (5,2),
papaerback char(3)); 2 3 4 5
6
7
Table created.
SQL> create table wrote
(bookcode char(4) references book,
authornum char (3) references author,
sequence number(2),
primary key (bookcode,authornum)); 2
3
4
5
Table created.
SQL> desc author;
Name
Null? Type
----------------------------------------- -------- ---------------------------AUTHORNUM
NOT NULL CHAR(3)
AUTHORLAST
CHAR(18)
AUTHORFIRST
CHAR(10)
SQL> select * from author;
AUT AUTHORLAST
AUTHORFIRS
--- ------------------ ---------1 Morrison
Toni
2 Solotaroff
Paul
3 Vintage
Vernor
4 Francis
Dick
5 Straub
Peter
6 King
7 Prattt
8 Chase
9 Collins
10 Heller
11 Wills
Stephen
Philip
Truddi
Bradley
Joseph
Gary
AUT AUTHORLAST
AUTHORFIRS
--- ------------------ ---------12 Hofstadter
Douglas R.
13 Lee
Harper
14 Ambrose
Stephen E.
15 Rowling
J.K.
16 Salinger
J.D.
17 Heaney
Seamus
18 Camus
Albert
19 Collins. Jr.
Bradley
20 Steinbeck
John
21 Castleman
Riva
22 Owen
Barbara
AUT AUTHORLAST
AUTHORFIRS
--- ------------------ ---------23 O' Rourke
Randy
24 Kidder
Tracy
25 Schleining
Lon
25 rows selected.
SQL> desc book;
Name
Null? Type
----------------------------------------- -------- ---------------------------BOOKCODE
NOT NULL CHAR(4)
TITLE
CHAR(40)
PUBLISH_CODE
CHAR(2)
TYPE
CHAR(4)
PRICE
NUMBER(5,2)
PAPERBACK
CHAR(3)
SQL> SELECT * FROM BOOK;
BOOK TITLE
PU TYPE
PRICE PAP
---- ---------------------------------------- -- ---- ---------- --- -180 A Deepness in the Sky
TB SFI
7.19 Yes
189 Magic Terror
FA
HOR
7.99 Yes
200 The Stranger
VB
FIC
8 Yes
378 Venice
SS
ART
24.5 No
079X Second Wind
PU
MYS
24.95 No
808 The Edge
JP
MYS
6.99 Yes
1351 Dreamcatcher:A Novel
SC
HOR
19.6 No
1382 Treasure Chests
TA
ART
24.46 No
138X Beloved
PL
FIC
12.95 Yes
2226 Harry Potter and the Prisoner of Azkaban ST SFI
13.96 No
2281 Van Gogh and Gauguin
WP ART
21 No
BOOK TITLE
PU
TYPE
PRICE PAP PU
---- ---------------------------------------- -- ---- ---------- --- -2766 Of Mice and Men
PE
FIC
6.95 Yes
2908 Electric Light
FS
POE
14 No
3350 Group: Six People in Search of Life
BP PSY
10.4 Yes
3743 Nine Stories
LB
FIC
5.99 Yes
3906 The Soul of a new machine
BY
SCI
11.16 Yes
5163 Travels and Charley
PE
TRA
7.95 Yes
5790 Catch-22
SC
FIC
12 Yes
6128 Jazz
PL
FIC
12.95 Yes
6328 Band of Brothers
TO
HIS
9.6 Yes
669X A Guide To SQL
CT
CMP
37.95 Yes
6908 Frany and Zooey
LB
FIC
5.99 Yes
BOOK TITLE
PU TYPE
PRICE PAP PU
---- ---------------------------------------- -- ---- ---------- --- -7405 East of Eden
PE
FIC
12.95 Yes
7443 Harry Potter and the Goblet of Fire ST SFI
18.16 No
7559 The Fall
VB
FIC
8 Yes
8092 Godel, Escher, Bach
BA
PHI
14 Yes
8720 When Rabbit Howls
JP
PSY
6.29 Yes
9611 Black House
RH
HOR
18.81 No
9627 Songs of Solomon
PL
FIC
14 Yes
9701 The Grapes of Wrath
PE
FIC
13 Yes
9882 Slay Ride
JP
MYS
6.99 Yes
9883 The Catch in the Rye
LB
FIC
5.99 Yes
9931 To Kill a Mocking Bird
HC
FIC
18 No
33 rows selected.
SQL> desc wrote;
Name
Null? Type
----------------------------------------- -------- ---------------------------BOOKCODE
NOT NULL CHAR(4)
AUTHORNUM
NOT NULL CHAR(3)
SEQUENCE
NUMBER(2)
SQL> select * from wrote;
BOOK AUT SEQUENCE
---- --- ---------180 3
1
189 5
1
200 18
1
378 11
1
079X 4
1
808 4
1
1351 6
1
1382 23
2
1382 25
1
138X 1
1
2226 15
1
BOOK AUT SEQUENCE
---- --- ---------2281 9
2
2281 19
1
2766 20
1
2908 17
1
3350 2
1
3743 16
1
3906 24
1
5163 20
1
5790 10
1
6128 1
1
6328 14
1
BOOK AUT SEQUENCE
---- --- ---------6908 16
1
7405 20
1
7443 15
1
7559 18
1
8092 12
1
8720 8
1
9611 5
2
9611 6
1
9627 1
1
9701 20
1
9882 4
1
BOOK AUT SEQUENCE
---- --- ---------9883 16
1
9931 13
1
669X 7
1
36 rows selected.
Part c
Q1.What are the titles of all psychology (PSY) books?
SQL> select Title from book
2 where upper(type)='PSY';
TITLE
---------------------------------------Group: Six People in Search of Life
When Rabbit Howls
Q2. Give the count of different book types?
SQL> select count(*), type
2 from book
3 group by type;
COUNT(*) TYPE
---------- ---3 ART
1 CMP
13 FIC
1 HIS
3 HOR
3 MYS
1 PHI
1 POE
2 PSY
1 SCI
3 SFI
COUNT(*) TYPE
---------- ---1 TRA
12 rows selected.
Q3.What is the average price of fictional (FIC) books?
SQL> select avg(price)
2 from book
3 where upper(type) = 'FIC';
AVG(PRICE)
---------10.5207692
If you want book type ALSO,
SQL> SELECT TYPE, AVG(PRICE)
2 FROM BOOK
3 GROUP BY TYPE
4 HAVING UPPER(TYPE)='FIC';
TYPE AVG(PRICE)
---- ---------FIC 10.5207692
Q4.What are the AuthorNum of authors that have NOT written a book?
SQL> select authornum
from author
minus
select distinct authornum
from wrote; 2 3 4 5
AUT
--21
22
If you want the names of authors, then use following query:
SQL> select authorlast, authorfirst
from author
where authornum in (select authornum
from author
minus
select distinct authornum
from wrote); 2 3 4 5 6 7
AUTHORLAST
AUTHORFIRS
------------------ ---------Castleman
Riva
Owen
Barbara
Q5.How many fictional books are published by publisher LB?
SQL> select count(*)
from book
where upper(type)='FIC' and upper(publish_code)='LB'; 2
3
COUNT(*)
---------3
How can we get type and publisher_code also?
SQL> select count(*), type, publish_code
from book
where upper(type)='FIC' and upper(publish_code)='LB'; 2
select count(*), type, publish_code
*
ERROR at line 1:
ORA-00937: not a single-group group function
3
Need to group by BOTH fields
SQL> select count(*), type, publish_code
from book
where upper(type)='FIC' and upper(publish_code)='LB'
group by publish_code, type; 2 3 4
COUNT(*) TYPE PU
---------- ---- -3 FIC LB
Q6.What are the names of authors that have written fiction or trade books?
SQL> select authorfirst||authorlast, authornum from author
where authornum in (
select distinct authornum from wrote
where bookcode in (select bookcode from book
where upper(type) in ('FIC','TRA')));
2 3 4 5
AUTHORFIRST||AUTHORLAST
AUT
---------------------------- --Toni
Morrison
1
Joseph Heller
10
Harper Lee
13
J.D.
Salinger
Albert Camus
John
Steinbeck
16
18
20
6 rows selected.
Q7Give the names (first and last) of authors that have no more than one r
(i.e., 0 or 1)in their last name?
SQL> SQL> select authorfirst|| ' ' ||authorlast as "authorName (FIRST/LAST)"
from author
where upper(authorlast) NOT like '%R%R%'; 2 3
authorName (FIRST/LAST)
----------------------------Paul
Solotaroff
Vernor Vintage
Dick
Francis
Peter Straub
Stephen King
Philip Prattt
Truddi Chase
Bradley Collins
Joseph Heller
Gary
Wills
Douglas R. Hofstadter
authorName (FIRST/LAST)
----------------------------Harper Lee
Stephen E. Ambrose
J.K.
Rowling
J.D.
Salinger
Seamus Heaney
Albert Camus
Bradley Collins. Jr.
John
Steinbeck
Riva
Castleman
Barbara Owen
Tracy Kidder
authorName (FIRST/LAST)
----------------------------Lon
Schleining
23 rows selected.
Q8
Give the titles of books that cost more than $20 or less than $8.
SQL> select title
2 from book
3 where price >20 or price <8;
TITLE
---------------------------------------A Deepness in the Sky
Magic Terror
Venice
Second Wind
The Edge
Treasure Chests
Van Gogh and Gauguin
Of Mice and Men
Nine Stories
Travels and Charley
A Guide To SQL
TITLE
---------------------------------------Frany and Zooey
When Rabbit Howls
Slay Ride
The Catch in the Rye
15 rows selected.
Q9.
Give the count of books written by each author?
SQL> l
1 select authornum, count(*)
2 from wrote
3* group by authornum
SQL> /
AUT COUNT(*)
--- ---------1
3
10
1
11
1
12
1
13
1
14
1
15
2
16
17
18
19
3
1
2
1
AUT COUNT(*)
--- ---------2
1
20
4
23
1
24
1
25
1
3
1
4
3
5
2
6
2
7
1
8
1
AUT COUNT(*)
--- ---------9
1
23 rows selected.
Q10. A new book with book code 9645, title “lost” is to be published by author Jim Stack.
Process this request.
(Do not actually save it, i.e., rollback after your output is done). Do NOT add a new
author Jim Stewart,
you may get an integrity constraint error, submit the query with the error.
Insert New book
SQL> Insert into book (bookcode,title)
values (9645,'LOST'); 2
1 row created.
SQL> select * from book;
BOOK TITLE
PU TYPE
PRICE PAP
---- ---------------------------------------- -- ---- ---------- --9645 LOST
180 A Deepness in the Sky
TB SFI
7.19 Yes
189 Magic Terror
FA HOR
7.99 Yes
200 The Stranger
VB FIC
8 Yes
378 Venice
SS ART
24.5 No
079X Second Wind
PU MYS
24.95 No
808 The Edge
JP MYS
6.99 Yes
1351 Dreamcatcher:A Novel
SC HOR
19.6 No
1382 Treasure Chests
TA ART
24.46 No
138X Beloved
PL FIC
12.95 Yes
2226 Harry Potter and the Prsioner of Azkaban ST SFI
13.96 No
BOOK TITLE
PU TYPE
PRICE PAP
---- ---------------------------------------- -- ---- ---------- --2281 Van Gogh and Gauguin
WP ART
21 No
2766 Of Mice and Men
PE FIC
6.95 Yes
2908 Electric Light
FS POE
14 No
3350 Group: Six People in Search of Life
BP PSY
10.4 Yes
3743 Nine Stories
LB FIC
5.99 Yes
3906 The Soul of a new machine
BY SCI
11.16 Yes
5163 Travels and Charley
PE TRA
7.95 Yes
5790 Catch-22
SC FIC
12 Yes
6128 Jazz
PL FIC
12.95 Yes
6328 Band of Brothers
TO HIS
9.6 Yes
669X A Guide To SQL
CT CMP
37.95 Yes
BOOK TITLE
PU TYPE
PRICE PAP
---- ---------------------------------------- -- ---- ---------- --6908 Frany and Zooey
LB FIC
5.99 Yes
7405 East of Eden
PE FIC
12.95 Yes
7443 Harry Potter and the Goblet of Fire ST SFI
18.16 No
7559 The Fall
VB FIC
8 Yes
8092 Godel, Escher, Bach
BA PHI
14 Yes
8720 When Rabbit Howls
JP PSY
6.29 Yes
9611 Black House
RH HOR
18.81 No
9627 Songs of Solomon
PL FIC
14 Yes
9701 The Grapes of Wrath
PE FIC
13 Yes
9882 Slay Ride
JP MYS
6.99 Yes
9883 The Catch in the Rye
LB FIC
5.99 Yes
BOOK TITLE
PU TYPE
PRICE PAP
---- ---------------------------------------- -- ---- ---------- --9931 To Kill a Mocking Bird
HC FIC
18 No
34 rows selected.
SQL> insert into wrote values (9645,null,null);
insert into wrote values (9645,null,null)
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("AGGARWAL"."WROTE"."AUTHORNUM")
If we make up a value for author number say 26
SQL> insert into wrote values (9645,26,null);
insert into wrote values (9645,26,null)
*
ERROR at line 1:
ORA-02291: integrity constraint (AGGARWAL.SYS_C0035756) violated - parent key
not found
Part d:
An AUTHOR can be part of many WROTE entries but a WROTE entry belongs to only one
author
AUTHOR----->WROTE
SIMILARLY A BOOK be part of many WROTE entries but a WROTE entry belongs to only
one book
BOOK----------->WROTE
AUTHOR
WROTE
BOOK
WROTE
Part e: There are any issues here?
Tables do not exhibit any anomalies, since there are no redundant repeating fields
Download