Εισαγωγή στις Βάσεις
Δεδομένων με Access
Μαθήματα Βάσεων Δεδομένων
699 3072 078
Βασικά Σημεία Access
• Η Access είναι ένα Σύστημα Διαχείρισης Βάσεων Δεδομένων (DBMS)
σχεδιασμένο από την Microsoft
• Γενικά η Access ασχολείτε με:
▫ Πίνακες (Tables)
▫ Σχέσεις Πινάκων (Relationship)
▫ Ερωτήματα σε Access (Queries)
▫ Φόρμες (Forms)
▫ Εκθέσεις (Reports)
▫ Εισαγωγή και Εξαγωγή Δεδομένων (Import/Export)
AccessΝτ Μιχάλης
2
Ερωτήματα
AccessΝτ Μιχάλης
3
Ερωτήματα (Queries)
• Τα ερωτήματα είναι αντικείμενα που συλλέγουν (προβάλλουν + αλλάζουν)
εγγραφές από έναν ή περισσότερους πίνακες σε μια βάση που ταιριάζουν
στα κριτήρια του ερωτήματος
• Τα ερωτήματα προβάλλονται σε ένα φύλλο δεδομένων και αποθηκεύονται
σαν αντικείμενα στην βάση
• Χρησιμοποιούνται για την προβολή συγκεκριμένων εγγραφών από έναν
πίνακα (one-table query) ή από περισσότερους πίνακες (multi-table
query)
AccessΝτ Μιχάλης
4
Δημιουργία Ερωτημάτων
• Υπάρχουν οι εξής τρόποι με τους οποίους μπορούμε να δημιουργήσουμε
ένα ερώτημα:
▫ Οδηγός Ερωτήματος (Query Wizard)
μας παρέχει βήμα προς βήμα την δημιουργία ερωτήματος
▫ Σχεδίαση Ερωτήματος (Query Design)
σχεδιάζουμε εμείς τα ερωτήματα
• Υπάρχουν οι εξής τύποι ερωτημάτων στην Access:
1. Ερωτήματα Επιλογής
2. Ερωτήματα Ενέργειας
3. Ερωτήματα Διασταύρωσης
4. SQL Ερωτήματα
• Παρακάτω αναλύονται οι τύποι ερωτημάτων
• ΣΗΜΕΙΩΣΗ: Το όνομα του ερωτήματος δεν μπορεί να είναι το ίδιο με
ένα όνομα πίνακα
AccessΝτ Μιχάλης
5
1) Ερωτήματα Επιλογής(Select Queries)
• Είναι τα ερωτήματα που εξάγουμε και προβάλλουμε δεδομένα
• Τα δεδομένα που θα εμφανιστούν συμμορφώνονται σε συγκεκριμένα
κριτήρια
• Τα αποτελέσματα των κριτηρίων μπορούν να επεξεργαστούν
• Η επεξεργασία των αποτελεσμάτων εξαρτάται από το ίδιο το ερώτημα
• Είναι ο πιο κοινός τύπος ερωτημάτων
• Παρακάτω αναλύουμε πως δημιουργούμε / σχεδιάζουμε ένα ερώτημα
AccessΝτ Μιχάλης
6
Προβολή Σχεδίασης Ερωτήματος
(Design View Query)
• Αφού επιλέξουμε τους πίνακες από στο πάνω μέρος στην συνεχεια
ορίζουμε πεδία και κριτήρια στο κάτω μέρος:
i. Πεδίο (field)
εδώ τοποθετούμε το πεδίο που θα χρησιμοποιήσουμε
ii. Πίνακας (table)
βάζουμε το όνομα του πίνακα από όπου θα πάρουμε το πεδίο. Αυτή η
επιλογή είναι χρήσιμη όταν χρησιμοποιούμε διάφορους πίνακες
iii. Ταξινόμηση (sort)
σε φθίνουσα ή αύξουσα σειρά
iv. Εμφάνιση (show)
εάν δεν είναι μαρκαρισμένη τότε το συγκεκριμένο πεδίο(στήλη) δεν θα
εμφανίζεται
v. Κριτήρια (criteria)
οι τιμές του πεδίου πρέπει να συμφωνούν με αυτήν την επιλογή (συνθήκη)
ώστε να εμφανιστούν στο αποτέλεσμα
vi. ή (or)
χρησιμοποιούμε αυτήν την επιλογή για να εισάγουμε πολλαπλά κριτήρια
AccessΝτ Μιχάλης
7
Πεδίο (Field)
• Αν θέλουμε να βάλουμε όλα τα πεδία ενός πίνακα τότε βάζουμε το *
▫ αυτό μας επιτρέπει την αυτόματη προσθήκη και διαγραφή σε αντίστοιχη
εισαγωγή και διαγραφή πεδίου στον πίνακα
▫ για παράδειγμα students.*
• Αν θέλουμε να αλλάξουμε το όνομα στο πεδίο τότε γράφουμε:
newName: fieldName
• Μπορούμε αντί για πεδίο να βάλουμε μια έκφραση όπως:
▫ DATE()
επιστρέφει την τρέχουσα ημερομηνία
▫ NOW()
επιστρέφει την ημερομηνία και την ώρα
▫ YEAR(datevalue)
επιστρέφει το έτος από το datevalue
▫ MONTH(date)
επιστρέφει το μήνα από το datevalue
▫ CDATE(literalvalue)
μετατρέπει το literalvalue σε τιμή ημερομηνίας
AccessΝτ Μιχάλης
8
Συνθήκες Ερωτημάτων - Criteria(1)
ΤΕΛΕΣΤΗΣ EXAMPLE ΠΕΡΙΓΡΑΦΗ
= ='ΜΝ' Ίσο
<> <>'ΜΝ' Διάφορο
< <10 Μικρότερο από
<= <=10 Μικρότερο ή ίσο
> >10 Μεγαλύτερο
>= <=10 Μεγαλύτερο ή ίσο
BETWEEN Between 1/1/99 and 1/12/99 Ανάμεσα σε τιμές
IN In (10,15,20) Μια από αυτές τις τιμές
LIKE Like 's*' Οποιαδήποτε λέξη αρχίζει από ..
NOT NOT 'MN' Οτιδήποτε εκτός ..
IS NULL IS NULL Βρίσκει τις εγγραφές που τα πεδία
τους είναι κενά
IS NOT NULL IS NOT NULL Βρίσκει τις εγγραφές που τα πεδία
τους δεν είναι κενά
AccessΝτ Μιχάλης
9
Συνθήκες Ερωτημάτων - Criteria (2)
• Between
▫ expr between value1 and value2
εξετάζει αν η τιμή της expr (έκφρασης) είναι μεταξύ των τιμών value1 και
value2
▫ συνήθως η expr είναι το όνομα του πεδίου.
• In
▫ expr in (value1,value2, value3,..)
εξετάζει αν η τιμή της έκφρασης είναι μια από τις τιμές τις παρένθεσης.
• Null
▫ expr is Null
επιστρέφει μια τιμή TRUE/FALSE, την χρησιμοποιούμε όταν θέλουμε να
βρούμε τις κενές τιμές μιας στήλης.
AccessΝτ Μιχάλης
10
Συνθήκες Ερωτημάτων - Criteria (3)
• Like
▫ expr like 'pattern'
χρησιμοποιούμε όταν θέλουμε να βάλουμε μπαλαντέρ χαρακτήρες
• Η λίστα παραμέτρων αποτελείται από ψηφία και χαρακτήρες
• Για παράδειγμα:
▫ [agvr]* τα ονόματα που ξεκινούν από a,g,r,v
▫ [abcde] ή [a-e] εύρος χαρακτήρων από a έως e [a-e]
AccessΝτ Μιχάλης
11
Πρότυπο(pattern) Σημασία
? Μονός χαρακτήρας
* Μηδέν, ένας ή περισσότεροι χαρακτήρες
# Μονά ψηφία [0-9]
[λίστα παραμέτρων] Οποιοσδήποτε χαρακτήρας μέσα στην λίστα
[!λίστα παραμέτρων] Οποιοσδήποτε χαρακτήρας εκτός λίστας
Παραδείγματα Like
ΕΙΔΟΣ ΠΑΡΑΔΕΙΓΜΑ TRUE FALSE
Πολλοί χαρακτήρες Like "a*a" aa, aBa, aBBBa aBC
Like "*ab*" abc, AABB, Xab aZb, bac
Like "ab*" abcdefg, abc cab, aab
Ειδικοί χαρακτήρες Like "a[*]a" a*a aaa
Ένας χαρακτήρας Like "a?a" aaa, a3a, aBa aBBBa
Ένα ψηφία Like "a#a" a0a, a1a, a2a aaa, a10a
Εύρος χαρακτήρων Like "[a-z]" f, p, j 2, &
Εκτός εύρους χαρακτήρων Like "[!a-z]" 9, &, % b, a
Όχι αριθμός Like "[!0-9]" A, a, &, ~ 0, 1, 9
Συνδυασμός Like "a[!b-m]#" An9, az0, a99 abc, aj0
AccessΝτ Μιχάλης
12
Πολλαπλά Ερωτήματα(Multiple queries)
• Ένα πολλαπλό ερώτημα είναι ένα ερώτημα που λαμβάνει δεδομένα από
πολλούς πίνακες, για αυτό θα πρέπει να συνενώσουμε (join) 2 πίνακες (ή
παραπάνω) ώστε να μπορέσουμε να τρέξουμε ένα πολλαπλό ερώτημα
• Υπάρχουν 2 τρόποι “join” πινάκων
1. με την χρήση ενός κοινού πεδίου (όπως στις σχέσεις)
μπορούμε να ενώσουμε 2 πίνακες σε κοινά πεδία, οι γραμμές των πινάκων
ενώνονται αυτόματα στις κοινές τιμές
2. με εξωτερική σύνδεση (χωρίς κοινό πεδίο)
σε αυτήν την περίπτωση με διπλό κλικ πάνω στην "σύνδεση" βλέπουμε 3
επιλογές:
 εσωτερική συνένωση (internal join)
