Εισαγάγετε σε επιλεγμένη σύνταξη του μαντείου. Βασικά στοιχεία T-SQL. DML. Εισαγωγή πολλαπλών σειρών

Εκτός από τη δήλωση SELECT που συζητήθηκε προηγουμένως, η γλώσσα χειρισμού δεδομένων (DML) περιέχει τρεις άλλες δηλώσεις: INSERT, UPDATE και DELETE. Όπως η πρόταση SELECT, αυτές οι τρεις δηλώσεις λειτουργούν είτε σε πίνακες είτε σε προβολές. Αυτό το άρθρο εξετάζει τη δήλωση INSERT και οι άλλες δύο δηλώσεις εξετάζονται στο επόμενο άρθρο.

INSERT δήλωσηεισάγει σειρές (ή μέρη σειρών) σε έναν πίνακα. Υπάρχουν δύο διαφορετικές μορφές αυτής της εντολής:

INSERT tab_name [(col_list)] ΠΡΟΕΠΙΛΟΓΙΚΕΣ ΤΙΜΕΣ | ΤΙΜΕΣ (( ΠΡΟΕΠΙΛΟΓΗ | NULL | έκφραση ) [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] (select_statement | execute_statement) Συντακτικές συμβάσεις

Η πρώτη μορφή της εντολής σάς επιτρέπει να εισαγάγετε μια σειρά (ή μέρος της) στον πίνακα. Και η δεύτερη μορφή της πρότασης INSERT σάς επιτρέπει να εισαγάγετε σε έναν πίνακα το σύνολο αποτελεσμάτων μιας πρότασης SELECT ή μιας αποθηκευμένης διαδικασίας που εκτελείται από μια πρόταση EXECUTE. Η αποθηκευμένη διαδικασία πρέπει να επιστρέψει δεδομένα που θα εισαχθούν στον πίνακα. Όταν χρησιμοποιείται με μια πρόταση INSERT, μια δήλωση SELECT μπορεί να επιλέξει τιμές από διαφορετικό ή τον ίδιο πίνακα στον οποίο εισάγονται τα δεδομένα, εφόσον οι τύποι δεδομένων των αντίστοιχων στηλών είναι συμβατοί.

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

Εισαγωγή μιας μόνο σειράς

Και για τις δύο μορφές της δήλωσης INSERT, ο ρητός καθορισμός της λίστας στηλών είναι προαιρετικός. Η μη καταχώριση στηλών είναι το ίδιο με τον καθορισμό όλων των στηλών στον πίνακα.

Παράμετρος DEFAULT VALUESεισάγει τις προεπιλεγμένες τιμές για όλες τις στήλες. Οι στήλες με τον τύπο δεδομένων TIMESTAMP ή την ιδιότητα IDENTITY εισάγονται από προεπιλογή με τιμές που δημιουργούνται αυτόματα από το σύστημα. Για στήλες άλλων τύπων δεδομένων, εισάγεται η αντίστοιχη μη μηδενική προεπιλεγμένη τιμή εάν είναι διαθέσιμη ή NULL διαφορετικά. Εάν μια στήλη δεν επιτρέπει μηδενικές τιμές και δεν έχει οριστεί μια προεπιλεγμένη τιμή, η δήλωση INSERT αποτυγχάνει και εμφανίζεται ένα μήνυμα.

Το παρακάτω παράδειγμα εισάγει γραμμές στον πίνακα Employee στη βάση δεδομένων SampleDb, καταδεικνύοντας τη χρήση μιας δήλωσης INSERT για την εισαγωγή ενός μικρού όγκου δεδομένων στη βάση δεδομένων:

ΧΡΗΣΗ SampleDb; INSERT INTO Employee VALUES (34990, "Andrey", "Batonov", "d1"); INSERT INTO Employee VALUES (38640, "Alexey", "Vasin", "d3");

Υπάρχουν δύο διαφορετικοί τρόποιεισαγωγή τιμών σε μια νέα σειρά. Η δήλωση INSERT στο παρακάτω παράδειγμα χρησιμοποιεί ρητά τη λέξη-κλειδί NULL και εισάγει μια τιμή NULL στην αντίστοιχη στήλη:

ΧΡΗΣΗ SampleDb; INSERT INTO Employee VALUES (34991, "Andrey", "Batonov", NULL);

Για να εισαγάγετε τιμές σε ορισμένες (αλλά όχι όλες) στήλες ενός πίνακα, συνήθως χρειάζεται να προσδιορίσετε ρητά αυτές τις στήλες. Οι μη καθορισμένες στήλες πρέπει είτε να επιτρέπουν τιμές NULL είτε να έχουν οριστεί μια προεπιλεγμένη τιμή.

ΧΡΗΣΗ SampleDb; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Andrey", "Batonov");

Τα δύο προηγούμενα παραδείγματα είναι ισοδύναμα. Στον πίνακα Υπάλληλοι, η μόνη στήλη που επιτρέπει τιμές NULL είναι η στήλη ΤμήμαΑριθμός και όλες οι άλλες στήλες απενεργοποιήθηκαν από τον όρο NOT NULL στη δήλωση CREATE TABLE.

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

ΧΡΗΣΗ SampleDb; INSERT INTO Employee (DepartamentNumber, LastName, Id, FirstName) VALUES ("d1", "Batonov", 34993, "Andrey");

Εισαγωγή πολλαπλών σειρών

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

Ο νέος πίνακας MoscowDepartment που δημιουργήθηκε στο παραπάνω παράδειγμα έχει τις ίδιες στήλες με τον υπάρχοντα πίνακα Τμήματος, εκτός από τη στήλη Τοποθεσία που λείπει. Το υποερώτημα στη δήλωση INSERT επιλέγει όλες τις σειρές στον πίνακα Τμήμα για τις οποίες η τιμή της στήλης Τοποθεσία είναι "Μόσχα", οι οποίες στη συνέχεια εισάγονται στον νέο πίνακα που δημιουργήθηκε στην αρχή του ερωτήματος.

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

ΧΡΗΣΗ SampleDb; CREATE TABLE ManagerTeam(EmpId INT NOT NULL, ProjectNumber CHAR (4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Manager";

Πριν από την εισαγωγή σειρών χρησιμοποιώντας τη δήλωση INSERT, οι πίνακες MoscowDepartment και ManagerTeam (στα παραπάνω παραδείγματα) ήταν κενοί. Εάν ο πίνακας υπήρχε ήδη και περιείχε σειρές με δεδομένα, τότε θα προστέθηκαν νέες σειρές σε αυτόν.

Σε προηγούμενες ενότητες, εξετάσαμε το έργο της ανάκτησης δεδομένων από προ-δημιουργημένους πίνακες. Τώρα ήρθε η ώρα να καταλάβουμε πώς μπορούμε να δημιουργήσουμε/διαγράψουμε πίνακες, να προσθέσουμε νέες εγγραφές και να διαγράψουμε παλιές. Για τους σκοπούς αυτούς στο SQLΥπάρχουν χειριστές όπως: ΔΗΜΙΟΥΡΓΩ- δημιουργεί έναν πίνακα, ΑΛΛΑΖΩ- αλλάζει τη δομή του πίνακα, ΠΤΩΣΗ- διαγράφει έναν πίνακα ή ένα πεδίο, ΕΙΣΑΓΕΤΕ- προσθέτει δεδομένα στον πίνακα. Ας αρχίσουμε να εξοικειωνόμαστε με αυτήν την ομάδα χειριστών από τον χειριστή ΕΙΣΑΓΕΤΕ.

1. Προσθήκη ολόκληρων γραμμών

Όπως υποδηλώνει το όνομα, ο χειριστής ΕΙΣΑΓΕΤΕχρησιμοποιείται για την εισαγωγή (προσάρτηση) σειρών σε έναν πίνακα βάσης δεδομένων. Η προσθήκη μπορεί να γίνει με διάφορους τρόπους:

  • - προσθέστε μία πλήρη γραμμή
  • - προσθέστε μέρος μιας γραμμής
  • - προσθήκη αποτελεσμάτων ερωτήματος.

Έτσι, για να προσθέσουμε μια νέα σειρά σε έναν πίνακα, πρέπει να καθορίσουμε το όνομα του πίνακα, να παραθέσουμε τα ονόματα των στηλών και να καθορίσουμε την τιμή για κάθε στήλη χρησιμοποιώντας την κατασκευή ΕΙΣΑΓΩΓΗ ΣΤΟ όνομα_πίνακα (πεδίο1, πεδίο2 ...) ΑΞΙΕΣ (τιμή 1, τιμή 2...). Ας δούμε ένα παράδειγμα.

INSERT INTO Sellers (ID, Address, City, Seller_name, Country) VALUES("6", "1st Street", "Los Angeles", "Harry Monroe", "USA")

Μπορείτε επίσης να αλλάξετε τη σειρά των ονομάτων στηλών, αλλά ταυτόχρονα πρέπει να αλλάξετε τη σειρά των τιμών στην παράμετρο ΑΞΙΕΣ.

2. Προσθήκη μέρους των γραμμών

Στο προηγούμενο παράδειγμα, όταν χρησιμοποιείτε τον τελεστή ΕΙΣΑΓΕΤΕέχουμε επισημάνει ρητά τα ονόματα των στηλών του πίνακα. Χρησιμοποιώντας αυτήν τη σύνταξη, μπορούμε να παραλείψουμε ορισμένες στήλες. Αυτό σημαίνει ότι εισάγετε τιμές για ορισμένες στήλες αλλά δεν τις παρέχετε για άλλες. Για παράδειγμα:

INSERT INTO Sellers (ID, City, Seller_name) VALUES("6", "Λος Άντζελες", "Χάρι Μονρό")

Σε αυτό το παράδειγμα, δεν καθορίσαμε μια τιμή για δύο στήλες ΔιεύθυνσηΚαι Χώρα. Μπορείτε να εξαιρέσετε ορισμένες στήλες από τη δήλωση ΕΙΣΑΓΩΓΗ ΣΤΟ, εάν αυτό επιτρέπει τον ορισμό του πίνακα. Σε αυτήν την περίπτωση, πρέπει να πληρούται μία από τις προϋποθέσεις: αυτή η στήλη ορίζεται ως έγκυρη ΜΗΔΕΝΙΚΟ(απουσία οποιασδήποτε τιμής) ή την καθορισμένη προεπιλεγμένη τιμή στον ορισμό του πίνακα. Αυτό σημαίνει ότι εάν δεν έχει καθοριστεί τιμή, θα χρησιμοποιηθεί η προεπιλεγμένη τιμή. Εάν λείπει μια στήλη από έναν πίνακα που δεν επιτρέπει την εμφάνιση τιμών στις σειρές του ΜΗΔΕΝΙΚΟκαι δεν έχει οριστεί μια προεπιλεγμένη τιμή, το DBMS θα δημιουργήσει ένα μήνυμα σφάλματος και η σειρά δεν θα προστεθεί.

3. Προσθήκη επιλεγμένων δεδομένων

Στο προηγούμενο παράδειγμα, εισαγάγαμε δεδομένα σε πίνακες εισάγοντάς τα με μη αυτόματο τρόπο στο ερώτημα. Ωστόσο, ο χειριστής ΕΙΣΑΓΩΓΗ ΣΤΟμας επιτρέπει να αυτοματοποιήσουμε αυτή τη διαδικασία εάν θέλουμε να εισαγάγουμε δεδομένα από άλλο πίνακα. Για το σκοπό αυτό στην SQL υπάρχει μια τέτοια κατασκευή όπως INSERT INTO ... ΕΠΙΛΟΓΗ .... Αυτός ο σχεδιασμός σας επιτρέπει να επιλέγετε ταυτόχρονα δεδομένα από έναν πίνακα και να τα εισάγετε σε έναν άλλο. Ας υποθέσουμε ότι έχουμε άλλο τραπέζι Πωλητές_ΕΕμε έναν κατάλογο πωλητών των προϊόντων μας στην Ευρώπη και πρέπει να τους προσθέσουμε στον γενικό πίνακα Πωλητές. Η δομή αυτών των πινάκων είναι η ίδια (ο ίδιος αριθμός στηλών και τα ίδια ονόματα), αλλά τα δεδομένα είναι διαφορετικά. Για να γίνει αυτό, μπορούμε να γράψουμε το ακόλουθο ερώτημα:

INSERT INTO Sellers (ID, Address, City, Seller_name, Country) ΕΠΙΛΟΓΗΑναγνωριστικό, Διεύθυνση, Πόλη, Όνομα_Πωλητή, Χώρα ΑΠΟ Πωλητές_ΕΕ

Πρέπει να δώσετε προσοχή ώστε να μην επαναλαμβάνονται οι τιμές των εσωτερικών κλειδιών (πεδίο ταυτότητα), διαφορετικά θα προκύψει σφάλμα. Χειριστής ΕΠΙΛΕΓΩμπορεί επίσης να περιλαμβάνει προτάσεις ΟΠΟΥγια φιλτράρισμα δεδομένων. Θα πρέπει επίσης να σημειωθεί ότι το DBMS δεν δίνει προσοχή στα ονόματα των στηλών που περιέχονται στη δήλωση ΕΠΙΛΕΓΩ, μόνο η σειρά με την οποία είναι τακτοποιημένα είναι σημαντική για εκείνη. Επομένως, τα δεδομένα στην πρώτη καθορισμένη στήλη που επιλέχθηκε λόγω ΕΠΙΛΕΓΩ, θα συμπληρωθεί σε κάθε περίπτωση στην πρώτη στήλη του πίνακα Πωλητές, που καθορίζεται μετά τον χειριστή ΕΙΣΑΓΩΓΗ ΣΤΟ, ανεξάρτητα από το όνομα του πεδίου.

4. Αντιγραφή δεδομένων από τον έναν πίνακα στον άλλο

Συχνά όταν εργάζεστε με βάσεις δεδομένων, υπάρχει ανάγκη δημιουργίας αντιγράφων οποιωνδήποτε πινάκων με σκοπό τη δημιουργία αντιγράφων ασφαλείας ή την τροποποίηση. Να κάνω πλήρες αντίγραφοπίνακες στην SQL υπάρχει ξεχωριστός τελεστής ΕΠΙΛΟΓΗ ΣΕ. Για παράδειγμα, πρέπει να δημιουργήσουμε ένα αντίγραφο του πίνακα Πωλητές, θα χρειαστεί να γράψετε το αίτημα ως εξής:

SELECT * INTO Sellers_new FROM Sellers

Σε αντίθεση με το προηγούμενο σχέδιο INSERT INTO ... ΕΠΙΛΟΓΗ ...Όταν προστίθενται δεδομένα σε έναν υπάρχοντα πίνακα, η σχεδίαση αντιγράφει τα δεδομένα στον νέο πίνακα. Μπορείτε επίσης να πείτε ότι η πρώτη κατασκευή εισάγει δεδομένα και η δεύτερη εξάγει. Όταν χρησιμοποιείτε το σχέδιο ΕΠΙΛΟΓΗ ... ΣΕ ... ΑΠΟ ...Θα πρέπει να ληφθούν υπόψη τα ακόλουθα:

  • - μπορείτε να χρησιμοποιήσετε οποιεσδήποτε προτάσεις στον τελεστή ΕΠΙΛΕΓΩ, όπως ΟΜΑΔΑ ΑΠΟΚαι ΕΧΟΝΤΑΣ
  • - μπορείτε να χρησιμοποιήσετε μια ένωση για να προσθέσετε δεδομένα από πολλούς πίνακες
  • - Τα δεδομένα μπορούν να προστεθούν μόνο σε έναν πίνακα, ανεξάρτητα από το πόσους πίνακες έχουν ληφθεί.

Ομάδα προσθέτει σειρές στον πίνακαή προβολή του κύριου τραπεζιού.

Sql INSERT Σύνταξη εντολής

Εισαγωγή Σύνταξης Εντολής


Βασικές λέξεις-κλειδιά και παράμετροι της εντολής INSERT
  • σχήμα- αναγνωριστικό άδειας, που συνήθως ταιριάζει με το όνομα κάποιου χρήστη
  • προβολή τραπεζιού- το όνομα του πίνακα στον οποίο πρέπει να εισαχθούν οι σειρές. εάν έχει καθοριστεί μια προβολή, οι σειρές εισάγονται στον κύριο πίνακα της προβολής
  • υποερώτημα_1- ένα υποερώτημα που ο διακομιστής επεξεργάζεται με τον ίδιο τρόπο όπως μια προβολή
  • στήλη- πίνακας ή στήλη προβολής στην οποία εισάγεται η τιμή από τη φράση για κάθε σειρά που έχει εισαχθεί ΑΞΙΕΣή υποερώτημα? Εάν μία από τις στήλες του πίνακα παραλειφθεί από αυτήν τη λίστα, η τιμή στήλης για την εισαγόμενη γραμμή είναι η προεπιλεγμένη τιμή στήλης που καθορίστηκε κατά τη δημιουργία του πίνακα. Εάν μια λίστα στηλών παραλειφθεί εντελώς, η ρήτρα ΑΞΙΕΣή το ερώτημα πρέπει να καθορίσει τιμές για όλες τις στήλες του πίνακα
  • ΑΞΙΕΣ- ορίζει μια σειρά τιμών που θα εισαχθούν στον πίνακα ή την προβολή. το νόημα πρέπει να ορίζεται στην πρόταση ΑΞΙΕΣγια κάθε στήλη στη λίστα στηλών
  • υποερώτημα_2- ένα υποερώτημα που επιστρέφει σειρές που έχουν εισαχθεί στον πίνακα. η λίστα επιλογής αυτού του υποερωτήματος πρέπει να έχει τον ίδιο αριθμό στηλών με τη λίστα στηλών δήλωσης

Δήλωση με τη φράση ΑΞΙΕΣπροσθέτει μία μόνο σειρά στον πίνακα. Αυτή η γραμμή περιέχει τις τιμές που ορίζονται από τη φράση ΑΞΙΕΣ.
Δήλωση με υποερώτημααντί για φράση ΑΞΙΕΣπροσθέτει όλες τις σειρές που επιστρέφονται από το υποερώτημα στον πίνακα. Ο διακομιστής επεξεργάζεται υποερώτημακαι εισάγει κάθε επιστρεφόμενη σειρά στον πίνακα. Εάν το υποερώτημα δεν επιλέξει καμία σειρά, ο διακομιστής δεν εισάγει καμία γραμμή στον πίνακα.
Υποερώτημαμπορεί να έχει πρόσβαση σε οποιονδήποτε πίνακα ή προβολή, συμπεριλαμβανομένου του πίνακα βεβαιώσεων στόχου . Ο διακομιστής εκχωρεί τιμές σε πεδία σε νέες σειρές με βάση την εσωτερική θέση των στηλών στον πίνακα και τη σειρά των τιμών της φράσης ΑΞΙΕΣή στη λίστα επιλογής ερωτήματος. Εάν λείπουν κάποιες στήλες από τη λίστα στηλών, ο διακομιστής τους εκχωρεί τις προεπιλεγμένες τιμές που καθορίστηκαν κατά τη δημιουργία του πίνακα. Εάν οποιαδήποτε από αυτές τις στήλες έχει περιορισμό NOT NULL, τότε ο διακομιστής επιστρέφει ένα σφάλμα που υποδεικνύει ότι ο περιορισμός παραβιάστηκε και ακυρώνει την πρόταση INSERT.
Όταν εκδίδεται μια δήλωση INSERT, ενεργοποιείται κάθε έναυσμα INSERT που ορίζεται στον πίνακα.

ΕΙΣΑΓΩΓΗ ΣΤΟ Παράδειγμα 1

ΕΙΣΑΓΩΓΗ ΣΤΟτ.μ ΑΞΙΕΣ(50, "PRODUCTS", "SAN FRANCISCO");

ΕΙΣΑΓΩΓΗ ΣΤΟΠελάτες (πόλη, cname, cnum) ΑΞΙΕΣ('London', 'Hoffman', 2001);

ΕΙΣΑΓΩΓΗ ΣΤΟ Παράδειγμα 2
Η ακόλουθη εντολή αντιγράφει τα δεδομένα των εργαζομένων της εταιρείας των οποίων οι προμήθειες υπερβαίνουν το 25% του εισοδήματος στον πίνακα μπόνους:

ΕΙΣΑΓΩΓΗ ΣΤΟμπόνους SELECT ename, job, sal, comm FROM emp WHERE comm > 0,25 * sal;

ΕΙΣΑΓΩΓΗ ΣΤΟ Παράδειγμα 3
Εάν χρειάζεται να εισάγετε ΜΗΔΕΝΙΚΟ-τιμή, πρέπει να την καθορίσετε ως κανονική τιμή ως εξής:

ΕΙΣΑΓΩΓΗ ΣΤΟΠωλητές VALUES (1001,'Peel',NULL,12);

ΕΙΣΑΓΩΓΗ ΣΤΟ Παράδειγμα 4
Η εντολή μπορεί να χρησιμοποιηθεί για την ανάκτηση τιμών από έναν πίνακα και την τοποθέτησή τους σε έναν άλλο χρησιμοποιώντας ένα ερώτημα. Για να γίνει αυτό, αρκεί να αντικαταστήσετε την πρόταση ΑΞΙΕΣστο αντίστοιχο αίτημα:

ΕΙΣΑΓΩΓΗ ΣΤΟ Londonstaff SELECT * FROM Salespeople WHERE city = 'London';

INSERT MySQL

Για να εισαγάγετε νέες σειρές σε μια βάση δεδομένων MySQL, χρησιμοποιήστε Εντολή INSERT, παραδείγματα εντολών δίνονται παρακάτω:
ΕΙΣΑΓΩΓΗ ΣΤΟ Παράδειγμα 1.
Εισάγετε νέα γραμμήστον πίνακα table_name.

ΕΙΣΑΓΩΓΗ ΣΤΟ

ΕΙΣΑΓΩΓΗ ΣΤΟ Παράδειγμα 2.
Εισαγωγή νέας γραμμής στον πίνακα table_name που υποδεικνύει την εισαγωγή δεδομένων στις στήλες που χρειαζόμαστε.

ΕΙΣΑΓΩΓΗ ΣΤΟ table_name VALUES('1','165','0','name');

Στη βάση δεδομένων MySQLΕίναι δυνατή η εισαγωγή πολλών νέων γραμμών χρησιμοποιώντας μία εντολή.
ΕΙΣΑΓΩΓΗ ΣΤΟ Παράδειγμα 3.
Εισαγωγή πολλαπλών σειρών στον πίνακα_όνομα πίνακα.

ΕΙΣΑΓΩΓΗ ΣΤΟ table_name (tbl_id, chislo, chislotwo, όνομα) VALUES ('1','159','34','name1'), ('2','14','61','name2'), ('3 ','356','8','όνομα3');

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

sql ερώτημα INSERT INTO - σύνταξη ερωτήματος

Το ερώτημα sql INSERT INTO έχει την ακόλουθη σύνταξη:

INSERT INTO table_name (σε παρένθεση, εάν χρειάζεται, εισαγάγετε μια λίστα στηλών όπου θέλετε να εισαγάγετε δεδομένα) VALUES εισαγόμενα δεδομένα1, εισαγωγή δεδομένων2, εισαγόμενα δεδομένα3.

Μπορείτε να εισαγάγετε μια επιλογή IGNORE μεταξύ INSERT και INTRO. Δεν απαιτείται. Απαιτείται για την προστασία των πρωτευόντων κλειδιών κατά την επεξεργασία ενός πίνακα. Διαφορετικά, εάν συμβεί διπλασιασμός των πρωτευόντων κλειδιών κατά την επεξεργασία, τότε κατά την εισαγωγή της επιλογής IGNORE, η πρώτη σειρά με το πρωτεύον κλειδί θα παραμείνει στον πίνακα που επεξεργάζεται.Τα άλλα κύρια κλειδιά θα διαγραφούν. Από προεπιλογή, παραλείπουμε αυτήν την επιλογή.

Υπάρχουν προαιρετικές επιλογές LOW_PRIORITY και DELAYED. Καθορίζουν τις προτεραιότητες για την προσθήκη πληροφοριών στη βάση δεδομένων. Το πρώτο καθορίζει την αναμονή για την κυκλοφορία της βάσης δεδομένων, το δεύτερο σημαίνει την αποθήκευση πληροφοριών στην προσωρινή μνήμη.

Η γραμμή στο ερώτημα: INSERT με τη φράση VALUES θα σας επιτρέψει να προσθέσετε μία μόνο γραμμή στον πίνακα της βάσης δεδομένων. Η ρήτρα VALUES περιέχει τις τιμές αυτών των δεδομένων.

Μπορούν να καθοριστούν υποερωτήματα αντί για τη φράση VALUES. Το INSERT με ένα δευτερεύον ερώτημα προσθέτει τις σειρές που επιστρέφονται από το υποερώτημα στον πίνακα. Ο διακομιστής βάσης δεδομένων επεξεργάζεται το υποερώτημα και εισάγει όλες τις επιστρεφόμενες σειρές στον πίνακα. Ο διακομιστής δεν εισάγει σειρές εκτός εάν τις επιλέξει το δευτερεύον ερώτημα.

  • subquery_1 - ένα δευτερεύον ερώτημα που επεξεργάζεται ο διακομιστής με τον ίδιο τρόπο όπως η προβολή
  • Το subquery_2 είναι ένα δευτερεύον ερώτημα που επιστρέφει σειρές που έχουν εισαχθεί στον πίνακα. Η λίστα αυτού του υποερωτήματος πρέπει να έχει τον ίδιο αριθμό στηλών με τη λίστα στηλών INSERT.

Τα δευτερεύοντα ερωτήματα πρακτικά δεν χρησιμοποιούνται σε μια βάση δεδομένων MySQL.

Παραδείγματα ερωτήματος sql INSERT INTO σε μια βάση δεδομένων MySQL

Εισάγουμε νέες σειρές στη βάση δεδομένων MySQL χρησιμοποιώντας την εντολή INSERT INTRO.

Πρώτο παράδειγμα.

Εισαγάγετε νέες σειρές στον πίνακα_όνομα πίνακα.

INSERT INTO table_name VALUES ('2','145','1','name');

Αυτό σημαίνει ότι θέλουμε να εισαγάγουμε τις τιμές 2,145,1, name στις στήλες του πίνακα table_name. Δεδομένου ότι οι στήλες δεν καθορίζονται, οι τιμές συμπληρώνονται σε όλες τις στήλες του πίνακα.

Παράδειγμα δύο.

Εισαγάγετε πληροφορίες στις απαιτούμενες (καθορισμένες) στήλες του πίνακα όνομα_τραπέζης.

INSERT INTO table_name (client_customer, client_subclient, client_mail) VALUES ('name1','subname1',' [email προστατευμένο]"), ("όνομα2", "υποόνομα2"," [email προστατευμένο]"), ("όνομα 3", "υποόνομα 3", (" [email προστατευμένο]′);

Ο Igor Serov ειδικά για τον ιστότοπο "".

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

Η σύνταξη του τελεστή είναι η εξής:

    ΕΙΣΑΓΩΓΗ ΣΤΟ [ (,...) ]

    (ΑΞΙΕΣ(,…))

  1. | (ΠΡΟΕΠΙΛΟΓΙΚΕΣ ΤΙΜΕΣ)

Όπως μπορείτε να δείτε από την παρουσιαζόμενη σύνταξη, η λίστα των στηλών είναι προαιρετική (αυτό λέγεται αγκύλεςστην περιγραφή της σύνταξης). Εάν λείπει, η λίστα με τις εισαγόμενες τιμές πρέπει να είναι πλήρης, δηλαδή να παρέχει τιμές για όλες τις στήλες του πίνακα. Σε αυτήν την περίπτωση, η σειρά των τιμών πρέπει να αντιστοιχεί στη σειρά που καθορίζεται από τη δήλωση CREATE TABLE για τον πίνακα στον οποίο εισάγονται οι σειρές. Επιπλέον, αυτές οι τιμές πρέπει να είναι του ίδιου τύπου δεδομένων με τις στήλες στις οποίες έχουν εισαχθεί. Για παράδειγμα, εξετάστε το ενδεχόμενο να εισαγάγετε μια σειρά στον πίνακα Προϊόν που δημιουργήθηκε από την ακόλουθη δήλωση CREATE TABLE:

    προϊόν CREATE TABLE

    κατασκευαστής χαρακτήρας (1) ΟΧΙ NULL,

    μοντέλο varchar(4) ΟΧΙ NULL,

    τύπου varchar(7) ΟΧΙ NULL

Ας υποθέσουμε ότι θέλετε να προσθέσετε το μοντέλο υπολογιστή 1157 από τον κατασκευαστή Β σε αυτόν τον πίνακα. Αυτό μπορεί να γίνει με την ακόλουθη πρόταση:

    ΕΙΣΑΓΩΓΗ ΣΤΟ προϊόν

    VALUES ("B" , 1157 , "PC" ) ;

Εάν καθορίσετε μια λίστα στηλών, μπορείτε να αλλάξετε τη «φυσική» σειρά τους:

    INSERT INTO Product (τύπος, μοντέλο, κατασκευαστής)

    VALUES ("PC" , 1157 , "B" );

Φαίνεται ότι αυτό είναι ένα εντελώς περιττό χαρακτηριστικό, το οποίο κάνει το σχέδιο πιο δυσκίνητο. Ωστόσο, κερδίζει εάν οι στήλες έχουν προεπιλεγμένες τιμές. Εξετάστε την ακόλουθη δομή πίνακα:

    ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ προϊόντος_Δ

    κατασκευαστής χαρακτήρες (1) NULL,

    μοντέλο varchar(4) NULL,

    τύπος varchar (7 ) NOT NULL DEFAULT "PC"

Σημειώστε ότι εδώ οι τιμές όλων των στηλών έχουν προεπιλεγμένες τιμές (οι δύο πρώτες είναι NULL και η τελευταία στήλη είναι type - PC). Τώρα θα μπορούσαμε να γράψουμε:

    INSERT INTO Product_D (μοντέλο, κατασκευαστής)

    VALUES(1157, "B");

Σε αυτήν την περίπτωση, η τιμή που λείπει κατά την εισαγωγή μιας σειράς θα αντικατασταθεί από την προεπιλεγμένη τιμή - PC. Σημειώστε ότι εάν σε μια στήλη δεν δοθεί μια προεπιλεγμένη τιμή σε μια δήλωση CREATE TABLE και οριστεί περιορισμός NOT NULL για να απαγορεύσει τη χρήση του NULL σε αυτήν τη στήλη πίνακα, τότε η προεπιλεγμένη τιμή του NULL θεωρείται.

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

    ΕΙΣΑΓΩΓΗ ΣΤΟ Product_D

    ΤΙΜΕΣ ("B" , 1158 , ΠΡΟΕΠΙΛΟΓΗ ) ;

Δεδομένου ότι όλες οι στήλες έχουν προεπιλεγμένες τιμές, για να εισαγάγετε μια σειρά με προεπιλεγμένες τιμές, θα μπορούσατε να γράψετε:

    ΕΙΣΑΓΩΓΗ ΣΤΟ Product_D

    ΤΙΜΕΣ(ΠΡΟΕΠΙΛΟΓΗ, ΠΡΟΕΠΙΛΟΓΗ, ΠΡΟΕΠΙΛΟΓΗ);

Ωστόσο, για αυτή την περίπτωση υπάρχει ειδική κατασκευή DEFAULT VALUES (βλ. σύνταξη τελεστή), με την οποία ο παραπάνω τελεστής μπορεί να ξαναγραφεί στη μορφή

    ΕΙΣΑΓΩΓΗ ΣΤΟ Product_D ΠΡΟΕΠΙΛΟΓΙΚΕΣ ΤΙΜΕΣ ;

Σημειώστε ότι κατά την εισαγωγή μιας σειράς σε έναν πίνακα, ελέγχονται όλοι οι περιορισμοί που επιβάλλονται σε αυτόν τον πίνακα. Αυτοί μπορεί να είναι περιορισμοί πρωτεύοντος κλειδιού ή μοναδικού ευρετηρίου, περιορισμοί CHECK ή περιορισμοί ακεραιότητας αναφοράς. Εάν παραβιαστεί κάποιος περιορισμός, η εισαγωγή σειράς θα απορριφθεί. Ας εξετάσουμε τώρα την περίπτωση χρήσης υποερωτήματος. Ας υποθέσουμε ότι πρέπει να εισαγάγουμε στον πίνακα Product_D όλες τις σειρές από τον πίνακα Προϊόν που σχετίζονται με μοντέλα προσωπικών υπολογιστών (τύπος = 'PC'). Δεδομένου ότι οι τιμές που χρειαζόμαστε βρίσκονται ήδη σε κάποιον πίνακα, η μη αυτόματη δημιουργία σειρών που έχουν εισαχθεί είναι, πρώτον, αναποτελεσματική και, δεύτερον, μπορεί να επιτρέψει σφάλματα εισαγωγής. Η χρήση ενός δευτερεύοντος ερωτήματος επιλύει αυτά τα προβλήματα:

Η χρήση του συμβόλου «*» στο υποερώτημα δικαιολογείται σε αυτήν την περίπτωση, καθώς η σειρά των στηλών είναι ίδια και για τους δύο πίνακες. Εάν δεν συνέβαινε αυτό, θα έπρεπε να εφαρμοστεί μια λίστα στηλών είτε στη δήλωση INSERT, στο υποερώτημα ή και στα δύο, που θα ταιριάζει με τη σειρά των στηλών:

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

Σε αυτήν την περίπτωση, η στήλη τύπου του πίνακα Product_D θα αντικατασταθεί με την προεπιλεγμένη τιμή PC για όλες τις εισαγόμενες σειρές.

Σημειώστε ότι όταν χρησιμοποιείτε ένα υποερώτημα που περιέχει κατηγόρημα, θα εισαχθούν μόνο εκείνες οι σειρές για τις οποίες η τιμή κατηγόρησης είναι TRUE (όχι ΑΓΝΩΣΤΟ !). Με άλλα λόγια, εάν η στήλη τύπου στον πίνακα Προϊόν ήταν NULLable και αυτή η τιμή υπήρχε σε έναν αριθμό σειρών, τότε αυτές οι σειρές δεν θα εισαχθούν στον πίνακα Product_D.

Η τεχνητή τεχνική της χρήσης ενός δευτερεύοντος ερωτήματος που σχηματίζει μια γραμμή με τον όρο UNION ALL σας επιτρέπει να ξεπεράσετε τον περιορισμό στην εισαγωγή μιας γραμμής στην πρόταση INSERT όταν χρησιμοποιείτε τον κατασκευαστή γραμμής στον όρο VALUES. Έτσι, αν χρειαστεί να εισαγάγουμε πολλές σειρές χρησιμοποιώντας μία πρόταση INSERT, μπορούμε να γράψουμε:

    ΕΙΣΑΓΩΓΗ ΣΤΟ Product_D

    SELECT "B" AS maker, μοντέλο 1158 AS, τύπου "PC" AS

    ΕΝΩΣΗ ΟΛΩΝ

    SELECT "C" , 2190 , "Laptop"

    ΕΝΩΣΗ ΟΛΩΝ

    SELECT "D" , 3219 , "Printer" ;

Η χρήση του UNION ALL είναι προτιμότερο από το UNION ακόμη και αν είναι εγγυημένη η απουσία διπλότυπων σειρών, καθώς σε αυτήν την περίπτωση δεν θα πραγματοποιηθεί έλεγχος για την εξάλειψη των διπλότυπων.

Θα πρέπει να σημειωθεί ότι η εισαγωγή πολλαπλών πλειάδων με χρήση του κατασκευαστή γραμμών έχει ήδη εφαρμοστεί στο Σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων (DBMS), που αναπτύχθηκε από τη Microsoft Corporation.Structured Query Language) είναι μια καθολική γλώσσα υπολογιστή που χρησιμοποιείται για τη δημιουργία, τροποποίηση και χειρισμό δεδομένων σε σχεσιακές βάσεις δεδομένων. SQL Server 2008. Δεδομένης αυτής της δυνατότητας, το τελευταίο ερώτημα μπορεί να ξαναγραφεί ως εξής:

    ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΤΙΜΕΣ Product_D

    ("B", 1158, "PC"),

    ("C", 2190, "Laptop"),


Μπλουζα