DB1-Evangelidis-Pres13

9
1 SQL 1 SQL 1 SQL 1 SQL 1 Πίνακες, Ερωτήματα, Αλληλουχία Βασικού Αιτήματος, Ονοματοδοσία Στηλών, ΙΝ, ΙΝ έναντι OR, LIKE, 1 Συναρτήσεις, Συναρτήσεις χωρίς Παραμέτρους, NULL σε Πίνακες, KENA, KEΝΑ σε συνθήκες, Δημιουργία Πίνακα & Εισαγωγή Δεδομένων, Πρωτεύον Κλειδί Πίνακας Πίνακας Emps Emps empno ename job hiredate sal comm ----- ------ --------- --------- ---- ---- Πρωτεύον Κλειδί 7369 SMITH CLERK 17-DEC-80 800 7499 ALLEN SALESMAN 20-FEB-81 1600 300 7521 WARD SALESMAN 22-FEB-81 1250 500 7566 JONES DEPTMGR 02-APR-81 2975 7654 MARTIN SALESMAN 28-SEP-81 1250 1400 7698 BLAKE DEPTMGR 01-MAY-81 2850 7782 CLARK DEPTMGR 09-JUN-81 2450 7788 SCOTT ANALYST 19-APR-87 3000 2 7839 KING PRESIDENT 17-NOV-81 5000 7844 TURNER SALESMAN 08-SEP-81 1500 0 7876 ADAMS CLERK 23-MAY-87 1100 7900 JAMES CLERK 03-DEC-81 950 7902 FORD ANALYST 03-DEC-81 3000 7934 MILLER CLERK 23-JAN-82 1300 Emps( empno , ename, job, hiredate, sal, comm )

description

Βάσεις δεδομένων

Transcript of DB1-Evangelidis-Pres13

Page 1: DB1-Evangelidis-Pres13

1

SQL 1SQL 1SQL 1SQL 1

Πίνακες, Ερωτήματα, Αλληλουχία Βασικού Αιτήματος, Ονοματοδοσία Στηλών, ΙΝ, ΙΝ έναντι OR, LIKE,

1

μ η , , , ,Συναρτήσεις, Συναρτήσεις χωρίς Παραμέτρους, NULL σε Πίνακες, KENA, KEΝΑ σε συνθήκες, Δημιουργία Πίνακα

& Εισαγωγή Δεδομένων, Πρωτεύον Κλειδί

Πίνακας Πίνακας EmpsEmpsempno ename job hiredate sal comm----- ------ --------- --------- ---- ----

Πρωτεύον Κλειδί

7369 SMITH CLERK 17-DEC-80 8007499 ALLEN SALESMAN 20-FEB-81 1600 3007521 WARD SALESMAN 22-FEB-81 1250 5007566 JONES DEPTMGR 02-APR-81 29757654 MARTIN SALESMAN 28-SEP-81 1250 14007698 BLAKE DEPTMGR 01-MAY-81 28507782 CLARK DEPTMGR 09-JUN-81 24507788 SCOTT ANALYST 19-APR-87 3000

2

7839 KING PRESIDENT 17-NOV-81 50007844 TURNER SALESMAN 08-SEP-81 1500 07876 ADAMS CLERK 23-MAY-87 11007900 JAMES CLERK 03-DEC-81 9507902 FORD ANALYST 03-DEC-81 30007934 MILLER CLERK 23-JAN-82 1300

Emps( empno, ename, job, hiredate, sal, comm )

Page 2: DB1-Evangelidis-Pres13

2

Ερωτήματα Ερωτήματα -- QueriesQueries

SELECT ename ENAMESELECT ename FROM EmpsWHERE empno = 7499

SELECT empnoFROM EmpsWHERE ename = 'ALLEN'

ENAME------ALLEN

EMPNO-----7499

Παρατηρήστε τη συμμετρία των αποτελεσμάτων

3

WHERE ename = ALLEN

SELECT empno, ename FROM EmpsWHERE sal > 2975 ORDER BY ename

EMPNO ENAME----- ------7902 FORD7839 KING7788 SCOTTΑποτέλεσμα