είναι το ίδιο με την παραπάνω επιλογή
 αριστερή συνέσωση (left join)
περιλαμβάνει όλες τις εγγραφές από τον αριστερό πίνακα και αυτές που ταιριάζουν
από τον δεξιό
 δεξιά συνένωση (right join)
περιλαμβάνει όλες τις εγγραφές από τον αριστερό πίνακα και αυτές που ταιριάζουν
από τον δεξιό
AccessΝτ Μιχάλης
13
Παράδειγμα Πολλαπλού Ερωτήματος
• Για παράδειγμα στην βάση Multiple.accdb σχεδιάζουμε ένα νέο query με
όνομα "LoanPerCustomers" με τα πεδία "customer_fname",
"customer_lname" και "loan_amount" από τους πίνακες "Customers"και
"Loans"
• Πριν το εκτελέσουμε συνενώνουμε τους δύο πίνακες στα πεδία
"customer_id" και "customer_id_fk"
• Με την εκτέλεση του έχουμε ένα ερώτημα JOIN με την χρήση ενός κοινού
πεδίου
• Αν πατήσουμε διπλό κλικ πάνω στην γραμμή της ένωσης μποροούμε να
επιλέξουμε τα δύο εξωτερικά JOIN
AccessΝτ Μιχάλης
14
Self Join
• Μπορούμε να εκτελέσουμε ένα query χρησιμοποιώντας έναν πίνακα δύο
φορές
• Οι πίνακες θα μετονομασθούν καταλλήλως (πχ "tableName_1") ώστε να
μπορούμε να του ξεχωρίσουμε
• Για παράδειγμα έστω ότι έχουμε την βάση "SelfJoin.accdb" και τον πίνακα
"Employees"
• Κάθε ένας υπάλληλος έχει και έναν manager, το ID του οποίου είναι στο
πεδίο "Manager_ID"
• Δημιουργούμε ένα νέο ερώτημα και βάζουμε δύο φορές τον πίνακα
"Employees"
• Στην συνέχεια ενώνουμε τους δύο πίνακες στα πεδία "ID" και
"Manager_ID"
• Τέλος εμφανίζουμε όλα τα πεδία από τους δύο πίνακες στα πεδία του
ερώτηματος
AccessΝτ Μιχάλης
15
Ερωτήματα Αθροίσματος (Summary Queries)
• Στην Access μπορούμε να ορίσουμε ειδικά ερωτήματα για τον υπολογισμό
των συνόλων των εγγραφών ενός πίνακα (ή και άλλων πινάκων)
• Με αυτό τον τρόπο μπορούμε να ομαδοποιήσουμε, να προσθέσουμε κτλ
τις εγγραφές
AccessΝτ Μιχάλης
16
Συναρτήσεις Αθροίσματος
• Έχουμε τις εξής διαθέσιμες συναρτήσεις
▫ Group By: ομαδοποιεί τις εγγραφές
▫ Sum: υπολογιζει το άθροισμα των τιμών οι οποίες πρέπει να είναι συμβατού
τύπου δεδομένων
▫ Avg: υπολογίζει το μέσο όρο
▫ StDev: (Standard Deviation) υπολογίζει την τυπική απόκλιση
▫ Var: (Variance) υπολογίζει την διακύμανση (το τετράγωνο της StDev)
▫ Min: υπολογίζει το έλαχιστο από κείμενο, αριθμό ή ημερομηνία
▫ Max: υπολογίζει το έλαχιστο από κείμενο, αριθμό ή ημερομηνία
▫ Count: υπολογίζει το πλήθος των τιμών μιας στήλης, δεν μετράει τα null αλλά
μετράει τα διπλότυπα
▫ First: μας φέρνει την πρώτη εισαχθείσα εγγραφή
▫ Last: μας φέρνει την τελευταία εισαχθείσα εγγραφή
▫ Expression: μας επιτρέπει να βάλουμε μια έκφρασή αντί για όνομα πεδίου
στο πεδίο
▫ Where: μας επιτρέπει να βάλουμε κριτήρια πριν "τρέξουν" οι υπολογισμοί του
ερωτήματος
AccessΝτ Μιχάλης
17
Παράδειγμα Αθροίσματος
• Έστω ότι έχουμε τον πίνακα "Sales2014" στην βάση "Summary.accdb"
• Δημιουργούμε ένα ερώτημα με όνομα "Statistics Per Area"με το οποίο θα
πάρουμε:
▫ τις τελικές πωλήσεις ανά περιοχή (στήλη "total sales per area")
▫ τις ελάχιστες πωλήσεις ανά περιοχή (στήλη "Min sales")
▫ τις μέγιστες πωλήσεις ανά περιοχή (στήλη "Max Sales")
▫ τον αριθμό των πωλήσεων ανά περιοχή
• Δημιουργούμε ένα ερώτημα με όνομα "Statistics Per Office"με το οποίο θα
πάρουμε:
▫ τις τελικές πωλήσεις ανά γραφείο (στήλη "total sales per office")
▫ τον μέσο όρο ανά κατάστημα (στήλη "Average per office")
• Για να το κάνουμε αυτό θα πρέπει να εμφανίσουμε την γραμμή "Σύνολο"
(Totals), στην οποία βλέπουμε τις συναρτήσεις αθροίσματος
AccessΝτ Μιχάλης
18
2) Ερωτήματα Ενέργειας (Action Queries)
• Είναι τα ερωτήματα που μας επιτρέπουν με μόνο μια λειτουργία να
κάνουμε αλλαγές σε πολλές εγγραφές (γραμμές) στον πίνακα
• Με αυτά τα ερωτήματα μπορούμε να
▫ δημιουργήσουμε νέο πίνακα που θα συμπεριλάβουν εγγραφές από άλλο
πίνακα
▫ αλλάξουμε αποθηκευμένα δεδομένα
▫ να εισάγουμε εγγραφές
▫ διαγράψουμε τις υπάρχουσες
• Μερικές ενέργειες τους είναι η
a) δημιουργία πίνακα από τον υπάρχοντα (make-table queries)
b) ενημέρωση (update queries)
c) εισαγωγή δεδομένων (append queries)
d) διαγραφή (delete queries)
AccessΝτ Μιχάλης
19
a) Make table queries
• Δημιουργεί έναν νέο πίνακα με εγγραφές από έναν η περισσότερους
πίνακες.
• Υπάρχουν 3 είδη αυτών των ερωτημάτων:
i. Working tables
το δημιουργούμε για ένα συγκεκριμένο ερώτημα που παίρνει πολύ ώρα να
εκτελεσθεί και το χρησιμοποιούμε συχνά
ii. Export tables
το χρησιμοποιούμε πχ για να στείλουμε ένα αντίγραφο του πίνακά μας
iii. History table
ένα είδος back up
• Για να δημιουργήσουμε ένα τέτοιο πίνακα μεταβαίνουμε στην "Προβολή
Σχεδίασης" του ερωτήματος
• Σχεδιάσουμε κανονικά το ερώτημα και πριν πατήσουμε την εκτέλεση
επιλέγουμε την επιλογή "Δημιουργία πίνακα" (Make Table)
AccessΝτ Μιχάλης
20
Παράδειγμα Make table query
• Για παράδειγμα στην βάση Actions.accdb σχεδιάζουμε ένα νέο query με
όνομα "MakeTableCity" στον πίνακα "Customers" με όλους όσους έχουν
σαν πόλη (City) την "Raleigh"
• Το αποτέλεσμα του query θα το αποθηκεύουμε σε έναν νέο πίνακα με
όνομα "CustomersInRaleigh" στην ίδια βάση
• Όταν εκτελέσουμε το query και κάθε φορά που εκτελούμε το query τότε
θα δημιουργηθεί ή θα ανανεωθεί ο πίνακας "CustomersInRaleigh"
αντίστοιχα
AccessΝτ Μιχάλης
21
b) Update Queries
• Μας επιτρέπει την τροποποίηση των ήδη αποθηκευμένων δεδομένων σε
έναν πίνακα
• Με μια λειτουργία μπορούμε να αλλάξουμε ταυτόχρονα όλες τις εγγραφές
ή μόνο αυτές που είναι σύμφωνες με μία συνθήκη
• Η δημιουργία ενός "Ερωτήματος Ανανέωσης" γίνεται με παρόμοιο τρόπο
με το "Make Table Query" με την μόνη διαφορά ότι σε κάθε εκτέλεση
γίνεται ενημέρωση στο αντίστοιχο πεδίο
• Στην "Προβολή Σχεδίασης" εμφανίζεται στην θέση της "Ταξινόμησης"
(Sort) και της "Εμφάνισης" το πεδίο "Ενημέρωση" στο οποίο βάζουμε την
νέα τιμή
AccessΝτ Μιχάλης
22
Παράδειγμα Update Query
• Για παράδειγμα στην βάση Actions.accdb σχεδιάζουμε ένα νέο query με
όνομα "UpdateCity" στον πίνακα "Customers" ώστε να αλλάξουμε σε
"Greensboro" όλους όσους έχουν σαν πόλη (City) την "Durham"
• Αφού μεταβούμε στην "Σχεδίαση Πινάκων" επιλέγουμε τον πίνακα
"Customers" και επιλέγουμε "Update"
• Στην γραμμή "Update To" γράφουμε "Greensboro" και στην γραμμή
"Κριτήρια" (Criteria) το "Durham"
AccessΝτ Μιχάλης
23
c) Append Queries
• Είναι τα ερωτήματα που εισάγουμε ολόκληρες γραμμές σε έναν πίνακα
• Μπορούμε να εισάγουμε μία εγγραφή ή πολλές ταυτόχρονα περνώντας
,συνήθως, τα δεδομένα από άλλο πίνακα
• Συμπέρασμα: αυτού του είδους τα ερωτήματα έχουν μια πηγή (τον πίνακα
ή τους πίνακες που παίρνει τα δεδομένα) και έναν προορισμό (τον πίνακα
που εισάγει τα δεδομένα)
• Ο μηχανισμός και η διαδικασία που ακολουθείται μοιάζει πάρα πολύ με
αυτόν του Make-table
• Στην προβολή σχεδίαση του ερωτήματος επιλέγουμε τους πίνακες που θα
πάρουμε τα δεδομένα και πατώντας το "Append" εισάγουμε το όνομα του
νέου ή υπαρχοντα πίνακα που θα γεμίσει
• Στην συνέχεια επιλέγουμε στα αντίστοιχα πεδία σε ποια πεδία θα τα
εισάγω
AccessΝτ Μιχάλης
24
Παράδειγμα Append Query
• Για παράδειγμα στην βάση Actions.accdb σχεδιάζουμε ένα νέο query με
όνομα "PutVipCust" στο οποίο θα βάλουμε όλους τους πελάτες από τον
πίνακα "Customers", οι οποίοι έχουν ΤΚ (Zip Code) το 27609, στον πίνακα
"Vip_Customers"
• Κάνουμε την ίδια διαδικασία με τα προηγούμενα Actions και αφού
επιλέξουμε "Append" ορίζουμε σε ποιον πίνακα θα προσθεσουμε
εγγραφές
• Στην συνέχει προσθέτουμε όλα τα πέδία του πίνακα "Customers" και στην
σειρά "Append To" τα αντίστοιχα πεδία του πίνακα "Vip_Customers"
• Με την ολοκλήρωση της δημιουργίας εκτελούμε το query
AccessΝτ Μιχάλης
25
d) Delete Queries
• Είναι τα ερωτήματα που διαγράφουν εγγραφές από έναν πίνακα
• Μπορούμε στον σχεδιαασμό ενός query να χρησιμοποιήσουμε πολλούς
πίνακες, αλλά η διαγραφή θα γίνει από έναν
• Τους υπόλοιπους πίνακες τους χρειαζόμαστε για τα κριτήρια που θα
βάλουμε
• Στην "Σχεδίαση Ερωτήματος" αφού επιλέξουμε "Delete" θα μας
εμφανιστεί μία γραμμή "Delete" η οποία έχει δύο επιλογές:
▫ From
υποδηλώνει ότι θέλουμε να σβήσουμε τις εγγραφές από αυτόν τον πίνακα
αυτής της στήλης
▫ Where
υποδήλώνει τα κριτήρια που θα βάλουμε στις στήλες των πινάκων
AccessΝτ Μιχάλης
26
Παράδειγμα Delete Query
• Για παράδειγμα στην βάση Actions.accdb σχεδιάζουμε ένα νέο query με
όνομα "DeleteByZip" το οποίο θα διαγράφει από τον πίνακα "Customers"
τις εγγραφές με ΤΚ το "27513"
• Ακολουθούμε παρόμοια διαδικασία και επιλέγουμε στο πρώτο πεδίο:
▫ "Customers.*" και στο αντίστοιχο Delete το "From"
▫ "Zip Code" και στο αντίστοιχο Delete το "Where" και στο κριτήρια (Criteria) το
=" 27513"
• Όταν το εκτελέσουμε και κάθε φορά που το εκτελούμε θα διαγράφονται
οι εγγραφές από τον πίνακα Customers που πληρούν τα κριτήρια
AccessΝτ Μιχάλης
27
3) Ερωτήματα Διασταύρωσης
(Crosstab Queries)
• Χρησιμοποιούμε αυτόν τον τύπο για να υπολογίσουμε και να
αναδιαρθρώσουμε τα δεδομένα μας για καλύτερη ανάλυση
• Τα ερωτήματα διασταύρωσης υπολογίζουν ένα άθροισμα , μέσο όρο,
πλήθος ή άλλο τύπο συνόλου για δεδομένα που είναι ομαδοποιημένα
κατά 2 τύπους ο ένας κατά μήκος της αριστερής πλευράς και ο άλλος
οριζόντια στην κορυφή (πάνω μέρος )
• Για να δημιουργήσουμε ένα ερώτημα διαστάυρωσης υπάρχουν δύο
τρόποι:
▫ μέσω του crosstab query wizard
▫ από την σχεδίαση ερωτήματος
AccessΝτ Μιχάλης
28
Παράδειγμα Ερωτήματα Διασταύρωσης
• Ανοίξτε το αρχείο Crosstab.accdb και τον πίνακα Sales_2014, στον οποίο
φαίνονται οι πωλήσεις τους διάφορες μήνες
• Το Crosstab query θα μας βοηθήσει να ομαδοποιήσουμε τις πωλήσεις ανά
μήνα και να τις προσθέσουμε ξεχωριστά για κάθε ένα πωλητή
• Ο πίνακας Sales 2014
• Το αποτέλεσμα του query (μέσω του crosstab
query wizard):
AccessΝτ Μιχάλης
29
4) SQL Ερωτήματα (SQL Queries)
• H SQL (Structured Query Language) είναι η γλώσσα που μας βοηθά να
επικοινωνήσουμε με το Microsoft Jet (DBMS)
• Όταν δημιουργούμε ένα ερώτημα στην Σχεδίαση Ερωτήματος τότε η
Access αυτόματα δημιουργεί το αντίστοιχο σε SQL
• Μπορούμε να το δούμε αυτό επιλέγοντας 'Προβολή SQL'
• Όταν σχεδιάζουμε ένα ερώτημα πάντοτε δημιουργείτε το αντίστοιχο σε
SQL, δεν συμβαίνει όμως το αντίθετο
AccessΝτ Μιχάλης
30
Παράδειγμα SQL Ερωτήματος
• Για παράδειγμα στην βάση SQL_Queries.accdb σχεδιάζουμε
▫ ένα νέο query με όνομα "Using SQL A" το οποίο θα μας επιστρέψει όλες τις
εγγραφές από τον customers
 SELECT * FROM customers;
