Ergasia GE3 2013 2014 Sol ORACLE

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 33

..

11 (2013-2014) - (3)

1 [10]

..
( ):

DROP TABLE "";


DROP TABLE "";
DROP TABLE "";
DROP TABLE "";
DROP TABLE "";
DROP TABLE "";
DROP TABLE "_";
DROP TABLE "";
DROP TABLE "";

/* {} */
CREATE TABLE ""
("" INTEGER NOT NULL,
"" VARCHAR(60) NOT NULL,
"" VARCHAR(100) NOT NULL,
"" VARCHAR(15) NOT NULL,
EMAIL VARCHAR(50),
UNIQUE (EMAIL),
PRIMARY KEY(""));

/* {_} */
CREATE TABLE "_"
("" VARCHAR(10) NOT NULL,
"" VARCHAR(80) NOT NULL,
UNIQUE(""),
PRIMARY KEY (""));

/* {} */
CREATE TABLE ""
("" VARCHAR(10) NOT NULL,
"" VARCHAR(6) NOT NULL,
"" VARCHAR(30) NOT NULL,
"" VARCHAR(30) NOT NULL,
PRIMARY KEY (""));

/* {} */
CREATE TABLE ""
("" INTEGER NOT NULL,
"" DATE NOT NULL,
"" NUMBER(7,2) NOT NULL,
"" INTEGER NOT NULL,
"" VARCHAR(10) NOT NULL,
FOREIGN KEY ("") REFERENCES "" (""),
FOREIGN KEY ("") REFERENCES "_" (""),
PRIMARY KEY (""));

/* {} */
CREATE TABLE ""
("" VARCHAR(10) NOT NULL,
"" NUMBER(7,2) NOT NULL,

- 18, 263 35, 1


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

"" VARCHAR(200),
"" INTEGER NOT NULL,
"" INTEGER NOT NULL,
"" DATE,
"" VARCHAR(10) ,
FOREIGN KEY ("") REFERENCES "" (""),
FOREIGN KEY ("") REFERENCES "" (""),
FOREIGN KEY ("") REFERENCES "" (""),
PRIMARY KEY (""));

/* {} */
CREATE TABLE ""
("" VARCHAR(10) NOT NULL,
"" DATE NOT NULL,
"" INTEGER NOT NULL,
FOREIGN KEY ("") REFERENCES "" (""),
PRIMARY KEY ("", ""));

/* {} */
CREATE TABLE ""
("" VARCHAR(10) NOT NULL,
"" NUMBER(7,2) NOT NULL,
FOREIGN KEY ("") REFERENCES "" (""),
PRIMARY KEY (""));

/* {} */
CREATE TABLE ""
("" VARCHAR(10) NOT NULL,
"" INTEGER NOT NULL,
"" INTEGER NOT NULL,
FOREIGN KEY ("") REFERENCES "" (""),
PRIMARY KEY (""));

/* {} */

INSERT INTO "" VALUES (11, ' ', ' 3 ', '2103434454', 'gnik@gmail.com');
INSERT INTO "" VALUES (22, ' ', ' 5 ', '2651038674', 'npetrop@yahoo.gr');
INSERT INTO "" VALUES (44, ' ..', ' 243 ', '2103376002', null);
INSERT INTO "" VALUES (55, ' ', '. 5 ', '6978989898', 'vanast@otenet.gr');
INSERT INTO "" VALUES (66, ' ', '. 4 ','2132323455', 'avar@hotmail.com');
INSERT INTO "" VALUES (77, ' ', ' 12 ','2310343456', 'sgran@hol.gr');
INSERT INTO "" VALUES (88, ' ', ' 25 ', '2310456456', 'ahan@gmail.com');
INSERT INTO "" VALUES (99, ' ', '. 38 ', '2385039393', 'vpred@forthnet.gr');
INSERT INTO "" VALUES (111, ' ', '. 39 ', '2310202020', 'thtsen@hotmail.com');
INSERT INTO "" VALUES (222, ' ', '. 134 ','2101234563', 'thprit@yahoo.gr');
INSERT INTO "" VALUES (333, ' ', '. 98 ', '2810939393', 'nkaram@hol.gr');
INSERT INTO "" VALUES (444, ' ', ' 74 ', '2610343456', 'mnikol@otenet.gr');
INSERT INTO "" VALUES (555, ' ', ' 29 ', '2103030303', 'fdren@gmail.com');
INSERT INTO "" VALUES (777, ' ', ' 3 ', '2310304677', 'kpap@yahoo.gr');
INSERT INTO "" VALUES (5555, ' ', ' 121 ', '2610313131', null);
INSERT INTO "" VALUES (6666, ' ', ' 21 ', '2104334498', null);
INSERT INTO "" VALUES (8888, ' ', ' 230 ', '2105555555', null);
INSERT INTO "" VALUES (9999, ' ', ' 103 ', '2106021633', null);
INSERT INTO "" VALUES (1010, ' ', '. 39 ', '2331030300', null);
INSERT INTO "" VALUES (77777, ' ', ' 58 ', '2310228290', null);
INSERT INTO "" VALUES (444444, ' ', '. 80 ', '2510393939', null);
INSERT INTO "" VALUES (222222, ' ', '. 120 ', '2551020202', null);
INSERT INTO "" VALUES (3333, ' ', '. 2 ', '2810999999', null);

/* {_} */

INSERT INTO "_" VALUES ('001', '');


