DB1-Evangelidis-Pres13
-
Upload
aslanidis-angelos -
Category
Documents
-
view
212 -
download
0
description
Transcript of 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 )
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. Διάταξη
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;
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_'
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
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:
ο αριθμός των ημερών από την πρόσληψη του εργαζομένου
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
Μια τιμή εν φαρμόζεταιΜια τιμή είναι γνωστή αλλά τη δεδομένη στιγμή Αγνοείται η Δεν ΠαρέχεταιΜια τιμή είναι Άγνωστη
Αν μια στήλη επιτρέπει κενά,τεκμηριώστε τι αντιπροσωπεύουν τα ΚΕΝΑ!
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);
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