▫ ένα νέο query με όνομα "Using SQL B" το οποίο θα μας επιστρέψει μόνο το
"customer_fname" όλων των εγγραφών
 SELECT customer_fname FROM customers;
▫ ένα νέο query με όνομα "Using SQL C" το οποίο θα μας επιστρέψει όλες τις
εγγραφές από τον customers που έχουν "customer_ammount" μεγαλύτερο από
5000
 SELECT * FROM customers WHERE customer_amount > 5000;
▫ ένα νέο query με όνομα "Using SQL D" το οποίο θα μας επιστρέψει μόνο το
"customer_fname" και το "customer_lname" όλων των εγγραφών από τον
customers που έχουν "customer_ammount" μικρότερο ή ίσο από 5000 και
"customer_fname" που αρχίζει από "C"
 SELECT customer_fname, customer_lname FROM customers WHERE
customer_amount <= 5000 AND customer_fname LIKE "C*";
AccessΝτ Μιχάλης
31
Τέλος!!!
AccessΝτ Μιχάλης
32
Μαθήματα Βάσεων Δεδομένων 699 3072 078

More Related Content

PPTX
Microsoft Access Θεωρία 1/6
PPTX
ECDL Access Σημειώσεις 5/7
PPTX
ECDL Word Σημειώσεις 3/7
PPTX
ECDL Windows Σημειώσεις 2/7
PPTX
ECDL Excel Σημειώσεις 4/7
PPTX
ECDL Internet Σημειώσεις 7/7
PPT
Έγγραφα Google - Drive
PPTX
ECDL Powepoint Σημειώσεις 6/7
Microsoft Access Θεωρία 1/6
ECDL Access Σημειώσεις 5/7
ECDL Word Σημειώσεις 3/7
ECDL Windows Σημειώσεις 2/7
ECDL Excel Σημειώσεις 4/7
ECDL Internet Σημειώσεις 7/7
Έγγραφα Google - Drive
ECDL Powepoint Σημειώσεις 6/7