INSERT INTO "_" VALUES ('002', 'Internet');
INSERT INTO "_" VALUES ('003', 'SMS');
INSERT INTO "_" VALUES ('004', ' ');

- 18, 263 35, 2


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

/* {} */

INSERT INTO "" VALUES ('G31012', '07:00', '', '');


INSERT INTO "" VALUES ('G31013', '09:20', '', '');
INSERT INTO "" VALUES ('G3101', '08:15', '', '');
INSERT INTO "" VALUES ('G3102', '09:00', '', '');
INSERT INTO "" VALUES ('C698', '08:00', '', '');
INSERT INTO "" VALUES ('C699', '09:00', '', '');
INSERT INTO "" VALUES ('C700', '17:00', '', '');
INSERT INTO "" VALUES ('C701', '18:00', '', '');
INSERT INTO "" VALUES ('C702', '06:00', '', '');
INSERT INTO "" VALUES ('C703', '10:00', '', '');
INSERT INTO "" VALUES ('F3201', '17:00', '', '');
INSERT INTO "" VALUES ('F3202', '19:00', '', '');
INSERT INTO "" VALUES ('F3301', '10:00', '', '');
INSERT INTO "" VALUES ('F3302', '11:00', '', '');
INSERT INTO "" VALUES ('G3777', '10:00', '', '');
INSERT INTO "" VALUES ('G3778', '12:00', '', '');
INSERT INTO "" VALUES ('L456', '13:00', '', '');
INSERT INTO "" VALUES ('L457', '15:00', '', '');
INSERT INTO "" VALUES ('G397', '13:00', '', '');
INSERT INTO "" VALUES ('G398', '14:00', '', '');
INSERT INTO "" VALUES ('G395', '13:00', '', '');
INSERT INTO "" VALUES ('G396', '14:00', '', '');
INSERT INTO "" VALUES ('G392', '11:00', '', '');
INSERT INTO "" VALUES ('G393', '12:00', '', '');
INSERT INTO "" VALUES ('G390', '11:00', '', '');
INSERT INTO "" VALUES ('G391', '12:00', '', '');

/* {} */

INSERT INTO "" VALUES (1, TO_DATE('11/10/2012 14:00','DD/MM/YYYY HH24:MI'), 132.50, 11, '001');
INSERT INTO "" VALUES (2, TO_DATE('11/10/2012 14:20', 'DD/MM/YYYY HH24:MI'), 44, 22, '002');
INSERT INTO "" VALUES (3, TO_DATE('11/10/2012 14:30','DD/MM/YYYY HH24:MI'), 60, 44, '003');
INSERT INTO "" VALUES (4, TO_DATE('12/10/2012 08:00','DD/MM/YYYY HH24:MI'), 100, 44, '002');
INSERT INTO "" VALUES (5, TO_DATE('12/10/2012 02:00','DD/MM/YYYY HH24:MI'), 12, 55, '002');
INSERT INTO "" VALUES (6, TO_DATE('13/10/2012 22:00','DD/MM/YYYY HH24:MI'), 45, 66, '002');
INSERT INTO "" VALUES (7, TO_DATE('14/10/2012 14:00','DD/MM/YYYY HH24:MI'), 200, 77, '002');
INSERT INTO "" VALUES (8, TO_DATE('15/10/2012 14:00','DD/MM/YYYY HH24:MI'), 45, 333, '003');
INSERT INTO "" VALUES (9, TO_DATE('16/10/2012 14:05','DD/MM/YYYY HH24:MI'), 12, 99, '004');
INSERT INTO "" VALUES (10, TO_DATE('17/10/2012 01:06','DD/MM/YYYY HH24:MI'), 12, 111, '002');
INSERT INTO "" VALUES (11, TO_DATE('17/10/2012 14:05','DD/MM/YYYY HH24:MI'), 45, 22, '001');
INSERT INTO "" VALUES (12, TO_DATE('17/10/2012 14:00','DD/MM/YYYY HH24:MI'), 45, 333, '002');
INSERT INTO "" VALUES (13, TO_DATE('17/10/2012 11:05','DD/MM/YYYY HH24:MI'), 200, 44, '003');
INSERT INTO "" VALUES (14, TO_DATE('18/10/2012 11:00','DD/MM/YYYY HH24:MI'), 45, 555, '004');

/* {} */

INSERT INTO "" VALUES ('001', 0.5, ' 15:00', 1, 111, TO_DATE('12/10/2012','DD/MM/YYYY'), 'G397');
INSERT INTO "" VALUES ('002', 5, '', 1, 3333, null, null);
INSERT INTO "" VALUES ('003', 1, '', 2, 6666, null, null);
INSERT INTO "" VALUES ('004', 0.1, ' 15:00', 3, 77777, null, null);
INSERT INTO "" VALUES ('005', 6, '', 3, 444444,null, null);
INSERT INTO "" VALUES ('006', 2, null, 4, 111, TO_DATE('12/10/2012','DD/MM/YYYY'), 'G397');
INSERT INTO "" VALUES ('007', 6, null, 4, 111, TO_DATE('13/10/2012','DD/MM/YYYY'), 'G31012');
INSERT INTO "" VALUES ('008', 0.1, null, 5, 111, TO_DATE('12/10/2012','DD/MM/YYYY'), 'G397');
INSERT INTO "" VALUES ('009', 1, null, 6, 9999, TO_DATE('14/10/2012','DD/MM/YYYY'), 'G391');
INSERT INTO "" VALUES ('010', 10, '', 7, 8888 , null, null);
INSERT INTO "" VALUES ('011', 10, '', 7, 9999, null, null);
INSERT INTO "" VALUES ('012', 0.1, null, 8, 6666, TO_DATE('16/10/2012','DD/MM/YYYY'), 'G396');
INSERT INTO "" VALUES ('013', 0.1, null, 8, 6666, TO_DATE('16/10/2012','DD/MM/YYYY'), 'G396');
INSERT INTO "" VALUES ('014', 0.1, null, 8, 6666, TO_DATE('16/10/2012','DD/MM/YYYY'), 'G396');
INSERT INTO "" VALUES ('015', 0.1, null, 8, 6666, TO_DATE('16/10/2012','DD/MM/YYYY'), 'G396');
INSERT INTO "" VALUES ('016', 0.1, null, 9, 222222, TO_DATE('17/10/2012','DD/MM/YYYY'), 'F3301');

