Ergasia GE3 2013 2014 Sol MYSQL

You might also like

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

..

11 (2013-2014) - (3)

1 [10]

..
( ):

drop table if exists ``;


drop table if exists ``;
drop table if exists ``;
drop table if exists ``;
drop table if exists ``;
drop table if exists ``;
drop table if exists `_`;
drop table if exists ``;
drop table if exists ``;

/* {} */
CREATE TABLE ``
(`` int NOT NULL,
`` VARCHAR(60) NOT NULL,
`` VARCHAR(100) NOT NULL,
`` VARCHAR(15) NOT NULL,
EMAIL VARCHAR(50),
UNIQUE (EMAIL),
PRIMARY KEY(``)) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_general_ci;

/* {_} */
CREATE TABLE `_`
(`` VARCHAR(10) NOT NULL,
`` VARCHAR(80) NOT NULL,
UNIQUE(``),
PRIMARY KEY (``)) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_general_ci;

/* {} */
CREATE TABLE ``
(`` VARCHAR(10) NOT NULL,
`` VARCHAR(6) NOT NULL,
`` VARCHAR(30) NOT NULL,
`` VARCHAR(30) NOT NULL,
PRIMARY KEY (``)) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_general_ci;

/* {} */
CREATE TABLE ``
(`` int NOT NULL,
`` DATETIME NOT NULL,
`` DECIMAL(7,2) NOT NULL,
`` int NOT NULL,
`` VARCHAR(10) NOT NULL,
FOREIGN KEY (``) REFERENCES `` (``),
FOREIGN KEY (``) REFERENCES `_` (``),
PRIMARY KEY (``)) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_general_ci;

/* {} */
CREATE TABLE ``
(`` VARCHAR(10) NOT NULL,
`` DECIMAL(7,2) NOT NULL,

- 18, 263 35, 1


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

`` VARCHAR(200),
`` int NOT NULL,
`` int NOT NULL,
`` DATE,
`` VARCHAR(10) ,
FOREIGN KEY (``) REFERENCES `` (``),
FOREIGN KEY (``) REFERENCES `` (``),
FOREIGN KEY (``) REFERENCES `` (``),
PRIMARY KEY (``)) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_general_ci;

/* {} */
CREATE TABLE ``
(`` VARCHAR(10) NOT NULL,
`` DATETIME NOT NULL,
`` int NOT NULL,
FOREIGN KEY (``) REFERENCES `` (``),
PRIMARY KEY (``, ``)) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_general_ci;

/* {} */
CREATE TABLE ``
(`` VARCHAR(10) NOT NULL,
`` DECIMAL(7,2) NOT NULL,
FOREIGN KEY (``) REFERENCES `` (``),
PRIMARY KEY (``)) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_general_ci;

/* {} */
CREATE TABLE ``
(`` VARCHAR(10) NOT NULL,
`` int NOT NULL,
`` int NOT NULL,
FOREIGN KEY (``) REFERENCES `` (``),
PRIMARY KEY (``)) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_general_ci;

/* {} */

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, STR_TO_DATE ('11/10/2012 14:00','%d/%m/%Y %H:%i'), 132.50, 11, '001');
INSERT INTO `` VALUES (2, STR_TO_DATE ('11/10/2012 14:20', '%d/%m/%Y %H:%i'), 44, 22, '002');
INSERT INTO `` VALUES (3, STR_TO_DATE ('11/10/2012 14:30','%d/%m/%Y %H:%i'), 60, 44, '003');
INSERT INTO `` VALUES (4, STR_TO_DATE ('12/10/2012 08:00','%d/%m/%Y %H:%i'), 100, 44, '002');
INSERT INTO `` VALUES (5, STR_TO_DATE ('12/10/2012 02:00','%d/%m/%Y %H:%i'), 12, 55, '002');
INSERT INTO `` VALUES (6, STR_TO_DATE ('13/10/2012 22:00','%d/%m/%Y %H:%i'), 45, 66, '002');
INSERT INTO `` VALUES (7, STR_TO_DATE ('14/10/2012 14:00','%d/%m/%Y %H:%i'), 200, 77, '002');
INSERT INTO `` VALUES (8, STR_TO_DATE ('15/10/2012 14:00','%d/%m/%Y %H:%i'), 45, 333, '003');
INSERT INTO `` VALUES (9, STR_TO_DATE ('16/10/2012 14:05','%d/%m/%Y %H:%i'), 12, 99, '004');
INSERT INTO `` VALUES (10, STR_TO_DATE ('17/10/2012 01:06','%d/%m/%Y %H:%i'), 12, 111, '002');
INSERT INTO `` VALUES (11, STR_TO_DATE ('17/10/2012 14:05','%d/%m/%Y %H:%i'), 45, 22, '001');
INSERT INTO `` VALUES (12, STR_TO_DATE ('17/10/2012 14:00','%d/%m/%Y %H:%i'), 45, 333, '002');
INSERT INTO `` VALUES (13, STR_TO_DATE ('17/10/2012 11:05','%d/%m/%Y %H:%i'), 200, 44, '003');
INSERT INTO `` VALUES (14, STR_TO_DATE ('18/10/2012 11:00','%d/%m/%Y %H:%i'), 45, 555, '004');