ΕρωτήματοςΕρώτημα

Αλληλουχία Βασικού Αλληλουχία Βασικού ΑιτήματοςΑιτήματος

SELECT empno, ename

FROM Emps

2. Προβολή

1. Συνθήκη

4

WHERE sal > 2000

ORDER BY ename 2. Διάταξη

Page 3: DB1-Evangelidis-Pres13

3

Ονοματίζοντας τις Στήλες των Ονοματίζοντας τις Στήλες των Αποτελεσμάτων ενός ΑιτήματοςΑποτελεσμάτων ενός Αιτήματος

SELECT SELECT empno AS "Employee Number", ename AS Name

FROM Emps WHERE sal > 2000 ORDER BY ename

Χρησιμοποιήστε διπλά εισαγωγικά για ονόματα ή

με ενσωματωμένες παρενθέσεις

5

Employee Number NAME--------------- --------

7698 BLAKE7782 CLARK7902 FORD7566 JONES7839 KING7788 SCOTT

ININ

SELECT empno, enameFROM EmpsWHERE job IN ('CLERK', 'SALESMAN', 'ANALYST')

6

Ποια θα ήταν η ισοδύναμη έκφραση SQL αν δε γινόταν

χρήση του IN;

Page 4: DB1-Evangelidis-Pres13

4

IN IN έναντιέναντι ORORSELECT empno enameSELECT empno, enameFROM EmpsWHERE job IN ('CLERK', 'SALESMAN', 'ANALYST')

SELECT

7

SELECT empno, enameFROM EmpsWHERE job = 'CLERK'

OR job = 'SALESMAN'OR job = 'ANALYST'

LIKELIKE

SELECT empno, enameFROM EmpsWHERE job LIKE 'C%'

Ποιο το αποτέλεσμα?

8

SELECT empno, enameFROM EmpsWHERE ename LIKE 'SMIT_'

Page 5: DB1-Evangelidis-Pres13

5

Απάντηση Απάντηση LIKELIKE

SELECT SELECT empno, enameFROM EmpsWHERE job LIKE 'C%'

SELECT empno, ename

το αποτέλεσμα ξεκινά με C

9

p ,FROM EmpsWHERE ename LIKE 'SMIT_'

το αποτέλεσμα έχει 5 χαρακτήρες και ξεκινά με

SMIT

ΥπολογισμοίΥπολογισμοί

SELECT empno, sal, 52*salFROM Emps

SELECT empno, sal,52* l AS l

10

52*sal AS yrsalFROM Emps

Page 6: DB1-Evangelidis-Pres13

6

ΣυναρτήσειςΣυναρτήσεις

SELECT empno, sal, sqrt(sal)FROM Emps

SELECT empno, sal,t( l) AS t l

11

sqrt(sal) AS sqrtsalFROM Emps

Συναρτήσεις χωρίς Συναρτήσεις χωρίς ΠαραμέτρουςΠαραμέτρους

SELECT empno,sysdate – hiredate AS daysHired

FROM Empssysdate: συνάρτηση χωρίς παραμέτρους που επιστρέφει

την τρέχουσα ημερομηνία (και ώρα)hiredate: η ημερομηνία πρόσληψης του εργαζομένου

12

hiredate: η ημερομηνία πρόσληψης του εργαζομένουsysdate – hiredate:

ο αριθμός των ημερών από την πρόσληψη του εργαζομένου

Page 7: DB1-Evangelidis-Pres13

7

NULL NULL σε Πίνακεςσε ΠίνακεςEmps

empno ename deptno sal comm

Emps

7499 ALLEN 30 1600 300

7654 MARTIN 30 1250 1400

7698 BLAKE 30 2850

7839 KING 10 5000

7844 TURNER 30 1500 0

τιμή

NULL

13

int varchar int decimal decimal

Τύποι Δεδομένων

Κάθε κελί σε μια στήλη έχει μια μοναδική τιμή του τύπου δεδομένων που καθορίζεται για τη στήλη αυτή

7986 STERN 50 1300