What's hot (20)

PPTX
Κατηγορίες λειτουργικών συστημάτων
PDF
οδηγοσ πρωτεσ βοηθειεσ στο σχολειο
PPTX
Βρίσκω το εμβαδό του παραλληλογράμμου
PPT
Αρχεία Φάκελοι
ODP
Είμαι ό,τι τρώω
PDF
Φυσική Ε΄. Ενότητα 4. Κεφάλαιο 1: ΄΄Ισορροπημένη Διατροφή΄΄
DOC
εισαγωγή στη συμμετρία (1)
PDF
Οικογένειες λέξεων -Γ
PPTX
ΔΙΑΔΙΚΑΣΙΑ ΑΞΙΟΛΟΓΗΣΗΣ ΕΚΠΑΙΔΕΥΤΙΚΩΝ.pptx
PDF
Μαθηματικά ΣΤ΄- 3η Σύντομη Επανάληψη 1ης Ενότητας κεφ. 19 - 24
PPTX
Αρχεία - Φάκελοι
PPTX
μικροδιδασκαλια α μερος_powerpoint
PPTX
ECDL Θεωρία Σημειώσεις 1/7
PPSX
Ιδέες και προτάσεις για τον σχεδιασμό προγραμμάτων Φιλαναγνωσίας
PPTX
HTML-CSS για αρχάριους :: Μάθημα 1ο
DOC
Εγχειρίδιο χρήσης των Google docs
PPT
Ενεργητική και Παθητική σύνταξη
PPTX
5ο μάθημα ΜΕΘΟΔΟΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΝΝΟΙΩΝ.pptx
DOC
Διαίρεση - Περιπτώσεις
DOC
Αξιολόγηση του εκπαιδευτικού έργου της σχολικής μονάδας : Διαδικασία αυτοαξι...
Κατηγορίες λειτουργικών συστημάτων
οδηγοσ πρωτεσ βοηθειεσ στο σχολειο
Βρίσκω το εμβαδό του παραλληλογράμμου
Αρχεία Φάκελοι
Είμαι ό,τι τρώω
Φυσική Ε΄. Ενότητα 4. Κεφάλαιο 1: ΄΄Ισορροπημένη Διατροφή΄΄
εισαγωγή στη συμμετρία (1)
Οικογένειες λέξεων -Γ
ΔΙΑΔΙΚΑΣΙΑ ΑΞΙΟΛΟΓΗΣΗΣ ΕΚΠΑΙΔΕΥΤΙΚΩΝ.pptx
Μαθηματικά ΣΤ΄- 3η Σύντομη Επανάληψη 1ης Ενότητας κεφ. 19 - 24
Αρχεία - Φάκελοι
μικροδιδασκαλια α μερος_powerpoint
ECDL Θεωρία Σημειώσεις 1/7
Ιδέες και προτάσεις για τον σχεδιασμό προγραμμάτων Φιλαναγνωσίας
HTML-CSS για αρχάριους :: Μάθημα 1ο
Εγχειρίδιο χρήσης των Google docs
Ενεργητική και Παθητική σύνταξη
5ο μάθημα ΜΕΘΟΔΟΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΝΝΟΙΩΝ.pptx
Διαίρεση - Περιπτώσεις
Αξιολόγηση του εκπαιδευτικού έργου της σχολικής μονάδας : Διαδικασία αυτοαξι...
Ad

