SQLite Δημιουργία, Αλλαγή, Απόθεση πίνακα με Παραδείγματα

⚡ Έξυπνη Σύνοψη

SQLite Η διαχείριση πινάκων βασίζεται σε τρεις εντολές ορισμού δεδομένων, την CREATE TABLE για τον ορισμό ενός πίνακα, την ALTER TABLE για τη μετονομασία του ή την προσθήκη και αλλαγή στηλών και την DROP TABLE για την πλήρη αφαίρεσή του από τη βάση δεδομένων.

  • 📐 Δημιουργήστε πίνακες: Η πρόταση CREATE TABLE ορίζει ένα όνομα πίνακα και τις στήλες του, και κάθε στήλη χρειάζεται ένα όνομα και έναν τύπο δεδομένων.
  • Αποφύγετε τα λάθη: Η προσθήκη της συνάρτησης IF NOT EXISTS στο CREATE TABLE ή της συνάρτησης IF EXISTS στο DROP TABLE αποτρέπει αποτυχίες όταν ένας πίνακας υπάρχει ήδη ή λείπει.
  • Τροποποίηση πινάκων: Η εντολή ALTER TABLE μετονομάζει έναν πίνακα, προσθέτει μια στήλη και στη σύγχρονη SQLite μετονομάζει ή καταργεί μια μεμονωμένη στήλη.
  • 🗑️ Πίνακες απόθεσης: Η εντολή DROP TABLE καταργεί οριστικά έναν πίνακα και κάθε γραμμή και ευρετήριο που ανήκει σε αυτόν.
  • 📑 Αντιγραφή πινάκων: Η συνάρτηση CREATE TABLE AS SELECT δημιουργεί έναν νέο πίνακα από τις στήλες και τις γραμμές που επιστρέφονται από ένα ερώτημα.
  • 🤖 Βοήθεια AI: Οι βοηθοί τεχνητής νοημοσύνης (AI) μετατροπής κειμένου σε SQL και το GitHub Copilot δημιουργούν εντολές CREATE, ALTER και DROP από απλές αγγλικές προτροπές.

SQLite Δημιουργία Τροποποίησης Πίνακα Απόθεσης

Οι παρακάτω ενότητες δείχνουν πώς να δημιουργήσετε πίνακες, να τροποποιήσετε τη δομή τους και να αποθέσετε πίνακες σε SQLite3 με παραδείγματα, που καλύπτουν τις εντολές CREATE TABLE, ALTER TABLE και DROP TABLE.

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

Σύνταξη

Παρακάτω είναι η σύνταξη της δήλωσης CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Για να δημιουργήσετε έναν πίνακα, θα πρέπει να χρησιμοποιήσετε το ερώτημα "ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ" ως εξής:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

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

  • Ένα όνομα, το όνομα της στήλης θα πρέπει να είναι μοναδικό μεταξύ των στηλών του πίνακα.
  • Ένας τύπος δεδομένων – ο τύπος δεδομένων στήλης.
  • Προαιρετικοί περιορισμοί στηλών, όπως θα εξηγήσουμε στις επόμενες ενότητες αυτού του σεμιναρίου.

SQLite ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΑΝ ΔΕΝ ΥΠΑΡΧΕΙ

Όταν ένα σενάριο εκτελείται περισσότερες από μία φορές, μια απλή εντολή CREATE TABLE αποτυγχάνει εάν ο πίνακας υπάρχει ήδη και σταματά με σφάλμα. SQLite Το λύνει αυτό με την προαιρετική ρήτρα IF NOT EXISTS, η οποία δημιουργεί τον πίνακα μόνο όταν λείπει και δεν κάνει τίποτα όταν υπάρχει ήδη εκεί.

CREATE TABLE IF NOT EXISTS guru99 (
  Id Int,
  Name Varchar
);

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

Η ίδια ιδέα λειτουργεί αντίστροφα όταν αφαιρείτε έναν πίνακα. Η προσθήκη της συνάρτησης IF EXISTS στο DROP TABLE αποτρέπει ένα σφάλμα όταν ο πίνακας έχει ήδη εξαφανιστεί:

DROP TABLE IF EXISTS guru99;

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

Τραπέζι πτώσης

Για να αποσύρετε έναν πίνακα, χρησιμοποιήστε την εντολή "DROP TABLE" ακολουθούμενη από το όνομα του πίνακα ως εξής:

DROP TABLE guru99;

Αλλαγή πίνακα

Μπορείτε να χρησιμοποιήσετε την εντολή "ALTER TABLE" για να μετονομάσετε έναν πίνακα ως εξής:

ALTER TABLE guru99 RENAME TO guru100;

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

SQLite Έξοδος .tables που δείχνει τον πίνακα που μετονομάστηκε από guru99 σε guru100

Όπως μπορείτε να δείτε, το όνομα του πίνακα "guru99" αλλάζει σε "guru100" μετά την εντολή "alter table".