ΚΕΝΑ (ΚΕΝΑ (NULLsNULLs))Τα ΚΕΝΑ διαφέρουν από άλλες τιμές δεδομένωνΤα ΚΕΝΑ διαφέρουν από άλλες τιμές δεδομένων

Το ΚΕΝΟ δεν είναι όμοιο με το 0Το ΚΕΝΟ δεν είναι το όμοιο με ένα άδειο αλφαριθμητικό

Το ΚΕΝΟ τυπικά χρησιμοποιείται στις ακόλουθες περιπτώσεις

Μια τιμή Δεν Εφαρμόζεται

14

Μια τιμή εν φαρμόζεταιΜια τιμή είναι γνωστή αλλά τη δεδομένη στιγμή Αγνοείται η Δεν ΠαρέχεταιΜια τιμή είναι Άγνωστη

Αν μια στήλη επιτρέπει κενά,τεκμηριώστε τι αντιπροσωπεύουν τα ΚΕΝΑ!

Page 8: DB1-Evangelidis-Pres13

8

Κενά σε ΣυνθήκεςΚενά σε ΣυνθήκεςSELECT * FROM Emps

WHERE

empno ename dept sal comm

7499 ALLEN 30 1600 300

7654 MARTIN 30 1250 1400

7698 BLAKE 30 2850

7839 KING 10 5000

Emps

WHERE …

0

comm != 0

comm IS NOT NULL

15

7844 TURNER 30 1500 0

7986 STERN 50 1300

comm = 0

comm IS NULLΜε ποιο τρόπο λαμβάνουμε όλους τους εργαζομένους εκτός όσων οπωσδήποτε έχουν ποσοστά (comm);

ΑπάντησηΑπάντηση: : Κενά σε Κενά σε ΣυνθήκεςΣυνθήκες

Emps comm IS NOT NULL

empno ename dept sal comm

7499 ALLEN 30 1600 300

7654 MARTIN 30 1250 1400

7698 BLAKE 30 2850

7839 KING 10 5000

7844 TURNER 30 1500 0

7986 STERN 50 1300

Emps

comm = 0

comm != 0

16

SELECT * FROM EmpsWHERE (comm = 0)

OR (comm IS NULL)

comm IS NULLΜε ποιο τρόπο λαμβάνουμε όλους τους εργαζομένους εκτός όσων οπωσδήποτε έχουν ποσοστά (comm);

Page 9: DB1-Evangelidis-Pres13

9

Δημιουργία Πίνακα & Εισαγωγή Δημιουργία Πίνακα & Εισαγωγή ΔεδομένωνΔεδομένων

CREATE TABLE Emps ( Προεπιλεγμένος p (empno int primary key,ename varchar(30),deptno number(3),sal number(7,2) DEFAULT 700,comm number(7,2)

)

INSERT INTO Emps

Προεπιλεγμένος μισθός έναρξης

Προεπιλεγμένη τιμή το

ΚΕΝΟ (NULL)

17

pVALUES( 7499, 'ALLEN', 30 , 1600, 300 )

INSERT INTO Emps( empno, deptno, ename )VALUES( 8614, 30, 'LUPIN' )INSERT INTO EmpsVALUES( 8614, 'LUPIN', 30, 700, NULL )

όμοιο αποτέλεσμα

Πρωτεύον ΚλειδίΠρωτεύον Κλειδί

Π ύ λ δί ό ίΠρωτεύον κλειδί ενός πίνακαΜια στήλη σε έναν πίνακα

ή στήλες (μερικές φορές χρειάζονται περισσότερες από μια στήλες)

που επιλέχθηκε από το σχεδιαστή της βάσης δεδομένων, η οποία προσδιορίζει μοναδικά μια εγγραφή

Απαιτήσεις

18

Απαιτήσεις• Όλες οι τιμές της στήλης πρέπει να είναι μοναδικές• Καμία από τις τιμές αυτές δε μπορεί να είναι NULL

ΠαράδειγμαΗ στήλη empno είναι το πρωτεύον κλειδί του πίνακα Emps