Similar to Microsoft Access Θεωρία 3/6 (20)

PPTX
C6 3 Tables
PPT
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 8
PPT
ΛΟΓΙΣΤΙΚΑ ΦΥΛΛΑ
PPTX
γ6 1 εισαγωγή στις βάσεις δεδομένων
PPTX
γ6 10 κριτήρια ερωτημάτων-λογικοί τελεστές-μπαλαντέρ-ταξινόμηση
PDF
Βασικά του Excel
PPTX
C6 8 M1 Queries
PPTX
Παρουσίαση
PPTX
Παρουσίαση
PPTX
αναπαράσταση αλγορίθμων και δεδομένων
DOC
σημειώσεις για τη γλώσσα προγραμματισμού Logo
PDF
Παιγνίδια με Πίνακες και Δείκτες
PPT
Python Κεφ. 1.6.1 Πίνακες
PPTX
C 6 1&amp;2 introduction to data bases
PDF
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
PPT
PDF
03 - SQL (μέρος 1)
PDF
Το SPSS (Statistical Package for the Social Sciences)
C6 3 Tables
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 8
ΛΟΓΙΣΤΙΚΑ ΦΥΛΛΑ
γ6 1 εισαγωγή στις βάσεις δεδομένων
γ6 10 κριτήρια ερωτημάτων-λογικοί τελεστές-μπαλαντέρ-ταξινόμηση
Βασικά του Excel
C6 8 M1 Queries
Παρουσίαση
Παρουσίαση
αναπαράσταση αλγορίθμων και δεδομένων
σημειώσεις για τη γλώσσα προγραμματισμού Logo
Παιγνίδια με Πίνακες και Δείκτες
Python Κεφ. 1.6.1 Πίνακες
C 6 1&amp;2 introduction to data bases
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
03 - SQL (μέρος 1)
Το SPSS (Statistical Package for the Social Sciences)
Ad