SQLite προσθήκη στηλών- Χρησιμοποιώντας την εντολή ALTER TABLE

Μπορείτε επίσης να χρησιμοποιήσετε την εντολή "ALTER TABLE" για να προσθέσετε στήλες:

ALTER TABLE guru100 ADD COLUMN Age INT;

Αυτό θα αλλάξει τον πίνακα "guru100" και θα προσθέσει μια νέα στήλη με την ονομασία "Age" (Ηλικία).

Εάν δεν είδατε κανένα αποτέλεσμα, αυτό σημαίνει ότι η πρόταση ήταν επιτυχής και η στήλη προστέθηκε. Η έλλειψη αποτελέσματος σημαίνει ότι ο δρομέας θα τοποθετηθεί μετά το "sqlite>" χωρίς κείμενο μετά από αυτόν ως εξής:

SQLite Η γραμμή εντολών δεν εμφανίζει κανένα αποτέλεσμα μετά από μια επιτυχημένη ALTER TABLE ADD COLUMN

Ωστόσο, για να επαληθεύσουμε ότι η στήλη προστέθηκε, μπορούμε να χρησιμοποιήσουμε την εντολή ".schema guru100". Αυτή θα σας δώσει τον ορισμό του πίνακα και θα πρέπει να δείτε τη νέα στήλη που μόλις προσθέσαμε:

SQLite Έξοδος .schema guru100 που εμφανίζει τη νέα στήλη Ηλικία που προστέθηκε στον πίνακα

SQLite ΑΛΛΑΓΗ ΠΙΝΑΚΑ: Μετονομασία και απόρριψη στήλης

Πέρα από την προσθήκη μιας στήλης, οι σύγχρονες εκδοχές του SQLite μπορεί επίσης να μετονομάσει μια μεμονωμένη στήλη και να αφαιρέσει μία. Η μετονομασία μιας στήλης είναι διαθέσιμη από SQLite 3.25 και ενημερώνει το όνομα μέσα στον ορισμό του πίνακα, καθώς και σε κάθε ευρετήριο, έναυσμα και προβολή που αναφέρεται στη στήλη.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Για να καταργήσετε μια στήλη, SQLite Η έκδοση 3.35 και οι νεότερες εκδόσεις υποστηρίζουν μια άμεση ρήτρα DROP COLUMN:

ALTER TABLE guru100 DROP COLUMN Age;

Δεν είναι δυνατή η απόρριψη μιας στήλης όταν αποτελεί μέρος ενός πρωτεύοντος κλειδιού, ενός μοναδικού περιορισμού ή ενός ευρετηρίου. Σε παλαιότερες εκδόσεις SQLite Σε εκδόσεις που δεν διαθέτουν την επιλογή ΑΠΟΡΡΙΨΗ ΣΤΗΛΗΣ, ​​η κλασική λύση είναι να δημιουργήσετε έναν νέο πίνακα με τις στήλες που θέλετε, να αντιγράψετε τις γραμμές κατά μήκος, να αποσύρετε τον παλιό πίνακα και, τέλος, να μετονομάσετε τον νέο.

Πώς να αντιγράψετε έναν πίνακα σε SQLite Χρησιμοποιώντας τη συνάρτηση CREATE TABLE AS SELECT

Μερικές φορές χρειάζεστε ένα αντίγραφο ενός πίνακα, είτε ως αντίγραφο ασφαλείας πριν από μια επικίνδυνη αλλαγή είτε ως σημείο εκκίνησης για έναν νέο πίνακα. SQLite Το δημιουργεί αυτό σε ένα βήμα με την εντολή CREATE TABLE AS SELECT, η οποία δημιουργεί έναν νέο πίνακα του οποίου οι στήλες προέρχονται από ένα ερώτημα και τον γεμίζει με τις γραμμές που επιστρέφει το ερώτημα.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

Ο νέος πίνακας «guru100_backup» λαμβάνει τις ίδιες στήλες και κάθε γραμμή από το «guru100». Για να αντιγράψετε μόνο ορισμένες γραμμές, προσθέστε μια ρήτρα WHERE στο SELECT:

CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;

Ένα σημείο που πρέπει να θυμάστε είναι ότι η συνάρτηση CREATE TABLE AS SELECT αντιγράφει τα ονόματα, τους τύπους και τα δεδομένα στηλών, αλλά δεν αντιγράφει πρωτεύοντα κλειδιά, άλλους περιορισμούς ή ευρετήρια. Πρέπει να τα προσθέσετε μόνοι σας στον νέο πίνακα εάν το αντίγραφο πρέπει να επιβάλει τους ίδιους κανόνες με το αρχικό.

SQLite Εισαγάγετε την τιμή σε έναν πίνακα

Για να εισάγουμε τιμές σε έναν πίνακα, χρησιμοποιούμε την εντολή "INSERT INTO" ως εξής:

INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);

Μπορείτε να παραλείψετε τα ονόματα των στηλών μετά το όνομα του πίνακα και να το γράψετε ως εξής:

INSERT INTO Tablename VALUES(value1, value2, ….);

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

INSERT INTO guru100 VALUES(1, 'Mike', 25);

Το αποτέλεσμα αυτής της δήλωσης θα είναι το εξής:

SQLite Δήλωση INSERT INTO που προσθέτει μια γραμμή τιμών στον πίνακα guru100

  • Η τιμή 1 θα εισαχθεί στη στήλη "id".
  • Η τιμή «Mike» θα εισαχθεί στη στήλη «Όνομα» και
  • Η τιμή 25 θα εισαχθεί στη στήλη «Ηλικία».

ΕΙΣΑΓΩΓΗ … Δήλωση ΠΡΟΕΠΙΛΟΓΗΜΕΝΩΝ ΤΙΜΩΝ

Μπορείτε να συμπληρώσετε τον πίνακα με τις προεπιλεγμένες τιμές για τις στήλες ταυτόχρονα ως εξής:

INSERT INTO Tablename DEFAULT VALUES;

Εάν μια στήλη δεν επιτρέπει μια τιμή null ούτε μια προεπιλεγμένη τιμή, θα λάβετε ένα σφάλμα ότι "Ο περιορισμός NOT NULL απέτυχε" για αυτήν τη στήλη. Ως εξής:

SQLite Σφάλμα αποτυχίας περιορισμού NOT NULL από την ΕΙΣΑΓΩΓΗ ΠΡΟΕΠΙΛΟΓΩΝ ΤΙΜΩΝ

Συχνές Ερωτήσεις

Όχι. SQLite δεν έχει εντολή TRUNCATE TABLE. Για να αδειάσετε έναν πίνακα, εκτελέστε την εντολή DELETE FROM table_name χωρίς τον όρο WHERE και, στη συνέχεια, χρησιμοποιήστε την εντολή VACUUM για να ανακτήσετε τον ελεύθερο χώρο στο δίσκο. Η δομή του πίνακα και οι στήλες του παραμένουν στη θέση τους.

Η εντολή DELETE καταργεί γραμμές από έναν πίνακα, αλλά διατηρεί τον πίνακα, τις στήλες του και τη δομή του έτοιμα για νέα δεδομένα. Η εντολή DROP TABLE καταργεί ολόκληρο τον πίνακα, συμπεριλαμβανομένου του ορισμού, των ευρετηρίων και των εναυσμάτων του, επομένως ο πίνακας δεν υπάρχει πλέον στη βάση δεδομένων.

Στο SQLite Στη γραμμή εντολών, η εντολή .tables dot εκτυπώνει κάθε όνομα πίνακα. Από την SQL, υποβάλετε ερώτημα στον ενσωματωμένο πίνακα σχήματος με SELECT name FROM sqlite_master WHERE type = 'table'; το οποίο λειτουργεί επίσης από οποιαδήποτε εφαρμογή που είναι συνδεδεμένη στη βάση δεδομένων.

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

Ναι. Το πρωτεύον κλειδί είναι προαιρετικό στο SQLiteΌταν παραλείψετε ένα, SQLite διατηρεί ένα κρυφό rowid 64-bit που προσδιορίζει κάθε γραμμή. Οι περιορισμοί στηλών, όπως PRIMARY KEY, UNIQUE και NOT NULL, είναι όλοι προαιρετικοί όταν ορίζετε έναν πίνακα.

Από προεπιλογή, όχι. SQLite χρησιμοποιεί δυναμική typing με συγγένεια τύπου, έτσι ώστε μια στήλη να δέχεται τιμές σχεδόν οποιουδήποτε τύπου ανεξάρτητα από τον δηλωμένο τύπο της. Για να επιβάλετε αυστηρό έλεγχο, δημιουργήστε τον πίνακα ως πίνακα STRICT, που προστίθεται στο SQLite 3.37.

Ναι. Οι βοηθοί μετατροπής κειμένου σε SQL με τεχνητή νοημοσύνη μετατρέπουν μια απλή αγγλική περιγραφή των δεδομένων σας σε προτάσεις CREATE TABLE με στήλες, τύπους δεδομένων και κλειδιά. Η ακρίβεια βελτιώνεται όταν δίνετε στο μοντέλο το υπάρχον σχήμα σας, καθώς στη συνέχεια επαναχρησιμοποιεί πραγματικά ονόματα πινάκων και στηλών.

Ναί. GitHub Copilot προτείνει ALTER TABLE, DROP TABLE και άλλα SQLite δηλώσεις ενσωματωμένες σε προγράμματα επεξεργασίας όπως VS CodeΔιαβάζει τα αρχεία μετεγκατάστασης και τα υπάρχοντα ερωτήματα, έτσι ώστε οι συμπληρώσεις του να ταιριάζουν με τα πραγματικά ονόματα πινάκων και στηλών σας.

Συνοψίστε αυτήν την ανάρτηση με: