Δημιουργία ή τροποποίηση πινάκων ή ευρετηρίων με τη χρήση ενός ερωτήματος ορισμού δεδομένων

Ισχύει για
Access για Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Μπορείτε να δημιουργήσετε και να τροποποιήσετε πίνακες, περιορισμούς, ευρετήρια και σχέσεις στην Access γράφοντας ερωτήματα ορισμού δεδομένων σε προβολή SQL. Αυτό το άρθρο εξηγεί τα ερωτήματα ορισμού δεδομένων και πώς μπορείτε να τα χρησιμοποιήσετε για τη δημιουργία πινάκων, περιορισμών, ευρετηρίων και σχέσεων. Αυτό το άρθρο μπορεί επίσης να σας βοηθήσει να αποφασίσετε πότε θα χρησιμοποιήσετε ένα ερώτημα ορισμού δεδομένων.

Σε αυτό το άρθρο

Επισκόπηση

Σε αντίθεση με τα άλλα ερωτήματα της Access, ένα ερώτημα ορισμού δεδομένων δεν ανακτά δεδομένα. Αντίθετα, ένα ερώτημα ορισμού δεδομένων χρησιμοποιεί τη γλώσσα ορισμού δεδομένων για τη δημιουργία, τροποποίηση ή διαγραφή αντικειμένων βάσης δεδομένων.

Σημείωση

Η γλώσσα ορισμού δεδομένων (DDL) αποτελεί μέρος της Structured Query Language (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 table_name 
 (field1 type [(size)] [NOT NULL] [index1]
 [, field2 type [(size)] [NOT NULL] [index2]
 [, ...][, CONSTRAINT constraint1 [, ...]])

Τα μόνα απαιτούμενα στοιχεία μιας εντολής CREATE TABLE είναι η ίδια η εντολή CREATE TABLE και το όνομα του πίνακα, αλλά συνήθως θα θέλετε να ορίσετε ορισμένα πεδία ή άλλα χαρακτηριστικά του πίνακα. Εξετάστε αυτό το απλό παράδειγμα.

Ας υποθέσουμε ότι θέλετε να δημιουργήσετε έναν πίνακα για να αποθηκεύσετε το όνομα, το έτος και την τιμή των μεταχειρισμένων αυτοκινήτων που εξετάζετε για αγορά. Θέλετε να επιτρέψετε έως 30 χαρακτήρες για το όνομα και 4 χαρακτήρες για το έτος. Για να χρησιμοποιήσετε ένα ερώτημα ορισμού δεδομένων για τη δημιουργία του πίνακα, κάντε τα εξής:

Σημείωση

Ίσως χρειαστεί πρώτα να ενεργοποιήσετε τα περιεχόμενα της βάσης δεδομένων για να εκτελεστεί ένα ερώτημα ορισμού δεδομένων:

  • Στη γραμμή μηνυμάτων, κάντε κλικ στο κουμπί Ενεργοποίηση περιεχομένου.

Δημιουργία πίνακα

  1. Στην καρτέλα " Δημιουργία ", στην ομάδα "Μακροεντολές & κώδικας ", κάντε κλικ στην επιλογή "Σχεδίαση ερωτήματος".
  2. Στην καρτέλα " Σχεδίαση ", στην ομάδα "Τύπος ερωτήματος ", κάντε κλικ στην επιλογή "Ορισμός δεδομένων".
    Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
  3. Πληκτρολογήστε την ακόλουθη πρόταση SQL:
    CREATE TABLE Αυτοκίνητα (Όνομα TEXT(30), Έτος TEXT(4), Τιμή CURRENCY)
  4. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

Τροποποίηση πίνακα

Για να τροποποιήσετε έναν πίνακα, μπορείτε να χρησιμοποιήσετε μια εντολή 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 χαρακτήρων για να αποθηκεύσετε πληροφορίες σχετικά με την κατάσταση κάθε αυτοκινήτου. Μπορείτε να κάνετε τα εξής:

  1. Στην καρτέλα " Δημιουργία ", στην ομάδα "Μακροεντολές & κώδικας ", κάντε κλικ στην επιλογή "Σχεδίαση ερωτήματος".
  2. Στην καρτέλα " Σχεδίαση ", στην ομάδα "Τύπος ερωτήματος ", κάντε κλικ στην επιλογή "Ορισμός δεδομένων".
    Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
  3. Πληκτρολογήστε την ακόλουθη πρόταση SQL:
    ALTER TABLE Αυτοκίνητα ΠΡΟΣΘΗΚΗ ΚΟΛΩΝ Κείμενο κατάστασης(10)
  4. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

Αρχή της σελίδας

Δημιουργία ευρετηρίου

Για να δημιουργήσετε ένα ευρετήριο σε έναν υπάρχοντα πίνακα, μπορείτε να χρησιμοποιήσετε μια εντολή 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.

Ας υποθέσουμε ότι έχετε έναν πίνακα με το όνομα "Αυτοκίνητα" με πεδία που αποθηκεύουν το όνομα, το έτος, την τιμή και την κατάσταση των μεταχειρισμένων αυτοκινήτων που εξετάζετε για αγορά. Επίσης, ας υποθέσουμε ότι ο πίνακας έχει γίνει μεγάλος και ότι συμπεριλαμβάνετε συχνά το πεδίο "έτος" στα ερωτήματα. Μπορείτε να δημιουργήσετε ένα ευρετήριο στο πεδίο "Έτος" για να βοηθά τα ερωτήματά σας να επιστρέφουν αποτελέσματα πιο γρήγορα, χρησιμοποιώντας την ακόλουθη διαδικασία:

  1. Στην καρτέλα " Δημιουργία ", στην ομάδα "Μακροεντολές & κώδικας ", κάντε κλικ στην επιλογή "Σχεδίαση ερωτήματος".
  2. Στην καρτέλα " Σχεδίαση ", στην ομάδα "Τύπος ερωτήματος ", κάντε κλικ στην επιλογή "Ορισμός δεδομένων".
    Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
  3. Πληκτρολογήστε την ακόλουθη πρόταση SQL:
    CREATE INDEX YearIndex ON Αυτοκίνητα (Έτος)
  4. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

Αρχή της σελίδας

Δημιουργία περιορισμού ή σχέσης

Ένας περιορισμός καθορίζει μια λογική συνθήκη που πρέπει να πληροί ένα πεδίο ή ένας συνδυασμός πεδίων κατά την εισαγωγή των τιμών. Για παράδειγμα, ένας ΜΟΝΑΔΙΚΟΣ περιορισμός εμποδίζει το περιορισμένο πεδίο να αποδεχθεί μια τιμή που θα αντιγράψει μια υπάρχουσα τιμή για το πεδίο.

Η σχέση είναι ένας τύπος περιορισμού που αναφέρεται στις τιμές ενός πεδίου ή σε συνδυασμό πεδίων σε έναν άλλο πίνακα για να προσδιοριστεί εάν μια τιμή μπορεί να εισαχθεί στο περιορισμένο πεδίο ή στον συνδυασμό πεδίων. Δεν μπορείτε να χρησιμοποιήσετε μια ειδική λέξη-κλειδί για να υποδείξετε ότι ένας περιορισμός είναι μια σχέση.

Για να δημιουργήσετε έναν περιορισμό, μπορείτε να χρησιμοποιήσετε έναν όρο 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}]}

Ας υποθέσουμε ότι έχετε έναν πίνακα με το όνομα "Αυτοκίνητα" με πεδία που αποθηκεύουν το όνομα, το έτος, την τιμή και την κατάσταση των μεταχειρισμένων αυτοκινήτων που εξετάζετε για αγορά. Ας υποθέσουμε επίσης ότι ξεχνάτε συχνά να εισαγάγετε μια τιμή για την κατάσταση του αυτοκινήτου και ότι θέλετε πάντα να καταγράφετε αυτές τις πληροφορίες. Μπορείτε να δημιουργήσετε έναν περιορισμό στο πεδίο "Συνθήκη" που δεν σας επιτρέπει να αφήσετε το πεδίο κενό, χρησιμοποιώντας την ακόλουθη διαδικασία:

  1. Στην καρτέλα " Δημιουργία ", στην ομάδα "Μακροεντολές & κώδικας ", κάντε κλικ στην επιλογή "Σχεδίαση ερωτήματος".
  2. Στην καρτέλα " Σχεδίαση ", στην ομάδα "Τύπος ερωτήματος ", κάντε κλικ στην επιλογή "Ορισμός δεδομένων".
    Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
  3. Πληκτρολογήστε την ακόλουθη πρόταση SQL:
    ALTER TABLE Αυτοκίνητα ALTER COLUMN Συνθήκη ΠΕΡΙΟΡΙΣΜΟΣ ΚΕΙΜΕΝΟΥ ConditionRequired NOT NULL
  4. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

Ας υποθέσουμε τώρα ότι, μετά από λίγο, παρατηρείτε ότι υπάρχουν πολλές παρόμοιες τιμές στο πεδίο "Συνθήκη" που θα έπρεπε να είναι ίδιες. Για παράδειγμα, ορισμένα από τα αυτοκίνητα έχουν μια κατάσταση φτωχών και άλλα έχουν μια αξία κακή.

Σημείωση

Εάν θέλετε να ακολουθήσετε τις υπόλοιπες διαδικασίες, προσθέστε μερικά πλαστά δεδομένα στον πίνακα Αυτοκίνητα που δημιουργήσατε στα προηγούμενα βήματα.

Αφού εκκαθαρίσετε τις τιμές ώστε να είναι πιο συνεπείς, μπορείτε να δημιουργήσετε έναν πίνακα, που ονομάζεται "Κατάσταση", με ένα πεδίο, που ονομάζεται "Συνθήκη", ο οποίος περιέχει όλες τις τιμές που θέλετε να χρησιμοποιήσετε για την κατάσταση των αυτοκινήτων:

  1. Στην καρτέλα " Δημιουργία ", στην ομάδα "Μακροεντολές & κώδικας ", κάντε κλικ στην επιλογή "Σχεδίαση ερωτήματος".

  2. Στην καρτέλα " Σχεδίαση ", στην ομάδα "Τύπος ερωτήματος ", κάντε κλικ στην επιλογή "Ορισμός δεδομένων".
    Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.

  3. Πληκτρολογήστε την ακόλουθη πρόταση SQL:
    CREATE TABLE CarCondition (Συνθήκη TEXT(10))

  4. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

  5. Δημιουργήστε ένα πρωτεύον κλειδί για τον πίνακα, χρησιμοποιώντας μια πρόταση ALTER TABLE:
    ALTER TABLE CarCondition ALTER COLUMN Συνθήκη ΠΕΡΙΟΡΙΣΜΌΣ ΚΕΙΜΈΝΟΥ CarConditionPK ΠΡΩΤΕΎΟΝ ΚΛΕΙΔΊ

  6. Για να εισαγάγετε τις τιμές από το πεδίο Condition του πίνακα Cars στον νέο πίνακα CarCondition, πληκτρολογήστε την ακόλουθη SQL στην καρτέλα αντικειμένου προβολής SQL:
    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Αυτοκίνητα.

    Σημείωση

    Η πρόταση SQL σε αυτό το βήμα είναι ένα ερώτημα προσάρτησης. Σε αντίθεση με ένα ερώτημα ορισμού δεδομένων, ένα ερώτημα προσάρτησης τελειώνει σε ελληνικό ερωτηματικό.

  7. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

Δημιουργία σχέσης με χρήση περιορισμού

Για να απαιτείται οποιαδήποτε νέα τιμή εισάγεται στο πεδίο "Κατάσταση" του πίνακα "Αυτοκίνητα" να ταιριάζει με μια τιμή του πεδίου "Συνθήκη" στον πίνακα "Κατάσταση", μπορείτε στη συνέχεια να δημιουργήσετε μια σχέση μεταξύ της στήλης "Κατάσταση" και "Αυτοκίνητα" στο πεδίο που ονομάζεται "Κατάσταση", χρησιμοποιώντας την ακόλουθη διαδικασία:

  1. Στην καρτέλα " Δημιουργία ", στην ομάδα "Μακροεντολές & κώδικας ", κάντε κλικ στην επιλογή "Σχεδίαση ερωτήματος".
  2. Στην καρτέλα " Σχεδίαση ", στην ομάδα "Τύπος ερωτήματος ", κάντε κλικ στην επιλογή "Ορισμός δεδομένων".
    Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
  3. Πληκτρολογήστε την ακόλουθη πρόταση SQL:
    ALTER TABLE Αυτοκίνητα ALTER COLUMN Συνθήκη ΠΕΡΙΟΡΙΣΜΟΣ ΚΕΙΜΕΝΟΥ FKeyCondition ΑΝΑΦΟΡΕΣ CarCondition (Συνθήκη)
  4. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

Περιορισμοί για πολλά πεδία

Ένας όρος 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. Ας υποθέσουμε ότι θέλετε να βεβαιωθείτε ότι δεν υπάρχουν δύο εγγραφές στον πίνακα Cars που να έχουν το ίδιο σύνολο τιμών για το Όνομα, το Έτος, την Κατάσταση και την Τιμή. Θα μπορούσατε να δημιουργήσετε έναν ΜΟΝΑΔΙΚΟ περιορισμό που να ισχύει για αυτά τα πεδία, χρησιμοποιώντας την ακόλουθη διαδικασία:

  1. Στην καρτέλα " Δημιουργία ", στην ομάδα "Μακροεντολές & κώδικας ", κάντε κλικ στην επιλογή "Σχεδίαση ερωτήματος".
  2. Στην καρτέλα " Σχεδίαση ", στην ομάδα "Τύπος ερωτήματος ", κάντε κλικ στην επιλογή "Ορισμός δεδομένων".
    Το πλέγμα σχεδίασης είναι κρυφό και εμφανίζεται η καρτέλα αντικειμένου προβολής SQL.
  3. Πληκτρολογήστε την ακόλουθη πρόταση SQL:
    ALTER TABLE Αυτοκίνητα ADD CONSTRAINT NoDupes UNIQUE (όνομα, έτος, κατάσταση, τιμή)
  4. Στην καρτέλα Σχεδίαση, στην ομάδα Αποτελέσματα, κάντε κλικ στην εντολή Εκτέλεση.

Αρχή της σελίδας