Professional Documents
Culture Documents
Ergasia GE3 2013 2014 Sol MYSQL
Ergasia GE3 2013 2014 Sol MYSQL
Ergasia GE3 2013 2014 Sol MYSQL
11 (2013-2014) - (3)
1 [10]
..
( ):
/* {} */
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,
/* {} */
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 (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');
/* {} */
/* {} */
/* {} */
2 [45] SQL
I. ( )
3
0.2m .
..
II. ( ) e-mail,
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. .
( ,
).
_
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).
_8 _
0
4
VIII. ( )
.
55
111
: INTERSECT,
(. Oracle
), MySQL.
( ) ,
.. IN (. ), EXISTS, (JOIN).
IX. ( )
( ) .
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);
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. ( )
( ).
_
001 2
002 7
003 3
004 2
:
. . Oracle,
( )
(_ = 0) .
XII. ( ), ,
() .
.. 360.00
90.00
89.00
XIII. ( ) (
).
_
8 4
14 4
: ( , ..
MAX(COUNT()) Oracle) MySQL.
MAX
FROM, .. ...= (SELECT MAX(k) FROM (SELECT COUNT(...) AS k ... ) AS T).
XIV. ( , , ) ,
/ .
.
_
C701 0
C702 0
F3201 1
G3101 0
G31012 1
G3777 0
G390 0
G392 0
G395 0
G397 4
L456 0
XV. ( , )
( ). [
].
COUNT(*)
4
4
1: ( ,
)
/ ( ) ,
. . Oracle .
2: 2.XIII ,
MAX ( COUNT)
( FROM ).
3 [15]
I.
< , , >
.
. [3]
__
002 Internet 45.91
003 SMS 30.58
001 17.79
004 5.71
:
. . Oracle,
( )
(__ = 0) .
II. < , ,
> .
. [4]
[ -
-
.]
_ _
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]
[ -
- .]
__ __
38.000000 49.0000
IV. SQL
, SQL
, (
) . [4]
606.500000
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;
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
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
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 ( ).
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));
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]
UPDATE ``
SET `` = ''
WHERE `` IN (SELECT `` FROM ``);
UPDATE ``
SET `` = ''
WHERE `` IN (SELECT `` FROM ``);
UPDATE ``
SET `` = (SELECT `` FROM ``
WHERE ``.`` = ``.``);
UPDATE ``
SET `` = (SELECT `` FROM ``
WHERE ``.`` = ``.``);
ALTER TABLE ``
MODIFY `` VARCHAR(14) NOT NULL;
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
5 [10] - .. ( )
(*)
11 ()
( BD-normalization.pdf).
, ,
:
_(_, _, _,
_, _, _,
_, _, __,
__, __)
_
(
) .
, , _ :
(1). _, _, __ _,
__
(2). _ _, _,
_
(3). _ _, _
(4). _, _ __
() ,
_ <_,
_, __>. 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).
, (8) (4):
(8). _, _, __ _,
_
(4). _, _ __
(9). _, _, __ __
(1). _, _, __ _,
__
(5). _, _, __ _,
_, _, _,
__
(6). _, _, __ _,
_, _, __
(9). _, _, __ __
(10). _, _, __ _,
_, __, _, __,
_, _, _,
_, _, __
_
<_, _, __>.
, _
,
( )
_ :
,
. , <_, _,
__> .
, ,
,
(10).
() -
( <_-
, _, __>),
_ 1, 2 3 . [4]
(1NF):
(. 11
[ BD-normalization.pdf])
1NF . ,
,
1NF.
(2NF):
. (. 14
) 2NF )
, , )
.
_
<_, _, __>
(2) "_ ..." (3)
"_ ..." . , 2NF.
(3NF):
(. 15
) 3NF )
, , ) -
. _
.
(II) ,
_
Boyce-Codd (BCNF). [3]
_ ,
Boyce-Codd (BCNF).
, (. 18
), R Boyce-Codd (BCNF) )
) R,
, .
_
:
(1). _, _, __ _,
__
(2). _ _, _,
_
(3). _ _, _
(4). _, _ __
.
23-24 .
, : ,
.
, ( ) ,
. , ,
:
(_, _, _,
_)
(_, _, _)
(_, _, __)
(_, _, __, _,
__)
,
. ,
BCNF.
, BCNF
.