/* {} */

INSERT INTO `` VALUES ('001', 0.5, ' 15:00', 1, 111, STR_TO_DATE('12/10/2012','%d/%m/%Y'), '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, STR_TO_DATE('12/10/2012','%d/%m/%Y'), 'G397');
INSERT INTO `` VALUES ('007', 6, null, 4, 111, STR_TO_DATE('13/10/2012','%d/%m/%Y'), 'G31012');
INSERT INTO `` VALUES ('008', 0.1, null, 5, 111, STR_TO_DATE('12/10/2012','%d/%m/%Y'), 'G397');
INSERT INTO `` VALUES ('009', 1, null, 6, 9999, STR_TO_DATE('14/10/2012','%d/%m/%Y'), '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, STR_TO_DATE('16/10/2012','%d/%m/%Y'), 'G396');
INSERT INTO `` VALUES ('013', 0.1, null, 8, 6666, STR_TO_DATE('16/10/2012','%d/%m/%Y'), 'G396');
INSERT INTO `` VALUES ('014', 0.1, null, 8, 6666, STR_TO_DATE('16/10/2012','%d/%m/%Y'), 'G396');
INSERT INTO `` VALUES ('015', 0.1, null, 8, 6666, STR_TO_DATE('16/10/2012','%d/%m/%Y'), 'G396');
INSERT INTO `` VALUES ('016', 0.1, null, 9, 222222, STR_TO_DATE('17/10/2012','%d/%m/%Y'), 'F3301');

- 18, 263 35, 3


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

INSERT INTO `` VALUES ('017', 0.1, null, 10, 55, STR_TO_DATE('18/10/2012','%d/%m/%Y'), 'G398');
INSERT INTO `` VALUES ('018',1, null, 11, 77777, STR_TO_DATE('18/10/2012','%d/%m/%Y'), 'C698');
INSERT INTO `` VALUES ('019',1, null, 12, 8888, STR_TO_DATE('18/10/2012','%d/%m/%Y'), 'G396');
INSERT INTO `` VALUES ('020', 20, null,13, 77777, STR_TO_DATE('17/10/2012','%d/%m/%Y'), 'G397');
INSERT INTO `` VALUES ('021', 40, null, 14, 222222, STR_TO_DATE('18/10/2012','%d/%m/%Y'), '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', STR_TO_DATE('12/10/2012 20:00', '%d/%m/%Y %H:%i'),1);


INSERT INTO `` VALUES ('002', STR_TO_DATE('12/10/2012 21:00', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('003', STR_TO_DATE('11/10/2012 22:00', '%d/%m/%Y %H:%i'), 0);
INSERT INTO `` VALUES ('003', STR_TO_DATE('12/10/2012 18:30', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('004', STR_TO_DATE('11/10/2012 17:30', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('005', STR_TO_DATE('12/10/2012 08:30', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('006', STR_TO_DATE('12/10/2012 13:00', '%d/%m/%Y %H:%i'), 0);
INSERT INTO `` VALUES ('006', STR_TO_DATE('14/10/2012 16:00', '%d/%m/%Y %H:%i'), 0);
INSERT INTO `` VALUES ('006', STR_TO_DATE('15/10/2012 16:00', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('007', STR_TO_DATE('13/10/2012 20:00', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('008', STR_TO_DATE('12/10/2012 23:00', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('009', STR_TO_DATE('14/10/2012 18:00', '%d/%m/%Y %H:%i' ), 1);
INSERT INTO `` VALUES ('012', STR_TO_DATE('16/10/2012 20:30', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('013', STR_TO_DATE('16/10/2012 20:45', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('014', STR_TO_DATE('16/10/2012 17:32', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('015', STR_TO_DATE('16/10/2012 18:30', '%d/%m/%Y %H:%i' ), 0);
INSERT INTO `` VALUES ('015', STR_TO_DATE('17/10/2012 14:30', '%d/%m/%Y %H:%i'), 0);
INSERT INTO `` VALUES ('016', STR_TO_DATE('17/10/2012 23:00', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('017', STR_TO_DATE('18/10/2012 12:30', '%d/%m/%Y %H:%i' ), 1);
INSERT INTO `` VALUES ('018', STR_TO_DATE('18/10/2012 09:00', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('019', STR_TO_DATE('18/10/2012 10:24', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('020', STR_TO_DATE('17/10/2012 20:21', '%d/%m/%Y %H:%i'), 1);
INSERT INTO `` VALUES ('021', STR_TO_DATE('18/10/2012 20:20', '%d/%m/%Y %H:%i'), 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 .

SELECT DISTINCT ``.``


FROM ``, ``, ``, ``
WHERE ``.``=``.``
AND ``.``=``.``
AND ``.``=``.``
AND ``.`` > 0.2;



..

II. ( ) e-mail,
Internet.

SELECT DISTINCT ``.``, ``.``


FROM ``, ``, `_`
WHERE ``.``=``.``
AND `_`.``=``.``
AND ``.`EMAIL` IS NULL AND `_`.``='Internet';


44 ..

III. 50 15
2012.
SELECT COUNT(DISTINCT ``.``) AS ` `
FROM ``, ``
WHERE ``.``=``.``
AND ``.`` >= STR_TO_DATE ('01/10/2012', '%d/%m/%Y')
AND ``.`` <= STR_TO_DATE ('15/10/2012', '%d/%m/%Y')
AND ``.`` > 50;

IV. .
( ,
).

SELECT COUNT(``.``) AS `_`


FROM ``, ``
WHERE ``.``=``.``
AND ``.`` LIKE '%';

- 18, 263 35, 5


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

_
6

V. .

SELECT AVG(``.``) AS ` `
FROM ``, ``
WHERE ``.``=``.``;


11.600000

VI. ()
() ().

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

: (.. LIKE)
( ) .

H
436.50

VII. 8
(: SQL).

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, 6


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

VIII. ( )
.

SELECT ``, `` FROM ``


WHERE `` IN (SELECT DISTINCT `` FROM ``)
AND `` IN (SELECT DISTINCT `` FROM ``);


55
111

: INTERSECT,
(. Oracle
), MySQL.
( ) ,
.. IN (. ), EXISTS, (JOIN).

IX. ( )
( ) .

SELECT DISTINCT ``.``


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


8
14

X.
( ) .

SELECT ``.``,
TIMEDIFF(``.``,``.``) AS ` `
FROM `` INNER JOIN ``
ON ``.``=``.``
INNER JOIN `` ON ``.``=``.``
WHERE ``.``=1
AND TIMEDIFF(``.``,``.``) =
(SELECT MAX(TIMEDIFF(``.``,``.``))
FROM `` INNER JOIN ``
ON ``.``=``.``
INNER JOIN `` ON ``.``=``.``
WHERE ``.``=1);

- 18, 263 35, 7


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


4 80:00:00.000000

1:
. . Oracle,
( ),
,
.

2: ( MAX())
ALL ( ... >=ALL (SELECT ... ),
Oracle).

3: , Oracle (

: DATE2-DATE1), MySQL (
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html)
. ,
TIMEDIFF(), /. ,
MySQL 4,
( Oracle ).
, ,
24.
, (
) Oracle.

XI. ( )
( ).

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


FROM ``, `_`
WHERE ``.``=`_`.``
GROUP BY `_`.``;

_
001 2
002 7
003 3
004 2

:
. . Oracle,
( )
(_ = 0) .

- 18, 263 35, 8


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

XII. ( ), ,
() .

SELECT ``.`` AS ``,


SUM(``.``) AS ``
FROM ``, ``
WHERE ``.``=``.``
GROUP BY ``.``
HAVING COUNT(``.``) > 1;


.. 360.00
90.00
89.00

XIII. ( ) (
).

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


FROM `` INNER JOIN ``
ON ``.``=``.``
GROUP BY ``.``
HAVING COUNT(``.``) >= ALL
(SELECT COUNT(``.``)
FROM `` INNER JOIN ``
ON ``.``=``.``
GROUP BY ``.``);

_
8 4
14 4

: ( , ..
MAX(COUNT()) Oracle) MySQL.
MAX
FROM, .. ...= (SELECT MAX(k) FROM (SELECT COUNT(...) AS k ... ) AS T).

XIV. ( , , ) ,
/ .
.

SELECT ``.``, ``.``, ``.``,


COUNT(``.``) AS `_`
FROM `` LEFT OUTER JOIN ``
ON ``.``=``.``
WHERE ``.``=''
GROUP BY ``.``, ``.``, ``.``;

- 18, 263 35, 9


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

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

XV. ( , )
( ). [

].

SELECT ``.``, ``.``, COUNT(*)


FROM ``
GROUP BY ``.``, ``.``
HAVING COUNT(*) >= ALL (SELECT COUNT(*) FROM ``
GROUP BY ``.``, ``.``);

COUNT(*)
4
4

1: ( ,
)
/ ( ) ,

. . Oracle .
2: 2.XIII ,
MAX ( COUNT)
( FROM ).

- 18, 263 35, 10


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

3 [15]

I.

< , , >

.
. [3]

CREATE OR REPLACE VIEW `_` AS


SELECT SUM(``) `_`
FROM ``;

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


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

__
002 Internet 45.91
003 SMS 30.58
001 17.79
004 5.71

:
. . Oracle,
( )
(__ = 0) .

II. < , ,
> .
. [4]

[ -
-
.]

CREATE OR REPLACE VIEW `__` AS


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

CREATE OR REPLACE VIEW `__` AS


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

- 18, 263 35, 11


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

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

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

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

[ -

- .]

CREATE OR REPLACE VIEW `_` AS


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

CREATE OR REPLACE VIEW `_` AS


SELECT SUM(``*``)*(2/100) `__`
FROM `` ``, `` ``
WHERE ``.`` = ``.`` AND `` IS NOT NULL;

SELECT `__`, `__`


FROM `_`, `_`;

__ __

38.000000 49.0000

- 18, 263 35, 12


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

IV. SQL
, SQL

, (
) . [4]

CREATE OR REPLACE VIEW `_` AS


SELECT `__`, `__`
FROM `_`, `_`;

CREATE OR REPLACE VIEW `_` AS


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

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


`. `
FROM `_`;

606.500000

- 18, 263 35, 13


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

4 [30]

I.
. [3]

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

O I, II II
, .

II.
( ) . [3]

UPDATE ``
SET `` =
(SELECT DATE_ADD(``, INTERVAL 1 DAY) FROM ``
WHERE ``.`` = ``.``)
WHERE `` IS NULL;

O I, II II
, .

: .
2., ( Oracle
: DATE+1),
( MySQL -
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html) MySQL
DATE_ADD(), 2
INTERVAL 1 DAY.
, ( )
Oracle.

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

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

- 18, 263 35, 14


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

1: MySQL default '||' OR
'concatenation operator' ( ANSI standard).
mode server (.. root/administrator : SET global
sql_mode = 'PIPES_AS_CONCAT' - URL:
http://dev.mysql.com/doc/refman/5.5/en/sql-mode.html#sql-mode-combo). (
'||') CONCAT(), . URL:
http://dev.mysql.com/doc/refman/5.5/en/string-functions.html, .

2: || (
CONCAT()) .

, :


001 500.00 15:00 1 111 2012-10-12 G397
002 5.00 1 3333 2012-10-12 G395
003 1000.00 2 6666 2012-10-12 C700
004 100.00 15:00 3 77777 2012-10-12 G397
005 6.00 3 444444 2012-10-12 G31012
006 2.00 NULL 4 111 2012-10-12 G397
007 6.00 NULL 4 111 2012-10-13 G31012
008 100.00 NULL 5 111 2012-10-12 G397
009 1000.00 NULL 6 9999 2012-10-14 G391
010 10.00 7 8888 2012-10-15 G398
011 10.00 7 9999 2012-10-15 G398
012 100.00 NULL 8 6666 2012-10-16 G396
013 100.00 NULL 8 6666 2012-10-16 G396
014 100.00 NULL 8 6666 2012-10-16 G396
015 100.00 NULL 8 6666 2012-10-16 G396
016 100.00 NULL 9 222222 2012-10-17 F3301
017 100.00 NULL 10 55 2012-10-18 G398
018 1000.00 NULL 11 77777 2012-10-18 C698
019 1000.00 NULL 12 8888 2012-10-18 G396
020 20.00 NULL 13 77777 2012-10-17 G397
021 40.00 NULL 14 222222 2012-10-18 F3201
022 8.00 NULL 14 222222 2012-10-19 L456
023 9.00 NULL 14 222222 2012-10-19 L456
024 200.00 NULL 14 222222 2012-10-19 L456

- 18, 263 35, 15


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

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

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 FROM ``
WHERE `` NOT IN (SELECT DISTINCT `` FROM ``)
AND `` NOT IN (SELECT DISTINCT `` FROM ``);

EMAIL
88 25 2310456456 ahan@gmail.com
222 . 134 2101234563 thprit@yahoo.gr
444 74 2610343456 mnikol@otenet.gr
777 3 2310304677 kpap@yahoo.gr
1010 . 39 2331030300 NULL
5555 121 2610313131 NULL

- 18, 263 35, 16


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

VI. ,
. [3]

: MySQL ( .. DELETE,
UPDATE, INSERT) SQL,
( Oracle ). MySQL
( ..
, ).
SQL
.
Oracle.
.

DELETE FROM ``
WHERE `` = 0
AND `` IN (SELECT * FROM (SELECT ``
FROM ``
WHERE `` = 1)AS TEMP_TABLE);


003 2012-10-11 22:00:00.000000 0
006 2012-10-12 13:00:00.000000 0
006 2012-10-14 16:00:00.000000 0

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

: EXISTS / NOT
EXISTS ( ).

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));

- 18, 263 35, 17


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

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


1 2012-10-11 14:00:00 132.50 11 001 0
2 2012-10-11 14:20:00 44.00 22 002 0
3 2012-10-11 14:30:00 60.00 44 003 0
4 2012-10-12 08:00:00 100.00 44 002 0
5 2012-10-12 02:00:00 12.00 55 002 0
6 2012-10-13 22:00:00 45.00 66 002 0
7 2012-10-14 14:00:00 200.00 77 002 2
8 2012-10-15 14:00:00 45.00 333 003 1
9 2012-10-16 14:05:00 12.00 99 004 0
10 2012-10-17 01:06:00 12.00 111 002 0
11 2012-10-17 14:05:00 45.00 22 001 0
12 2012-10-17 14:00:00 45.00 333 002 0
13 2012-10-17 11:05:00 200.00 44 003 0
14 2012-10-18 11:00:00 45.00 555 004 3

VIII.
(
,
) .
. [5]

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


ALTER TABLE `` ADD `` INTEGER;
ALTER TABLE `` ADD `` INTEGER;
ALTER TABLE `` ADD `` DECIMAL(7,2);

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

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

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

- 18, 263 35, 18


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

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

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

ALTER TABLE ``
MODIFY `` VARCHAR(14) NOT NULL;

DROP TABLE ``;


DROP TABLE ``;

8 (
/ ,,):


001 500.00 1 111 20 30 NULL
002 5.00 1 3333 NULL NULL 0.30
003 1000.00 2 6666 10 10 NULL
004 100.00 3 77777 20 10 NULL
005 6.00 3 444444 NULL NULL 0.20
006 2.00 4 111 NULL NULL 0.03
007 6.00 4 111 NULL NULL 0.03
008 100.00 5 111 20 10 NULL
009 1000.00 6 9999 10 20 NULL
010 10.00 7 8888 NULL NULL 0.20
011 10.00 7 9999 NULL NULL 0.20
012 100.00 8 6666 20 5 NULL
013 100.00 8 6666 20 15 NULL
014 100.00 8 6666 10 10 NULL
015 100.00 8 6666 5 20 NULL
016 100.00 9 222222 20 20 NULL
017 100.00 10 55 10 20 NULL
018 1000.00 11 77777 20 10 NULL
019 1000.00 12 8888 10 5 NULL
020 20.00 13 77777 NULL NULL 0.30
021 40.00 14 222222 NULL NULL 0.40
022 8.00 14 222222 NULL NULL 0.10
023 9.00 14 222222 NULL NULL 0.20
024 200.00 14 222222 10 5 NULL

- 18, 263 35, 19


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

5 [10] - .. ( )

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

, ,
:

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

_
(
) .

, , _ :

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

- 18, 263 35, 20


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

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

(2):

(2). _ _, _,
_

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

, (3):

(3). _ _, _

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

, (1):

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

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

, (7) :

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

- 18, 263 35, 21


. 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, 22


. 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, 23


. 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, 24


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

You might also like