Μπορείτε να δημιουργήσετε και να τροποποιήσετε πίνακες, περιορισμούς, ευρετήρια και σχέσεις στην Access, γράφοντας ερωτήματα ορισμού δεδομένων σε προβολή SQL. Αυτό το άρθρο εξηγεί τα ερωτήματα ορισμού δεδομένων και πώς μπορείτε να τα χρησιμοποιήσετε για να δημιουργήσετε πίνακες, περιορισμούς, ευρετήρια και σχέσεις. Αυτό το άρθρο μπορεί επίσης να σας βοηθήσει να αποφασίσετε πότε θα χρησιμοποιήσετε ένα ερώτημα ορισμού δεδομένων.
Σε αυτό το άρθρο
Επισκόπηση
Σε αντίθεση με άλλα ερωτήματα της Access, ένα ερώτημα ορισμού δεδομένων δεν ανακτά δεδομένα. Αντί για αυτό, ένα ερώτημα ορισμού δεδομένων χρησιμοποιεί τη γλώσσα ορισμού δεδομένων για τη δημιουργία, την τροποποίηση ή τη διαγραφή αντικειμένων βάσης δεδομένων.
Σημείωση: Η Γλώσσα ορισμού δεδομένων (DDL) είναι μέρος της Γλώσσας δομημένου ερωτήματος (SQL).
Τα ερωτήματα ορισμού δεδομένων μπορεί να είναι πολύ βολικά. Μπορείτε να διαγράφετε τακτικά και να δημιουργείτε εκ νέου τμήματα του σχήματος της βάσης δεδομένων απλώς εκτελώντας ορισμένα ερωτήματα. Εξετάστε το ενδεχόμενο να χρησιμοποιήσετε ένα ερώτημα ορισμού δεδομένων εάν είστε εξοικειωμένοι με τις προτάσεις SQL και σκοπεύετε να διαγράψετε και να δημιουργήσετε εκ νέου συγκεκριμένους πίνακες, περιορισμούς, ευρετήρια ή σχέσεις.
Προειδοποίηση: Η χρήση ερωτημάτων ορισμού δεδομένων για την τροποποίηση αντικειμένων βάσης δεδομένων μπορεί να είναι επικίνδυνη, επειδή οι ενέργειες δεν συνοδεύονται από παράθυρα διαλόγου επιβεβαίωσης. Εάν κάνετε κάποιο λάθος, μπορεί να χάσετε δεδομένα ή να αλλάξετε κατά λάθος τη σχεδίαση ενός πίνακα. Να είστε προσεκτικοί όταν χρησιμοποιείτε ένα ερώτημα ορισμού δεδομένων για να τροποποιήσετε αντικείμενα στη βάση δεδομένων σας. Εάν δεν είστε υπεύθυνοι για τη διατήρηση της βάσης δεδομένων που χρησιμοποιείτε, θα πρέπει να συμβουλευτείτε το διαχειριστή της βάσης δεδομένων πριν να εκτελέσετε ένα ερώτημα ορισμού δεδομένων.
Σημαντικό: Δημιουργήστε ένα αντίγραφο ασφαλείας των πινάκων που εμπλέκονται πριν εκτελέσετε ένα ερώτημα ορισμού δεδομένων.
Λέξεις-κλειδιά DDL
Λέξη-κλειδί |
Χρήση |
CREATE |
Δημιουργήστε ένα ευρετήριο ή έναν πίνακα που δεν υπάρχει ήδη. |
ALTER |
Τροποποίηση υπάρχοντος πίνακα ή στήλης. |
DROP |
Διαγραφή υπάρχοντος πίνακα, στήλης ή περιορισμού. |
ADD |
Προσθέστε μια στήλη ή έναν περιορισμό σε έναν πίνακα. |
COLUMN |
Χρήση με τις προτάσεις ADD, ALTER ή DROP |
CONSTRAINT |
Χρήση με τις προτάσεις ADD, ALTER ή DROP |
INDEX |
Χρήση με τη CREATE |
TABLE |
Χρήση με τις προτάσεις ALTER, CREATE ή DROP |
Δημιουργία ή τροποποίηση πίνακα
Για να δημιουργήσετε έναν πίνακα, μπορείτε να χρησιμοποιήσετε την εντολή CREATE TABLE. Μια εντολή CREATE TABLE έχει την ακόλουθη σύνταξη:
CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])
Τα μόνα απαιτούμενα στοιχεία μιας εντολής CREATE TABLE είναι η ίδια η εντολή CREATE TABLE και το όνομα του πίνακα, αλλά συνήθως θα θέλετε να ορίσετε ορισμένα πεδία ή άλλες πτυχές του πίνακα. Εξετάστε αυτό το απλό παράδειγμα.
Ας υποθέσουμε ότι θέλετε να δημιουργήσετε έναν πίνακα για να αποθηκεύσετε το όνομα, το έτος και την τιμή των μεταχειρισμένων αυτοκινήτων που εξετάζετε για αγορά. Θέλετε να επιτρέψετε έως 30 χαρακτήρες για το όνομα και 4 χαρακτήρες για το έτος. Για να χρησιμοποιήσετε ένα ερώτημα ορισμού δεδομένων για να δημιουργήσετε τον πίνακα, κάντε τα εξής:
Σημείωση: Ίσως χρειαστεί πρώτα να ενεργοποιήσετε τα περιεχόμενα της βάσης δεδομένων για να εκτελεστεί ένα ερώτημα ορισμού δεδομένων:
-
Στη γραμμή μηνυμάτων, κάντε κλικ στο κουμπί Ενεργοποίηση περιεχομένου.
Δημιουργία πίνακα
-
Στην καρτέλα Δημιουργία , στην ομάδα Μακροεντολές & Κώδικας , κάντε κλικ στην επιλογή Σχεδίαση ερωτήματος.
-
Στην καρτέλα Σχεδίαση , στην ομάδα Τύπος ερωτήματος , κάντε κλικ στην επιλογή Ορισμός δεδομένων.
Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
-
Πληκτρολογήστε την ακόλουθη πρόταση SQL:
CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
-
Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.
Τροποποίηση πίνακα
Για να τροποποιήσετε έναν πίνακα, μπορείτε να χρησιμοποιήσετε την εντολή ALTER TABLE. Μπορείτε να χρησιμοποιήσετε μια εντολή ALTER TABLE για να προσθέσετε, να τροποποιήσετε ή να αποθέσετε (καταργήσετε) στήλες ή περιορισμούς. Η εντολή ALTER TABLE έχει την ακόλουθη σύνταξη:
ALTER TABLE table_name predicate
όπου κατειδικείο μπορεί να είναι οποιοδήποτε από τα εξής:
ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]
ADD CONSTRAINT multifield_constraint
ALTER COLUMN field type[(size)]
DROP COLUMN field
DROP CONSTRAINT constraint
Ας υποθέσουμε ότι θέλετε να προσθέσετε ένα πεδίο κειμένου 10 χαρακτήρων για να αποθηκεύσετε πληροφορίες σχετικά με την κατάσταση κάθε αυτοκινήτου. Μπορείτε να κάνετε τα εξής:
-
Στην καρτέλα Δημιουργία , στην ομάδα Μακροεντολές & Κώδικας , κάντε κλικ στην επιλογή Σχεδίαση ερωτήματος.
-
Στην καρτέλα Σχεδίαση , στην ομάδα Τύπος ερωτήματος , κάντε κλικ στην επιλογή Ορισμός δεδομένων.
Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
-
Πληκτρολογήστε την ακόλουθη πρόταση SQL:
ALTER TABLE Cars ADD COLUMN Condition TEXT(10)
-
Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.
Δημιουργία ευρετηρίου
Για να δημιουργήσετε ένα ευρετήριο σε έναν υπάρχοντα πίνακα, μπορείτε να χρησιμοποιήσετε μια εντολή CREATE INDEX. Η εντολή CREATE INDEX έχει την ακόλουθη σύνταξη:
CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]
Τα μόνα απαιτούμενα στοιχεία είναι η εντολή CREATE INDEX, το όνομα του ευρετηρίου, το όρισμα ON, το όνομα του πίνακα που περιέχει τα πεδία που θέλετε να δημιουργήσετε ευρετήριο και η λίστα των πεδίων που θα συμπεριληφθούν στο ευρετήριο.
-
Το όρισμα DESC προκαλεί τη δημιουργία του ευρετηρίου με φθίνουσα σειρά, κάτι που μπορεί να είναι χρήσιμο εάν εκτελείτε συχνά ερωτήματα που αναζητούν κορυφαίες τιμές για το πεδίο με ευρετήριο ή που ταξινομούν το πεδίο με ευρετήριο σε φθίνουσα σειρά. Από προεπιλογή, ένα ευρετήριο δημιουργείται με αύξουσα σειρά.
-
Το όρισμα WITH PRIMARY καθορίζει το πεδίο ή τα πεδία με ευρετήριο ως το πρωτεύον κλειδί του πίνακα.
-
Το όρισμα WITH DISALLOW NULL έχει ως αποτέλεσμα το ευρετήριο να απαιτεί την εισαγωγή μιας τιμής για το πεδίο με ευρετήριο — δηλαδή, οι τιμές null δεν επιτρέπονται.
Ας υποθέσουμε ότι έχετε έναν πίνακα με το όνομα Αυτοκίνητα με πεδία που αποθηκεύουν το όνομα, το έτος, την τιμή και την κατάσταση των μεταχειρισμένων αυτοκινήτων που εξετάζετε για αγορά. Ας υποθέσουμε επίσης ότι ο πίνακας έχει γίνει μεγάλος και ότι συμπεριλαμβάνετε συχνά το πεδίο έτος στα ερωτήματα. Μπορείτε να δημιουργήσετε ένα ευρετήριο στο πεδίο Έτος για να βοηθήσετε τα ερωτήματά σας να επιστρέφουν αποτελέσματα πιο γρήγορα, χρησιμοποιώντας την ακόλουθη διαδικασία:
-
Στην καρτέλα Δημιουργία , στην ομάδα Μακροεντολές & Κώδικας , κάντε κλικ στην επιλογή Σχεδίαση ερωτήματος.
-
Στην καρτέλα Σχεδίαση , στην ομάδα Τύπος ερωτήματος , κάντε κλικ στην επιλογή Ορισμός δεδομένων.
Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
-
Πληκτρολογήστε την ακόλουθη πρόταση SQL:
CREATE INDEX YearIndex ON Αυτοκίνητα (Έτος)
-
Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.
Δημιουργία περιορισμού ή σχέσης
Ένας περιορισμός καθορίζει μια λογική συνθήκη που πρέπει να ικανοποιεί ένα πεδίο ή ένας συνδυασμός πεδίων κατά την εισαγωγή τιμών. Για παράδειγμα, ένας περιορισμός UNIQUE δεν επιτρέπει στο περιορισμένο πεδίο να αποδεχτεί μια τιμή που θα αντιγράφει μια υπάρχουσα τιμή για το πεδίο.
Μια σχέση είναι ένας τύπος περιορισμού που αναφέρεται στις τιμές ενός πεδίου ή σε συνδυασμό πεδίων σε έναν άλλο πίνακα για να καθορίσει εάν μια τιμή μπορεί να εισαχθεί στο περιορισμένο πεδίο ή στο συνδυασμό πεδίων. Δεν χρησιμοποιείτε μια ειδική λέξη-κλειδί για να υποδείξετε ότι ένας περιορισμός είναι σχέση.
Για να δημιουργήσετε έναν περιορισμό, χρησιμοποιήστε έναν όρο CONSTRAINT σε μια εντολή CREATE TABLE ή ALTER TABLE. Υπάρχουν δύο είδη όρων CONSTRAINT: ένας για τη δημιουργία περιορισμού σε ένα μόνο πεδίο και ένας άλλος για τη δημιουργία περιορισμού σε πολλά πεδία.
Περιορισμοί ενός πεδίου
Ένας όρος CONSTRAINT ενός πεδίου ακολουθεί αμέσως τον ορισμό του πεδίου που περιορίζει και έχει την ακόλουθη σύνταξη:
CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
Ας υποθέσουμε ότι έχετε έναν πίνακα με το όνομα Αυτοκίνητα με πεδία που αποθηκεύουν το όνομα, το έτος, την τιμή και την κατάσταση των μεταχειρισμένων αυτοκινήτων που εξετάζετε για αγορά. Επίσης, ας υποθέσουμε ότι συχνά ξεχνάτε να εισαγάγετε μια τιμή για την κατάσταση του αυτοκινήτου και ότι θέλετε πάντα να καταγράφετε αυτές τις πληροφορίες. Μπορείτε να δημιουργήσετε έναν περιορισμό στο πεδίο Συνθήκη που δεν σας επιτρέπει να αφήσετε το πεδίο κενό, χρησιμοποιώντας την ακόλουθη διαδικασία:
-
Στην καρτέλα Δημιουργία , στην ομάδα Μακροεντολές & Κώδικας , κάντε κλικ στην επιλογή Σχεδίαση ερωτήματος.
-
Στην καρτέλα Σχεδίαση , στην ομάδα Τύπος ερωτήματος , κάντε κλικ στην επιλογή Ορισμός δεδομένων.
Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
-
Πληκτρολογήστε την ακόλουθη πρόταση SQL:
ALTER TABLE Cars ALTER COLUMN ΣΥΝΘΉΚΗ TEXT ΌΡΟςΥποχρεωτικό NOT NULL
-
Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.
Ας υποθέσουμε τώρα ότι, μετά από λίγο, θα παρατηρήσετε ότι υπάρχουν πολλές παρόμοιες τιμές στο πεδίο Συνθήκη που πρέπει να είναι οι ίδιες. Για παράδειγμα, ορισμένα από τα αυτοκίνητα έχουν μια αξία κατάστασης κακή και άλλα έχουν μια αξία του κακού.
Σημείωση: Εάν θέλετε να ακολουθήσετε μαζί με τις υπόλοιπες διαδικασίες, προσθέστε μερικά πλαστά δεδομένα στον πίνακα Αυτοκίνητα που δημιουργήσατε στα προηγούμενα βήματα.
Αφού εκκαθαρίσετε τις τιμές ώστε να είναι πιο συνεπείς, θα μπορούσατε να δημιουργήσετε έναν πίνακα, με το όνομα CarCondition, με ένα πεδίο, που ονομάζεται Συνθήκη, που περιέχει όλες τις τιμές που θέλετε να χρησιμοποιήσετε για την κατάσταση των αυτοκινήτων:
-
Στην καρτέλα Δημιουργία , στην ομάδα Μακροεντολές & Κώδικας , κάντε κλικ στην επιλογή Σχεδίαση ερωτήματος.
-
Στην καρτέλα Σχεδίαση , στην ομάδα Τύπος ερωτήματος , κάντε κλικ στην επιλογή Ορισμός δεδομένων.
Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
-
Πληκτρολογήστε την ακόλουθη πρόταση SQL:
CREATE TABLE CarCondition (Condition TEXT(10))
-
Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.
-
Δημιουργήστε ένα πρωτεύον κλειδί για τον πίνακα χρησιμοποιώντας μια πρόταση ALTER TABLE:
ALTER TABLE CarCondition ALTER COLUMN Συνθήκη TEXT CONSTRAINT CarConditionPK ΠΡΩΤΕΥΟΝ ΚΛΕΙΔΙ
-
Για να εισαγάγετε τις τιμές από το πεδίο Συνθήκη του πίνακα Cars στον νέο πίνακα CarCondition, πληκτρολογήστε το παρακάτω SQL στην καρτέλα αντικειμένου προβολής SQL:
INSERT INTO CarCondition SELECT DISTINCT Συνθήκη FROM Αυτοκίνητα;
Σημείωση: Η πρόταση SQL σε αυτό το βήμα είναι μια ερώτημα προσάρτησης. Σε αντίθεση με ένα ερώτημα ορισμού δεδομένων, ένα ερώτημα προσάρτησης τελειώνει με ελληνικό ερωτηματικό.
-
Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.
Δημιουργία σχέσης με χρήση περιορισμού
Για να απαιτείται οποιαδήποτε νέα τιμή που εισάγεται στο πεδίο Συνθήκη του πίνακα Αυτοκίνητα να ταιριάζει με μια τιμή του πεδίου Συνθήκη στον πίνακα CarCondition, μπορείτε στη συνέχεια να δημιουργήσετε μια σχέση μεταξύ CarCondition και Cars στο πεδίο που ονομάζεται Συνθήκη, χρησιμοποιώντας την ακόλουθη διαδικασία:
-
Στην καρτέλα Δημιουργία , στην ομάδα Μακροεντολές & Κώδικας , κάντε κλικ στην επιλογή Σχεδίαση ερωτήματος.
-
Στην καρτέλα Σχεδίαση , στην ομάδα Τύπος ερωτήματος , κάντε κλικ στην επιλογή Ορισμός δεδομένων.
Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
-
Πληκτρολογήστε την ακόλουθη πρόταση SQL:
ALTER TABLE Cars ALTER COLUMN Συνθήκη TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (Συνθήκη)
-
Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.
Περιορισμοί πολλών πεδίων
Ένας όρος CONSTRAINT πολλών πεδίων μπορεί να χρησιμοποιηθεί μόνο εκτός ενός όρου ορισμού πεδίου και έχει την ακόλουθη σύνταξη:
CONSTRAINT constraint_name
{PRIMARY KEY (pk_field1[, pk_field2[, ...]]) | UNIQUE (unique1[, unique2[, ...]]) | NOT NULL (notnull1[, notnull2[, ...]]) | FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]]) REFERENCES foreign_table [(fk_field1[, fk_field2[, ...]])] | [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
Εξετάστε ένα άλλο παράδειγμα που χρησιμοποιεί τον πίνακα Cars. Ας υποθέσουμε ότι θέλετε να βεβαιωθείτε ότι δύο εγγραφές στον πίνακα Αυτοκίνητα δεν έχουν το ίδιο σύνολο τιμών για τις τιμές Όνομα, Έτος, Συνθήκη και Τιμή. Μπορείτε να δημιουργήσετε έναν περιορισμό UNIQUE που να ισχύει για αυτά τα πεδία, χρησιμοποιώντας την ακόλουθη διαδικασία:
-
Στην καρτέλα Δημιουργία , στην ομάδα Μακροεντολές & Κώδικας , κάντε κλικ στην επιλογή Σχεδίαση ερωτήματος.
-
Στην καρτέλα Σχεδίαση , στην ομάδα Τύπος ερωτήματος , κάντε κλικ στην επιλογή Ορισμός δεδομένων.
Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
-
Πληκτρολογήστε την ακόλουθη πρόταση SQL:
ALTER TABLE Αυτοκίνητα ADD CONSTRAINT NoDupes UNIQUE (όνομα, έτος, συνθήκη, τιμή)
-
Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.