Microsoft Access Θεωρία 3/6

  • 1. Εισαγωγή στις Βάσεις Δεδομένων με Access Μαθήματα Βάσεων Δεδομένων 699 3072 078
  • 2. Βασικά Σημεία Access • Η Access είναι ένα Σύστημα Διαχείρισης Βάσεων Δεδομένων (DBMS) σχεδιασμένο από την Microsoft • Γενικά η Access ασχολείτε με: ▫ Πίνακες (Tables) ▫ Σχέσεις Πινάκων (Relationship) ▫ Ερωτήματα σε Access (Queries) ▫ Φόρμες (Forms) ▫ Εκθέσεις (Reports) ▫ Εισαγωγή και Εξαγωγή Δεδομένων (Import/Export) AccessΝτ Μιχάλης 2
  • 4. Ερωτήματα (Queries) • Τα ερωτήματα είναι αντικείμενα που συλλέγουν (προβάλλουν + αλλάζουν) εγγραφές από έναν ή περισσότερους πίνακες σε μια βάση που ταιριάζουν στα κριτήρια του ερωτήματος • Τα ερωτήματα προβάλλονται σε ένα φύλλο δεδομένων και αποθηκεύονται σαν αντικείμενα στην βάση • Χρησιμοποιούνται για την προβολή συγκεκριμένων εγγραφών από έναν πίνακα (one-table query) ή από περισσότερους πίνακες (multi-table query) AccessΝτ Μιχάλης 4
  • 5. Δημιουργία Ερωτημάτων • Υπάρχουν οι εξής τρόποι με τους οποίους μπορούμε να δημιουργήσουμε ένα ερώτημα: ▫ Οδηγός Ερωτήματος (Query Wizard) μας παρέχει βήμα προς βήμα την δημιουργία ερωτήματος ▫ Σχεδίαση Ερωτήματος (Query Design) σχεδιάζουμε εμείς τα ερωτήματα • Υπάρχουν οι εξής τύποι ερωτημάτων στην Access: 1. Ερωτήματα Επιλογής 2. Ερωτήματα Ενέργειας 3. Ερωτήματα Διασταύρωσης 4. SQL Ερωτήματα • Παρακάτω αναλύονται οι τύποι ερωτημάτων • ΣΗΜΕΙΩΣΗ: Το όνομα του ερωτήματος δεν μπορεί να είναι το ίδιο με ένα όνομα πίνακα AccessΝτ Μιχάλης 5
  • 6. 1) Ερωτήματα Επιλογής(Select Queries) • Είναι τα ερωτήματα που εξάγουμε και προβάλλουμε δεδομένα • Τα δεδομένα που θα εμφανιστούν συμμορφώνονται σε συγκεκριμένα κριτήρια • Τα αποτελέσματα των κριτηρίων μπορούν να επεξεργαστούν • Η επεξεργασία των αποτελεσμάτων εξαρτάται από το ίδιο το ερώτημα • Είναι ο πιο κοινός τύπος ερωτημάτων • Παρακάτω αναλύουμε πως δημιουργούμε / σχεδιάζουμε ένα ερώτημα AccessΝτ Μιχάλης 6
  • 7. Προβολή Σχεδίασης Ερωτήματος (Design View Query) • Αφού επιλέξουμε τους πίνακες από στο πάνω μέρος στην συνεχεια ορίζουμε πεδία και κριτήρια στο κάτω μέρος: i. Πεδίο (field) εδώ τοποθετούμε το πεδίο που θα χρησιμοποιήσουμε ii. Πίνακας (table) βάζουμε το όνομα του πίνακα από όπου θα πάρουμε το πεδίο. Αυτή η επιλογή είναι χρήσιμη όταν χρησιμοποιούμε διάφορους πίνακες iii. Ταξινόμηση (sort) σε φθίνουσα ή αύξουσα σειρά iv. Εμφάνιση (show) εάν δεν είναι μαρκαρισμένη τότε το συγκεκριμένο πεδίο(στήλη) δεν θα εμφανίζεται v. Κριτήρια (criteria) οι τιμές του πεδίου πρέπει να συμφωνούν με αυτήν την επιλογή (συνθήκη) ώστε να εμφανιστούν στο αποτέλεσμα vi. ή (or) χρησιμοποιούμε αυτήν την επιλογή για να εισάγουμε πολλαπλά κριτήρια AccessΝτ Μιχάλης 7
  • 8. Πεδίο (Field) • Αν θέλουμε να βάλουμε όλα τα πεδία ενός πίνακα τότε βάζουμε το * ▫ αυτό μας επιτρέπει την αυτόματη προσθήκη και διαγραφή σε αντίστοιχη εισαγωγή και διαγραφή πεδίου στον πίνακα ▫ για παράδειγμα students.* • Αν θέλουμε να αλλάξουμε το όνομα στο πεδίο τότε γράφουμε: newName: fieldName • Μπορούμε αντί για πεδίο να βάλουμε μια έκφραση όπως: ▫ DATE() επιστρέφει την τρέχουσα ημερομηνία ▫ NOW() επιστρέφει την ημερομηνία και την ώρα ▫ YEAR(datevalue) επιστρέφει το έτος από το datevalue ▫ MONTH(date) επιστρέφει το μήνα από το datevalue ▫ CDATE(literalvalue) μετατρέπει το literalvalue σε τιμή ημερομηνίας AccessΝτ Μιχάλης 8
  • 9. Συνθήκες Ερωτημάτων - Criteria(1) ΤΕΛΕΣΤΗΣ EXAMPLE ΠΕΡΙΓΡΑΦΗ = ='ΜΝ' Ίσο <> <>'ΜΝ' Διάφορο < <10 Μικρότερο από <= <=10 Μικρότερο ή ίσο > >10 Μεγαλύτερο >= <=10 Μεγαλύτερο ή ίσο BETWEEN Between 1/1/99 and 1/12/99 Ανάμεσα σε τιμές IN In (10,15,20) Μια από αυτές τις τιμές LIKE Like 's*' Οποιαδήποτε λέξη αρχίζει από .. NOT NOT 'MN' Οτιδήποτε εκτός .. IS NULL IS NULL Βρίσκει τις εγγραφές που τα πεδία τους είναι κενά IS NOT NULL IS NOT NULL Βρίσκει τις εγγραφές που τα πεδία τους δεν είναι κενά AccessΝτ Μιχάλης 9
  • 10. Συνθήκες Ερωτημάτων - Criteria (2) • Between ▫ expr between value1 and value2 εξετάζει αν η τιμή της expr (έκφρασης) είναι μεταξύ των τιμών value1 και value2 ▫ συνήθως η expr είναι το όνομα του πεδίου. • In ▫ expr in (value1,value2, value3,..) εξετάζει αν η τιμή της έκφρασης είναι μια από τις τιμές τις παρένθεσης. • Null ▫ expr is Null επιστρέφει μια τιμή TRUE/FALSE, την χρησιμοποιούμε όταν θέλουμε να βρούμε τις κενές τιμές μιας στήλης. AccessΝτ Μιχάλης 10
  • 11. Συνθήκες Ερωτημάτων - Criteria (3) • Like ▫ expr like 'pattern' χρησιμοποιούμε όταν θέλουμε να βάλουμε μπαλαντέρ χαρακτήρες • Η λίστα παραμέτρων αποτελείται από ψηφία και χαρακτήρες • Για παράδειγμα: ▫ [agvr]* τα ονόματα που ξεκινούν από a,g,r,v ▫ [abcde] ή [a-e] εύρος χαρακτήρων από a έως e [a-e] AccessΝτ Μιχάλης 11 Πρότυπο(pattern) Σημασία ? Μονός χαρακτήρας * Μηδέν, ένας ή περισσότεροι χαρακτήρες # Μονά ψηφία [0-9] [λίστα παραμέτρων] Οποιοσδήποτε χαρακτήρας μέσα στην λίστα [!λίστα παραμέτρων] Οποιοσδήποτε χαρακτήρας εκτός λίστας
  • 12. Παραδείγματα Like ΕΙΔΟΣ ΠΑΡΑΔΕΙΓΜΑ TRUE FALSE Πολλοί χαρακτήρες Like "a*a" aa, aBa, aBBBa aBC Like "*ab*" abc, AABB, Xab aZb, bac Like "ab*" abcdefg, abc cab, aab Ειδικοί χαρακτήρες Like "a[*]a" a*a aaa Ένας χαρακτήρας Like "a?a" aaa, a3a, aBa aBBBa Ένα ψηφία Like "a#a" a0a, a1a, a2a aaa, a10a Εύρος χαρακτήρων Like "[a-z]" f, p, j 2, & Εκτός εύρους χαρακτήρων Like "[!a-z]" 9, &, % b, a Όχι αριθμός Like "[!0-9]" A, a, &, ~ 0, 1, 9 Συνδυασμός Like "a[!b-m]#" An9, az0, a99 abc, aj0 AccessΝτ Μιχάλης 12
  • 13. Πολλαπλά Ερωτήματα(Multiple queries) • Ένα πολλαπλό ερώτημα είναι ένα ερώτημα που λαμβάνει δεδομένα από πολλούς πίνακες, για αυτό θα πρέπει να συνενώσουμε (join) 2 πίνακες (ή παραπάνω) ώστε να μπορέσουμε να τρέξουμε ένα πολλαπλό ερώτημα • Υπάρχουν 2 τρόποι “join” πινάκων 1. με την χρήση ενός κοινού πεδίου (όπως στις σχέσεις) μπορούμε να ενώσουμε 2 πίνακες σε κοινά πεδία, οι γραμμές των πινάκων ενώνονται αυτόματα στις κοινές τιμές 2. με εξωτερική σύνδεση (χωρίς κοινό πεδίο) σε αυτήν την περίπτωση με διπλό κλικ πάνω στην "σύνδεση" βλέπουμε 3 επιλογές:  εσωτερική συνένωση (internal join) είναι το ίδιο με την παραπάνω επιλογή  αριστερή συνέσωση (left join) περιλαμβάνει όλες τις εγγραφές από τον αριστερό πίνακα και αυτές που ταιριάζουν από τον δεξιό  δεξιά συνένωση (right join) περιλαμβάνει όλες τις εγγραφές από τον αριστερό πίνακα και αυτές που ταιριάζουν από τον δεξιό AccessΝτ Μιχάλης 13
  • 14. Παράδειγμα Πολλαπλού Ερωτήματος • Για παράδειγμα στην βάση Multiple.accdb σχεδιάζουμε ένα νέο query με όνομα "LoanPerCustomers" με τα πεδία "customer_fname", "customer_lname" και "loan_amount" από τους πίνακες "Customers"και "Loans" • Πριν το εκτελέσουμε συνενώνουμε τους δύο πίνακες στα πεδία "customer_id" και "customer_id_fk" • Με την εκτέλεση του έχουμε ένα ερώτημα JOIN με την χρήση ενός κοινού πεδίου • Αν πατήσουμε διπλό κλικ πάνω στην γραμμή της ένωσης μποροούμε να επιλέξουμε τα δύο εξωτερικά JOIN AccessΝτ Μιχάλης 14
  • 15. Self Join • Μπορούμε να εκτελέσουμε ένα query χρησιμοποιώντας έναν πίνακα δύο φορές • Οι πίνακες θα μετονομασθούν καταλλήλως (πχ "tableName_1") ώστε να μπορούμε να του ξεχωρίσουμε • Για παράδειγμα έστω ότι έχουμε την βάση "SelfJoin.accdb" και τον πίνακα "Employees" • Κάθε ένας υπάλληλος έχει και έναν manager, το ID του οποίου είναι στο πεδίο "Manager_ID" • Δημιουργούμε ένα νέο ερώτημα και βάζουμε δύο φορές τον πίνακα "Employees" • Στην συνέχεια ενώνουμε τους δύο πίνακες στα πεδία "ID" και "Manager_ID" • Τέλος εμφανίζουμε όλα τα πεδία από τους δύο πίνακες στα πεδία του ερώτηματος AccessΝτ Μιχάλης 15
  • 16. Ερωτήματα Αθροίσματος (Summary Queries) • Στην Access μπορούμε να ορίσουμε ειδικά ερωτήματα για τον υπολογισμό των συνόλων των εγγραφών ενός πίνακα (ή και άλλων πινάκων) • Με αυτό τον τρόπο μπορούμε να ομαδοποιήσουμε, να προσθέσουμε κτλ τις εγγραφές AccessΝτ Μιχάλης 16
  • 17. Συναρτήσεις Αθροίσματος • Έχουμε τις εξής διαθέσιμες συναρτήσεις ▫ Group By: ομαδοποιεί τις εγγραφές ▫ Sum: υπολογιζει το άθροισμα των τιμών οι οποίες πρέπει να είναι συμβατού τύπου δεδομένων ▫ Avg: υπολογίζει το μέσο όρο ▫ StDev: (Standard Deviation) υπολογίζει την τυπική απόκλιση ▫ Var: (Variance) υπολογίζει την διακύμανση (το τετράγωνο της StDev) ▫ Min: υπολογίζει το έλαχιστο από κείμενο, αριθμό ή ημερομηνία ▫ Max: υπολογίζει το έλαχιστο από κείμενο, αριθμό ή ημερομηνία ▫ Count: υπολογίζει το πλήθος των τιμών μιας στήλης, δεν μετράει τα null αλλά μετράει τα διπλότυπα ▫ First: μας φέρνει την πρώτη εισαχθείσα εγγραφή ▫ Last: μας φέρνει την τελευταία εισαχθείσα εγγραφή ▫ Expression: μας επιτρέπει να βάλουμε μια έκφρασή αντί για όνομα πεδίου στο πεδίο ▫ Where: μας επιτρέπει να βάλουμε κριτήρια πριν "τρέξουν" οι υπολογισμοί του ερωτήματος AccessΝτ Μιχάλης 17
  • 18. Παράδειγμα Αθροίσματος • Έστω ότι έχουμε τον πίνακα "Sales2014" στην βάση "Summary.accdb" • Δημιουργούμε ένα ερώτημα με όνομα "Statistics Per Area"με το οποίο θα πάρουμε: ▫ τις τελικές πωλήσεις ανά περιοχή (στήλη "total sales per area") ▫ τις ελάχιστες πωλήσεις ανά περιοχή (στήλη "Min sales") ▫ τις μέγιστες πωλήσεις ανά περιοχή (στήλη "Max Sales") ▫ τον αριθμό των πωλήσεων ανά περιοχή • Δημιουργούμε ένα ερώτημα με όνομα "Statistics Per Office"με το οποίο θα πάρουμε: ▫ τις τελικές πωλήσεις ανά γραφείο (στήλη "total sales per office") ▫ τον μέσο όρο ανά κατάστημα (στήλη "Average per office") • Για να το κάνουμε αυτό θα πρέπει να εμφανίσουμε την γραμμή "Σύνολο" (Totals), στην οποία βλέπουμε τις συναρτήσεις αθροίσματος AccessΝτ Μιχάλης 18
  • 19. 2) Ερωτήματα Ενέργειας (Action Queries) • Είναι τα ερωτήματα που μας επιτρέπουν με μόνο μια λειτουργία να κάνουμε αλλαγές σε πολλές εγγραφές (γραμμές) στον πίνακα • Με αυτά τα ερωτήματα μπορούμε να ▫ δημιουργήσουμε νέο πίνακα που θα συμπεριλάβουν εγγραφές από άλλο πίνακα ▫ αλλάξουμε αποθηκευμένα δεδομένα ▫ να εισάγουμε εγγραφές ▫ διαγράψουμε τις υπάρχουσες • Μερικές ενέργειες τους είναι η a) δημιουργία πίνακα από τον υπάρχοντα (make-table queries) b) ενημέρωση (update queries) c) εισαγωγή δεδομένων (append queries) d) διαγραφή (delete queries) AccessΝτ Μιχάλης 19
  • 20. a) Make table queries • Δημιουργεί έναν νέο πίνακα με εγγραφές από έναν η περισσότερους πίνακες. • Υπάρχουν 3 είδη αυτών των ερωτημάτων: i. Working tables το δημιουργούμε για ένα συγκεκριμένο ερώτημα που παίρνει πολύ ώρα να εκτελεσθεί και το χρησιμοποιούμε συχνά ii. Export tables το χρησιμοποιούμε πχ για να στείλουμε ένα αντίγραφο του πίνακά μας iii. History table ένα είδος back up • Για να δημιουργήσουμε ένα τέτοιο πίνακα μεταβαίνουμε στην "Προβολή Σχεδίασης" του ερωτήματος • Σχεδιάσουμε κανονικά το ερώτημα και πριν πατήσουμε την εκτέλεση επιλέγουμε την επιλογή "Δημιουργία πίνακα" (Make Table) AccessΝτ Μιχάλης 20
  • 21. Παράδειγμα Make table query • Για παράδειγμα στην βάση Actions.accdb σχεδιάζουμε ένα νέο query με όνομα "MakeTableCity" στον πίνακα "Customers" με όλους όσους έχουν σαν πόλη (City) την "Raleigh" • Το αποτέλεσμα του query θα το αποθηκεύουμε σε έναν νέο πίνακα με όνομα "CustomersInRaleigh" στην ίδια βάση • Όταν εκτελέσουμε το query και κάθε φορά που εκτελούμε το query τότε θα δημιουργηθεί ή θα ανανεωθεί ο πίνακας "CustomersInRaleigh" αντίστοιχα AccessΝτ Μιχάλης 21
  • 22. b) Update Queries • Μας επιτρέπει την τροποποίηση των ήδη αποθηκευμένων δεδομένων σε έναν πίνακα • Με μια λειτουργία μπορούμε να αλλάξουμε ταυτόχρονα όλες τις εγγραφές ή μόνο αυτές που είναι σύμφωνες με μία συνθήκη • Η δημιουργία ενός "Ερωτήματος Ανανέωσης" γίνεται με παρόμοιο τρόπο με το "Make Table Query" με την μόνη διαφορά ότι σε κάθε εκτέλεση γίνεται ενημέρωση στο αντίστοιχο πεδίο • Στην "Προβολή Σχεδίασης" εμφανίζεται στην θέση της "Ταξινόμησης" (Sort) και της "Εμφάνισης" το πεδίο "Ενημέρωση" στο οποίο βάζουμε την νέα τιμή AccessΝτ Μιχάλης 22
  • 23. Παράδειγμα Update Query • Για παράδειγμα στην βάση Actions.accdb σχεδιάζουμε ένα νέο query με όνομα "UpdateCity" στον πίνακα "Customers" ώστε να αλλάξουμε σε "Greensboro" όλους όσους έχουν σαν πόλη (City) την "Durham" • Αφού μεταβούμε στην "Σχεδίαση Πινάκων" επιλέγουμε τον πίνακα "Customers" και επιλέγουμε "Update" • Στην γραμμή "Update To" γράφουμε "Greensboro" και στην γραμμή "Κριτήρια" (Criteria) το "Durham" AccessΝτ Μιχάλης 23
  • 24. c) Append Queries • Είναι τα ερωτήματα που εισάγουμε ολόκληρες γραμμές σε έναν πίνακα • Μπορούμε να εισάγουμε μία εγγραφή ή πολλές ταυτόχρονα περνώντας ,συνήθως, τα δεδομένα από άλλο πίνακα • Συμπέρασμα: αυτού του είδους τα ερωτήματα έχουν μια πηγή (τον πίνακα ή τους πίνακες που παίρνει τα δεδομένα) και έναν προορισμό (τον πίνακα που εισάγει τα δεδομένα) • Ο μηχανισμός και η διαδικασία που ακολουθείται μοιάζει πάρα πολύ με αυτόν του Make-table • Στην προβολή σχεδίαση του ερωτήματος επιλέγουμε τους πίνακες που θα πάρουμε τα δεδομένα και πατώντας το "Append" εισάγουμε το όνομα του νέου ή υπαρχοντα πίνακα που θα γεμίσει • Στην συνέχεια επιλέγουμε στα αντίστοιχα πεδία σε ποια πεδία θα τα εισάγω AccessΝτ Μιχάλης 24
  • 25. Παράδειγμα Append Query • Για παράδειγμα στην βάση Actions.accdb σχεδιάζουμε ένα νέο query με όνομα "PutVipCust" στο οποίο θα βάλουμε όλους τους πελάτες από τον πίνακα "Customers", οι οποίοι έχουν ΤΚ (Zip Code) το 27609, στον πίνακα "Vip_Customers" • Κάνουμε την ίδια διαδικασία με τα προηγούμενα Actions και αφού επιλέξουμε "Append" ορίζουμε σε ποιον πίνακα θα προσθεσουμε εγγραφές • Στην συνέχει προσθέτουμε όλα τα πέδία του πίνακα "Customers" και στην σειρά "Append To" τα αντίστοιχα πεδία του πίνακα "Vip_Customers" • Με την ολοκλήρωση της δημιουργίας εκτελούμε το query AccessΝτ Μιχάλης 25
  • 26. d) Delete Queries • Είναι τα ερωτήματα που διαγράφουν εγγραφές από έναν πίνακα • Μπορούμε στον σχεδιαασμό ενός query να χρησιμοποιήσουμε πολλούς πίνακες, αλλά η διαγραφή θα γίνει από έναν • Τους υπόλοιπους πίνακες τους χρειαζόμαστε για τα κριτήρια που θα βάλουμε • Στην "Σχεδίαση Ερωτήματος" αφού επιλέξουμε "Delete" θα μας εμφανιστεί μία γραμμή "Delete" η οποία έχει δύο επιλογές: ▫ From υποδηλώνει ότι θέλουμε να σβήσουμε τις εγγραφές από αυτόν τον πίνακα αυτής της στήλης ▫ Where υποδήλώνει τα κριτήρια που θα βάλουμε στις στήλες των πινάκων AccessΝτ Μιχάλης 26
  • 27. Παράδειγμα Delete Query • Για παράδειγμα στην βάση Actions.accdb σχεδιάζουμε ένα νέο query με όνομα "DeleteByZip" το οποίο θα διαγράφει από τον πίνακα "Customers" τις εγγραφές με ΤΚ το "27513" • Ακολουθούμε παρόμοια διαδικασία και επιλέγουμε στο πρώτο πεδίο: ▫ "Customers.*" και στο αντίστοιχο Delete το "From" ▫ "Zip Code" και στο αντίστοιχο Delete το "Where" και στο κριτήρια (Criteria) το =" 27513" • Όταν το εκτελέσουμε και κάθε φορά που το εκτελούμε θα διαγράφονται οι εγγραφές από τον πίνακα Customers που πληρούν τα κριτήρια AccessΝτ Μιχάλης 27
  • 28. 3) Ερωτήματα Διασταύρωσης (Crosstab Queries) • Χρησιμοποιούμε αυτόν τον τύπο για να υπολογίσουμε και να αναδιαρθρώσουμε τα δεδομένα μας για καλύτερη ανάλυση • Τα ερωτήματα διασταύρωσης υπολογίζουν ένα άθροισμα , μέσο όρο, πλήθος ή άλλο τύπο συνόλου για δεδομένα που είναι ομαδοποιημένα κατά 2 τύπους ο ένας κατά μήκος της αριστερής πλευράς και ο άλλος οριζόντια στην κορυφή (πάνω μέρος ) • Για να δημιουργήσουμε ένα ερώτημα διαστάυρωσης υπάρχουν δύο τρόποι: ▫ μέσω του crosstab query wizard ▫ από την σχεδίαση ερωτήματος AccessΝτ Μιχάλης 28
  • 29. Παράδειγμα Ερωτήματα Διασταύρωσης • Ανοίξτε το αρχείο Crosstab.accdb και τον πίνακα Sales_2014, στον οποίο φαίνονται οι πωλήσεις τους διάφορες μήνες • Το Crosstab query θα μας βοηθήσει να ομαδοποιήσουμε τις πωλήσεις ανά μήνα και να τις προσθέσουμε ξεχωριστά για κάθε ένα πωλητή • Ο πίνακας Sales 2014 • Το αποτέλεσμα του query (μέσω του crosstab query wizard): AccessΝτ Μιχάλης 29
  • 30. 4) SQL Ερωτήματα (SQL Queries) • H SQL (Structured Query Language) είναι η γλώσσα που μας βοηθά να επικοινωνήσουμε με το Microsoft Jet (DBMS) • Όταν δημιουργούμε ένα ερώτημα στην Σχεδίαση Ερωτήματος τότε η Access αυτόματα δημιουργεί το αντίστοιχο σε SQL • Μπορούμε να το δούμε αυτό επιλέγοντας 'Προβολή SQL' • Όταν σχεδιάζουμε ένα ερώτημα πάντοτε δημιουργείτε το αντίστοιχο σε SQL, δεν συμβαίνει όμως το αντίθετο AccessΝτ Μιχάλης 30
  • 31. Παράδειγμα SQL Ερωτήματος • Για παράδειγμα στην βάση SQL_Queries.accdb σχεδιάζουμε ▫ ένα νέο query με όνομα "Using SQL A" το οποίο θα μας επιστρέψει όλες τις εγγραφές από τον customers  SELECT * FROM customers; ▫ ένα νέο query με όνομα "Using SQL B" το οποίο θα μας επιστρέψει μόνο το "customer_fname" όλων των εγγραφών  SELECT customer_fname FROM customers; ▫ ένα νέο query με όνομα "Using SQL C" το οποίο θα μας επιστρέψει όλες τις εγγραφές από τον customers που έχουν "customer_ammount" μεγαλύτερο από 5000  SELECT * FROM customers WHERE customer_amount > 5000; ▫ ένα νέο query με όνομα "Using SQL D" το οποίο θα μας επιστρέψει μόνο το "customer_fname" και το "customer_lname" όλων των εγγραφών από τον customers που έχουν "customer_ammount" μικρότερο ή ίσο από 5000 και "customer_fname" που αρχίζει από "C"  SELECT customer_fname, customer_lname FROM customers WHERE customer_amount <= 5000 AND customer_fname LIKE "C*"; AccessΝτ Μιχάλης 31