- 18, 263 35, 3


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

INSERT INTO "" VALUES ('017', 0.1, null, 10, 55, TO_DATE('18/10/2012','DD/MM/YYYY'), 'G398');
INSERT INTO "" VALUES ('018',1, null, 11, 77777, TO_DATE('18/10/2012','DD/MM/YYYY'), 'C698');
INSERT INTO "" VALUES ('019',1, null, 12, 8888, TO_DATE('18/10/2012','DD/MM/YYYY'), 'G396');
INSERT INTO "" VALUES ('020', 20, null,13, 77777, TO_DATE('17/10/2012','DD/MM/YYYY'), 'G397');
INSERT INTO "" VALUES ('021', 40, null, 14, 222222, TO_DATE('18/10/2012','DD/MM/YYYY'), 'F3201');
INSERT INTO "" VALUES ('022', 8, null, 14, 222222, null, null);
INSERT INTO "" VALUES ('023', 9, null, 14, 222222, null, null);
INSERT INTO "" VALUES ('024', 0.2, null, 14, 222222, null, null);

/* {} */

INSERT INTO "" VALUES ('001', TO_DATE('12/10/2012 20:00', 'DD/MM/YYYY HH24:mi'),1);


INSERT INTO "" VALUES ('002', TO_DATE('12/10/2012 21:00', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('003', TO_DATE('11/10/2012 22:00', 'dd/mm/yyyy HH24:mi'), 0);
INSERT INTO "" VALUES ('003', TO_DATE('12/10/2012 18:30', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('004', TO_DATE('11/10/2012 17:30', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('005', TO_DATE('12/10/2012 08:30', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('006', TO_DATE('12/10/2012 13:00', 'dd/mm/yyyy HH24:mi'), 0);
INSERT INTO "" VALUES ('006', TO_DATE('14/10/2012 16:00', 'dd/mm/yyyy HH24:mi'), 0);
INSERT INTO "" VALUES ('006', TO_DATE('15/10/2012 16:00', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('007', TO_DATE('13/10/2012 20:00', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('008', TO_DATE('12/10/2012 23:00', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('009', TO_DATE('14/10/2012 18:00', 'dd/mm/yyyy HH24:mi' ), 1);
INSERT INTO "" VALUES ('012', TO_DATE('16/10/2012 20:30', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('013', TO_DATE('16/10/2012 20:45', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('014', TO_DATE('16/10/2012 17:32', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('015', TO_DATE('16/10/2012 18:30', 'dd/mm/yyyy HH24:mi' ), 0);
INSERT INTO "" VALUES ('015', TO_DATE('17/10/2012 14:30', 'dd/mm/yyyy HH24:mi'), 0);
INSERT INTO "" VALUES ('016', TO_DATE('17/10/2012 23:00', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('017', TO_DATE('18/10/2012 12:30', 'dd/mm/yyyy HH24:mi' ), 1);
INSERT INTO "" VALUES ('018', TO_DATE('18/10/2012 09:00', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('019', TO_DATE('18/10/2012 10:24', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('020', TO_DATE('17/10/2012 20:21', 'dd/mm/yyyy HH24:mi'), 1);
INSERT INTO "" VALUES ('021', TO_DATE ('18/10/2012 20:20', 'dd/mm/yyyy HH24:mi'), 1);

/* {} */

INSERT INTO "" VALUES ('002', 0.3);


INSERT INTO "" VALUES ('005', 0.2);
INSERT INTO "" VALUES ('006', 0.03);
INSERT INTO "" VALUES ('007', 0.03);
INSERT INTO "" VALUES ('010', 0.2);
INSERT INTO "" VALUES ('011', 0.2);
INSERT INTO "" VALUES ('020', 0.3);
INSERT INTO "" VALUES ('021', 0.4);
INSERT INTO "" VALUES ('022', 0.1);
INSERT INTO "" VALUES ('023', 0.2);

/* {} */

INSERT INTO "" VALUES ('001', 20, 30);


INSERT INTO "" VALUES ('003', 10, 10);
INSERT INTO "" VALUES ('004', 20, 10);
INSERT INTO "" VALUES ('008', 20, 10);
INSERT INTO "" VALUES ('009', 10, 20);
INSERT INTO "" VALUES ('012', 20, 5);
INSERT INTO "" VALUES ('013', 20, 15);
INSERT INTO "" VALUES ('014', 10, 10);
INSERT INTO "" VALUES ('015', 5, 20);
INSERT INTO "" VALUES ('016', 20, 20);
INSERT INTO "" VALUES ('017', 10, 20);
INSERT INTO "" VALUES ('018', 20, 10);
INSERT INTO "" VALUES ('019', 10, 5);
INSERT INTO "" VALUES ('024', 10, 5);

- 18, 263 35, 4


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

2 [45] SQL

I. ( )
3
0.2m .

0.2

.
, , , where,
inner joins ( ).

1_V1.
SELECT DISTINCT "".""
FROM "" INNER JOIN "" ON
("".""=""."")
INNER JOIN "" ON ("".""=""."")
INNER JOIN "" ON ("".""=""."")
WHERE ""."" > 0.2;

1_V2.
SELECT DISTINCT "".""
FROM "", "", "", ""
WHERE "".""="".""
AND "".""="".""
AND "".""="".""
AND ""."" > 0.2;


..

II. ( ) e-mail,
Internet.

Internet
( ). ,
Internet ,
e-mail, NULL.

, where, inner joins.

2_V1.
SELECT DISTINCT ""."", "".""
FROM ""
INNER JOIN ""
ON ("".""=""."")
INNER JOIN "_"
ON ("_".""=""."")
WHERE ""."EMAIL" IS NULL AND "_".""='Internet';

- 18, 263 35, 5


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

2_V2.
SELECT DISTINCT ""."", "".""
FROM "", "", "_"
WHERE "".""="".""
AND "_".""="".""
AND ""."EMAIL" IS NULL AND "_".""='Internet';


44 ..

III. 50 15
2012.

( COUNT)
( DISTINCT)
. 01/10/2012 15/10/2012
( 15 ),
50 .
TO_DATE(),
>= <= BETWEEN (
). :
( ).
.

3_V1.
SELECT COUNT(DISTINCT ""."") AS " "
FROM "", ""
WHERE "".""="".""
AND ""."" BETWEEN TO_DATE ('01/10/2012', 'dd/mm/yyyy')
AND TO_DATE ('15/10/2012', 'dd/mm/yyyy')
AND ""."" > 50;

3_V2.
SELECT COUNT(DISTINCT ""."") AS " "
FROM "", ""
WHERE "".""="".""
AND ""."" >= TO_DATE ('01/10/2012', 'dd/mm/yyyy')
AND ""."" <= TO_DATE ('15/10/2012', 'dd/mm/yyyy')
AND ""."" > 50;

IV. .
( ,
).


( )
.
LIKE. ,
COUNT().
where inner join.

- 18, 263 35, 6


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

4_V1.
SELECT COUNT(""."") AS "_"
FROM ""
INNER JOIN ""
ON ("".""=""."")
WHERE ""."" LIKE '%';

4_V2.
SELECT COUNT(""."") AS "_"
FROM "", ""
WHERE "".""="".""
AND ""."" LIKE '%';

_
6

V. .

,
.
( ) ,
AVG(). ,
( IN) (join)
.

5_V1.
SELECT AVG(""."") AS " "
FROM ""
WHERE ""."" IN
(SELECT ""."" FROM "");

5_V2.
SELECT AVG(""."") AS " "
FROM "", ""
WHERE "".""=""."";


11.6

VI. ()
() ().

SUM().
(
) , .
(.. LIKE) .
: ()
.
where,
inner join. : DISTINCT
( ).

- 18, 263 35, 7


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

6_V1.
SELECT SUM(""."") AS "H "
FROM ""
WHERE ""."" IN
(SELECT DISTINCT "".""
FROM ""
INNER JOIN "" ON "".""="".""
WHERE "".""=''
OR "".""='');

6_V2.
SELECT SUM(""."") AS "H "
FROM ""
WHERE ""."" IN
(SELECT DISTINCT "".""
FROM "", ""
WHERE "".""="".""
AND ("".""=''
OR "".""=''));

H
436.5

VII. 8
(: SQL).

SQL
8
UNION
8 .
(UNION) (join) . :
UNION (
). II.

7_V1
SELECT ' ' AS "_8",
COUNT(""."") AS "_"
FROM "" INNER JOIN "" ON
"".""="".""
INNER JOIN "" ON "".""="".""
WHERE "".""=8
UNION
SELECT ' ' AS "_8",
COUNT(""."") AS "_"
FROM "" INNER JOIN "" ON
"".""="".""
INNER JOIN "" ON "".""="".""
WHERE "".""=8;

_ 8 _
0
4

- 18, 263 35, 8


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

VIII. ( )
.

(


),
SELECT (
) ( ).
. : DISTINCT
( ).

8_V1.
SELECT "", "" FROM ""
WHERE "" IN (SELECT DISTINCT "" FROM "")
AND "" IN (SELECT DISTINCT "" FROM "");

8_V2.
SELECT DISTINCT ""."", ""
FROM "" INNER JOIN ""
ON "".""="".""
INTERSECT
SELECT DISTINCT ""."", ""
FROM "" INNER JOIN ""
ON "".""=""."";


55
111

IX. ( )
( ) .


,
.
(WHERE .=1)
.
: .
II. DISTINCT
(
). () .

9_V1.
SELECT DISTINCT "".""
FROM "" INNER JOIN ""
ON "".""="".""
INNER JOIN "" ON "".""="".""
WHERE "".""=1 AND ""."" IN
(SELECT DISTINCT ""
FROM ""
WHERE "" NOT IN
(SELECT ""
FROM ""
WHERE ""=1));

- 18, 263 35, 9


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr


14
8

X.
( ) .

("
")
( ) "
" ( "
").
() (, ,
), () (
/ / ) ()
, MAX() ALL (
). .

10_V1.
SELECT ""."", ROUND (("".""-
"".""), 3) AS " "
FROM "" INNER JOIN ""
ON "".""="".""
INNER JOIN "" ON "".""="".""
WHERE "".""=1
AND "".""-""."" =
(SELECT MAX("".""-""."")
FROM "" INNER JOIN ""
ON "".""="".""
INNER JOIN "" ON "".""="".""
WHERE "".""=1);

10_V2
SELECT ""."", ROUND (("".""-
"".""), 3) AS " "
FROM "" INNER JOIN ""
ON "".""="".""
INNER JOIN "" ON "".""="".""
WHERE "".""=1
AND "".""-""."" >= ALL
(SELECT "".""-"".""
FROM "" INNER JOIN ""
ON "".""="".""
INNER JOIN "" ON "".""="".""
WHERE "".""=1);


4 3.333

1: (
)
,

- 18, 263 35, 10


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

. (
)
).
( ).

SELECT ""."", ROUND (("".""-


"".""), 3) AS " "
FROM "" INNER JOIN ""
ON "".""="".""
INNER JOIN "" ON "".""="".""
WHERE "".""=1
AND ""."" NOT IN (SELECT DISTINCT ""
FROM "" WHERE "" NOT IN
(SELECT "" FROM "" WHERE ""=1))
AND "".""-""."" >= ALL
(SELECT "".""-"".""
FROM "" INNER JOIN ""
ON "".""="".""
INNER JOIN "" ON "".""="".""
WHERE "".""=1
AND ""."" NOT IN (SELECT DISTINCT ""
FROM "" WHERE "" NOT IN
(SELECT "" FROM "" WHERE ""=1)));

2: ,

, ( -
.. / SYSDATE)
(
=1 -:
).

XI. ( )
( ).

,
.
( )
GROUP BY ( )
COUNT. (
) _. (
.. . . ) ,
.

11_V1.
SELECT "", COUNT("") AS "_"
FROM ""
GROUP BY ""

11_V2.
SELECT "_"."", COUNT("") AS "_"
FROM "", "_"
WHERE "".""="_".""
GROUP BY "_".""

- 18, 263 35, 11


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

_
002 7
003 3
001 2
004 2

: (
( )
(_ = 0) .
(. ,
),
(right outer join ) :

SELECT "_"."", COUNT("") AS "_"


FROM "" RIGHT OUTER JOIN "_"
ON "".""="_".""
GROUP BY "_".""

XII. ( ), ,
() .

, .

2 . SUM()
GROUP BY .
GROUP BY HAVING WHERE.

12_V1.
SELECT ""."" AS "",
SUM(""."") AS ""
FROM ""
INNER JOIN ""
ON ("".""=""."")
GROUP BY "".""
HAVING COUNT("".) > 1;

12_V2.
SELECT ""."" AS "",
SUM(""."") AS ""
FROM "", ""
WHERE "".""="".""
GROUP BY "".""
HAVING COUNT(""."") > 1;


89
.. 360
90

- 18, 263 35, 12


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

XIII. ( ) (
).

(COUNT()) ,
MAX() ( ALL)
.
( ), .
, ALL
(MAX(COUNT())
Oracle. : .
II.

13_V1.
SELECT ""."", COUNT(""."") AS "_"
FROM "" INNER JOIN ""
ON "".""="".""
GROUP BY "".""
HAVING COUNT(""."") =
(SELECT MAX(COUNT("".""))
FROM "" INNER JOIN ""
ON "".""="".""
GROUP BY ""."");

13_V2.
SELECT ""."", COUNT(""."") AS "_"
FROM "" INNER JOIN ""
ON "".""="".""
GROUP BY "".""
HAVING COUNT(""."") >= ALL
(SELECT COUNT(""."")
FROM "" INNER JOIN ""
ON "".""="".""
GROUP BY ""."");

_
14 4
8 4

XIV. ( , , ) ,
/ .
.

,
GROUP BY COUNT().
,
where clause ( ). ,
(
0), (left outer join
) (inner join). ,
(inner join),

UNION ( ).

- 18, 263 35, 13


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

14_V1.
SELECT ""."", ""."", ""."",
COUNT(""."") AS "_"
FROM "" LEFT OUTER JOIN ""
ON "".""="".""
WHERE "".""=''
GROUP BY ""."", ""."", ""."";

_
G392 0
L456 0
F3201 1
C701 0
G3777 0
G397 4
G395 0
G390 0
G3101 0
G31012 1
C702 0

XV. ( , )
( ). [

].

( )
( GROUP BY)
( ). (group by)
. , ALL
(MAX(COUNT()).

15_V1.
SELECT ""."", ""."", COUNT(*)
FROM ""
GROUP BY ""."", "".""
HAVING COUNT(*) >= ALL (SELECT COUNT(*) FROM ""
GROUP BY ""."", ""."");

15_V2.
SELECT ""."", ""."", COUNT(*)
FROM ""
GROUP BY ""."", "".""
HAVING COUNT(*) = (SELECT MAX(COUNT(*)) FROM ""
GROUP BY ""."", ""."");

C OU N T(*)
4
4

- 18, 263 35, 14


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

:
(
). (
,
) / ( )
( ),
, ..:

SELECT ""."", ""."", COUNT(*)


FROM "" NATURAL INNER JOIN ""
GROUP BY ""."", "".""
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM "" NATURAL INNER JOIN ""
GROUP BY ""."", ""."");

C OU N T(*)
5

- 18, 263 35, 15


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

3 [15]

I.

< , , >

.
. [3]

CREATE OR REPLACE VIEW "_" AS


SELECT SUM("") "_"
FROM "";

(SELECT * FROM "_") :

_
997.5

( ROUND
):

SELECT ""."", "", ROUND(100*SUM("")/(SELECT "_"


FROM "_"), 2) "__"
FROM "_" "", "" ""
WHERE ""."" = "".""
GROUP BY ""."", ""
ORDER BY "__" DESC;

SQL :

_ _
002 Internet 45.91
003 SMS 30.58
001 17.79
004 5.71

: (
)
.
(. ,
),
(left outer join ), :

SELECT ""."", "", NVL(ROUND(100*SUM("")/(SELECT


"_" FROM "_"), 2), 0) "__"
FROM "_" "" LEFT OUTER JOIN "" ""
ON ""."" = "".""
GROUP BY ""."", ""
ORDER BY "__" DESC;

(*) NVL() (. http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions119.htm)


0 "__"
NULL (left outer join).

- 18, 263 35, 16


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

, SQL ,
_ () <005,
> ( ), :

_ _
002 Internet 45.91
003 SMS 30.58
001 17.79
004 5.71
005 0

II. < , ,
> .
. [4]

[ -
-
.]

CREATE OR REPLACE VIEW "__" AS


SELECT ""."", COUNT(*) "_"
FROM "" "", "" "", "" "", "" ""
WHERE ""."" = ""."" AND ""."" = ""."" AND
""."" = "".""
GROUP BY ""."";

(SELECT * FROM "__") :

_
555 3
11 1
44 4
77 2

CREATE OR REPLACE VIEW "__" AS


SELECT ""."", COUNT(*) "_"
FROM "" "", "" "", "" "", "" ""
WHERE ""."" = ""."" AND ""."" = ""."" AND
""."" = "".""
GROUP BY ""."";

(SELECT * FROM "__") :

_
22 2
555 1

- 18, 263 35, 17


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

11 1
44 1
66 1
55 1
333 5
99 1
111 1

SELECT ""."", "_", "_"


FROM "__" "" LEFT OUTER JOIN "__" ""
ON ""."" = "".""
UNION
SELECT ""."", "_", "_"
FROM "__" "" RIGHT OUTER JOIN "__"
ON ""."" = ""."";

SQL :

_ _
11 1 1
22 2 -
44 1 4
55 1 -
66 1 -
77 - 2
99 1 -
111 1 -
333 5 -
555 1 3

FULL OUTER JOIN


. :

SELECT ""."", "_", "_"


FROM "__" "" FULL OUTER JOIN "__" ""
ON ""."" = ""."";

,
(77) :

_ _
555 1 3
11 1 1
44 1 4
111 1 -
99 1 -
22 2 -
55 1 -

- 18, 263 35, 18


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

66 1 -
333 5 -
- - 2

, INNER JOIN ()
. :

SELECT ""."", "_", "_"


FROM "__" "" JOIN "__" ""
ON ""."" = ""."";

,
:

_ _
555 1 3
11 1 1
44 1 4

III.
5 1 dm3 ( )
2 1 cm2 ( ),
< , >
()
.
. m3
. . cm. [4]

[ -

- .]


(1 m3 = 1000 dm3):

CREATE OR REPLACE VIEW "_" AS


SELECT SUM(""*1000)*(5/100) "__"
FROM "" "", "" ""
WHERE ""."" = ""."" AND "" IS NOT NULL;

""" IS NOT NULL"


.

(SELECT * FROM "_") :

_ _
38

CREATE OR REPLACE VIEW "_" AS


SELECT SUM(""*"")*(2/100) "__"
FROM "" "", "" ""

- 18, 263 35, 19


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

WHERE ""."" = ""."" AND "" IS NOT NULL;

""" IS NOT NULL"


.

(SELECT * FROM "_") :

_ _
49

SELECT "__", "__"


FROM "_", "_";

SQL :

_ _ _ _
38 49

IV. SQL
, SQL

, (
) . [4]

CREATE OR REPLACE VIEW "_" AS


SELECT "__", "__"
FROM "_", "_";

CREATE OR REPLACE VIEW "_" AS


SELECT DISTINCT ""."", "".""
FROM "" "", "" ""
WHERE ""."" = ""."" AND "" IS NOT NULL;

""" IS NOT NULL"


.

(SELECT * FROM "_") :


5 12
10 12
6 45
8 45
13 200
1 132.5

- 18, 263 35, 20


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

9 12
14 45
11 45
4 100
12 45

SQL

:

SELECT (SELECT SUM("") FROM "_")-("__" +


"__") ". "
FROM "_";

SQL :

.
606.5

SELECT SUM("") FROM "_";

SQL :

SU M(" ")
693.5

SELECT "__" + "__" " "


FROM "_";

SQL :


87

693.5 87 = 606.5,
.

- 18, 263 35, 21


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

4 [30]

I.
. [3]

UPDATE [SET
"" = ("" * 1000)].
( ).
[IN (SELECT)] WHERE clause.

UPDATE ""
SET "" = ("" * 1000)
WHERE "" IN (SELECT "" FROM "");

O I, II II
, .

II.
( ) . [3]

UPDATE [SET
"" = ] [= (select]
( )
.
1 RDBMS DATE.

UPDATE ""
SET "" =
(SELECT "" + 1 FROM ""
WHERE ""."" = ""."")
WHERE "" IS NULL;

O I, II II
, .

III. (
)
.
( ) (
).
( , ). [:
||]. [4]

UPDATE [SET "" = ]


[= (select] (
/joins)
() () .

/ (
) ( ) (
), <"" LIKE '%' || "">
<"" LIKE '%' || "">.
( )
,
. "" LIKE '%'". ||
(concatenation) ( ).

- 18, 263 35, 22


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

case-sensitive,
: """ NOT LIKE '%'"1 :
" 2, ". ( ),
,
(min max) select.

UPDATE ""
SET "" =
(SELECT MAX("")
FROM "", "", "" "", "" ""
WHERE ""."" = "".""
AND ""."" = "".""
AND ""."" = "".""
AND ""."" LIKE '%' || ""
AND ""."" LIKE '%' || "")
WHERE "" IS NULL;

( ||) CONCAT() (.
http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions026.htm).
|| ( CONCAT())
.

, :


001 500 15:00 1 111 12-OCT-12 G397
002 5 1 3333 12-OCT-12 G395
003 1000 2 6666 12-OCT-12 C700
004 100 15:00 3 77777 12-OCT-12 G397
005 6 3 444444 12-OCT-12 G31012
006 2 - 4 111 12-OCT-12 G397
007 6 - 4 111 13-OCT-12 G31012
008 100 - 5 111 12-OCT-12 G397
009 1000 - 6 9999 14-OCT-12 G391
010 10 7 8888 15-OCT-12 G398
011 10 7 9999 15-OCT-12 G398
012 100 - 8 6666 16-OCT-12 G396
013 100 - 8 6666 16-OCT-12 G396
014 100 - 8 6666 16-OCT-12 G396
015 100 - 8 6666 16-OCT-12 G396
016 100 - 9 222222 17-OCT-12 F3301
017 100 - 10 55 18-OCT-12 G398
018 1000 - 11 77777 18-OCT-12 C698
019 1000 - 12 8888 18-OCT-12 G396
020 20 - 13 77777 17-OCT-12 G397
021 40 - 14 222222 18-OCT-12 F3201
022 8 - 14 222222 19-OCT-12 L456
023 9 - 14 222222 19-OCT-12 L456
024 200 - 14 222222 19-OCT-12 L456

1
.

- 18, 263 35, 23


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

IV.
( ).
-
-
. , ( INSERT)
. [4]

() CREATE
K
.
insert (INSERT INTO SELECT ), SELECT statement

(..
).

CREATE TABLE ""


("" INTEGER NOT NULL,
"" INTEGER NOT NULL,
PRIMARY KEY(""));

INSERT INTO ""


SELECT ""."", COUNT("")
FROM "", ""
WHERE ""."" = "".""
GROUP BY ""."";

: (
)
( ),
.


55 1
111 4
3333 1
6666 5
8888 2
9999 2
77777 3
222222 5
444444 1

V.
. [3]

(


),
DELETE

- 18, 263 35, 24


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

( )
( ).

DELETE FROM ""


WHERE "" NOT IN (SELECT DISTINCT "" FROM "")
AND "" NOT IN (SELECT DISTINCT "" FROM "");

DELETE FROM ""


WHERE "" NOT IN (SELECT DISTINCT "" FROM ""
UNION SELECT DISTINCT "" FROM "");

: DISTINCT .
.

EM AIL
222 . 134 2101234563 thprit@yahoo.gr

444 74 2610343456 mnikol@otenet.gr

88 25 2310456456 ahan@gmail.com
777 3 2610304677 kpap@yahoo.gr

5555 121 2610313131 -

1010 . 39 2331030300 -

VI. ,
. [3]

()
1 (
), () DELETE
0 (
)
( ).

DELETE FROM ""


WHERE ("" = 0
AND "" IN (SELECT ""
FROM ""
WHERE "" = 1));


003 11-OCT-12 0

006 14-OCT-12 0

006 12-OCT-12 0

- 18, 263 35, 25


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

VII. (
/ not null)
[: EXISTS / NOT EXISTS].
( / not null)
. [5]

, . ,

UPDATE [UPDATE "" SET "" = '' ''],

EXISTS / NOT EXISTS (

1 ). ,
(
) .

ALTER TABLE "" ADD "" VARCHAR(6);


ALTER TABLE "" ADD "" INTEGER;

UPDATE ""
SET "" = ''
WHERE NOT EXISTS
(SELECT * FROM ""
WHERE "".""="".""
AND "" NOT IN (SELECT "" FROM ""
WHERE "" = 1));

UPDATE ""
SET "" = ''
WHERE EXISTS
(SELECT * FROM ""
WHERE "".""="".""
AND "" NOT IN (SELECT "" FROM ""
WHERE "" = 1));

: ,
DEFAULT '' ( ALTER)
( ).
EXISTS / NOT EXISTS (
).

UPDATE ""
SET "" =
(SELECT COUNT("") FROM ""
WHERE "".""="".""
AND "" NOT IN (SELECT "" FROM ""
WHERE "" = 1));

1 11-OCT-12 132.5 11 001 0

2 11-OCT-12 44 22 002 0

3 11-OCT-12 60 44 003 0

4 12-OCT-12 100 44 002 0

5 12-OCT-12 12 55 002 0

- 18, 263 35, 26


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

6 13-OCT-12 45 66 002 0

7 14-OCT-12 200 77 002 2


8 15-OCT-12 45 333 003 1

9 16-OCT-12 12 99 004 0

10 17-OCT-12 12 111 002 0


11 17-OCT-12 45 22 001 0

12 17-OCT-12 45 333 002 0

13 17-OCT-12 200 44 003 0

14 18-OCT-12 45 555 004 3

VIII.
(
,
) .
. [5]

(.. )
( )
().
ALTER.
, UPDATE
WHERE clause.
( ALTER)
(, , ).
(
),
UPDATE [.. SET "" = ]
[= (select] [..
]. () (
NULL) (
NOT NULL), () ( DROP)
.

ALTER TABLE "" ADD "" VARCHAR(14);


ALTER TABLE "" ADD "" INTEGER;
ALTER TABLE "" ADD "" INTEGER;
ALTER TABLE "" ADD "" NUMBER(7,2);

UPDATE ""
SET "" = ''
WHERE "" IN (SELECT "" FROM "");

UPDATE ""
SET "" = ''
WHERE "" IN (SELECT "" FROM "");

UPDATE ""
SET "" = (SELECT "" FROM ""
WHERE ""."" = ""."");

UPDATE ""
SET "" = (SELECT "" FROM ""
WHERE ""."" = ""."");

- 18, 263 35, 27


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

UPDATE ""
SET "" = (SELECT "" FROM ""
WHERE ""."" = ""."");

ALTER TABLE ""


MODIFY "" VARCHAR(14) NOT NULL;

DROP TABLE "";


DROP TABLE "";

: NOT NULL . ,
( NOT NULL)
/ ( ,
null ).
, ,
MODIFY.
DEFAULT ALTER
NOT NULL ( ) (.. DEFAULT )
.

8 (
/ ,,):


001 500 1 111 20 30 -
002 5 1 3333 - - .3

003 1000 2 6666 10 10 -

004 100 3 77777 20 10 -


005 6 3 444444 - - .2

006 2 4 111 - - .03

007 6 4 111 - - .03


008 100 5 111 20 10 -

009 1000 6 9999 10 20 -

010 10 7 8888 - - .2

011 10 7 9999 - - .2

012 100 8 6666 20 5 -

013 100 8 6666 20 15 -


014 100 8 6666 10 10 -

015 100 8 6666 5 20 -

016 100 9 222222 20 20 -

017 100 10 55 10 20 -

018 1000 11 77777 20 10 -

019 1000 12 8888 10 5 -

020 20 13 77777 - - .3

021 40 14 222222 - - .4

022 8 14 222222 - - .1
023 9 14 222222 - - .2

024 200 14 222222 10 5 -

- 18, 263 35, 28


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

5 [10] - .. ( )

(*)
11 ()
( BD-normalization.pdf).

, ,
:

_(_, _, _,
_, _, _,
_, _, __,
__, __)

_
(
) .

, , _ :

(1). _, _, __ _,
__
(2). _ _, _,
_
(3). _ _, _
(4). _, _ __

- 18, 263 35, 29


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

() ,
_ <_,
_, __>. 2 [3]
[: = {_, _,
__} _,
: ,
. ,
.]

(2):

(2). _ _, _,
_

(5). _, _, __ _,
_, _, _,
__

, (3):

(3). _ _, _

(6). _, _, __ _,
_, _, __

, (1):

(1). _, _, __ _,
__

(7). _, _, __ _,
__, _, _,
__

, (7) :

(8). _, _, __ _,
_
2
()
:
) ( , Y R Y X,
: Y),
) ( , , R
, : ),
) ( , , R
, : ), ,
) ( , , R
, : ).
) ( , , R
, : Z Z).

- 18, 263 35, 30


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

, (8) (4):

(8). _, _, __ _,
_
(4). _, _ __

(9). _, _, __ __

, , (1), (5), (6) (9):

(1). _, _, __ _,
__
(5). _, _, __ _,
_, _, _,
__
(6). _, _, __ _,
_, _, __
(9). _, _, __ __

(10). _, _, __ _,
_, __, _, __,
_, _, _,
_, _, __

_
<_, _, __>.

, _
,
( )
_ :
,
. , <_, _,
__> .

, ,
,
(10).

- 18, 263 35, 31


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

() -
( <_-
, _, __>),
_ 1, 2 3 . [4]

(1NF):

(. 11
[ BD-normalization.pdf])
1NF . ,
,
1NF.

(2NF):

. (. 14
) 2NF )
, , )
.
_
<_, _, __>
(2) "_ ..." (3)
"_ ..." . , 2NF.

(3NF):

(. 15
) 3NF )
, , ) -
. _
.

- 18, 263 35, 32


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

(II) ,
_
Boyce-Codd (BCNF). [3]

_ ,
Boyce-Codd (BCNF).

, (. 18
), R Boyce-Codd (BCNF) )
) R,
, .

_
:

(1). _, _, __ _,
__
(2). _ _, _,
_
(3). _ _, _
(4). _, _ __


.
23-24 .
, : ,
.
, ( ) ,
. , ,
:

(_, _, _,
_)
(_, _, _)
(_, _, __)
(_, _, __, _,
__)

,
. ,
BCNF.
, BCNF

.

- 18, 263 35, 33


. 2610-367334, Fax 2610-367350, URL: http://www.eap.gr

You might also like