Βασικές δηλώσεις SQL. Σύνταξη και παραδείγματα χρήσης της πρότασης SELECT. SQL δομημένης γλώσσας ερωτήματος

Η σύνταξη της δήλωσης SELECT είναι η εξής:

ΕΠΙΛΕΓΩ<список атрибутов>/* ΑΠΟ<список таблиц>

Οι αγκύλες υποδεικνύουν στοιχεία που ενδέχεται να μην υπάρχουν στο αίτημα.

Καταγράψτε όλους τους μαθητές.

ΕΠΙΛΟΓΗ * ΑΠΟ μαθητή

ΕΠΙΛΕΞΤΕ id_st, επώνυμο ΑΠΟ μαθητή

Σημειώστε ότι εάν προσθέσετε την ρήτρα ORDER BY by name σε αυτό το ερώτημα, η λίστα θα ταξινομηθεί κατά επώνυμο. Από προεπιλογή, η ταξινόμηση θεωρείται ότι είναι με αύξουσα σειρά. Εάν επιθυμείτε φθίνουσα σειρά, η λέξη DESC προστίθεται μετά το όνομα του χαρακτηριστικού.

Εμφάνιση λίστας βαθμών που έλαβε ένας μαθητής με κωδικό "1".

Δώστε μια λίστα με κωδικούς για μαθητές που έλαβαν τουλάχιστον ένα D ή C στις εξετάσεις.

Στην ρήτρα WHERE, μπορείτε να γράψετε μια έκφραση χρησιμοποιώντας αριθμητικοί τελεστέςσυγκρίσεις (<, >, κ.λπ.) και λογικούς τελεστές (AND, OR, NOT) όπως στις συμβατικές γλώσσες προγραμματισμού.

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

  • IN - είσοδος σε ένα συγκεκριμένο σύνολο τιμών.
  • BETWEEN – είσοδος σε ένα συγκεκριμένο εύρος τιμών.
  • LIKE – δοκιμή αντιστοίχισης προτύπων.
  • IS NULL - ελέγξτε για απροσδιόριστη τιμή.

Ο τελεστής IN χρησιμοποιείται για να ελέγξει εάν μια τιμή περιλαμβάνεται σε ένα σύνολο. Ναι, αίτημα

δίνει το ίδιο αποτέλεσμα με το παραπάνω ερώτημα (θα εμφανίζει τα αναγνωριστικά όλων των υποψηφίων που έλαβαν τουλάχιστον ένα D ή C στις εξετάσεις).

Το ίδιο αποτέλεσμα μπορεί να επιτευχθεί χρησιμοποιώντας τον τελεστή BETWEEN:

Καταγράψτε όλους τους μαθητές των οποίων τα επώνυμα αρχίζουν με το γράμμα Α.

Σε αυτήν την περίπτωση, είναι βολικό να χρησιμοποιήσετε τον τελεστή LIKE.

Ο τελεστής LIKE ισχύει αποκλειστικά για πεδία χαρακτήρων και σας επιτρέπει να προσδιορίσετε εάν η τιμή ενός πεδίου ταιριάζει με ένα μοτίβο. Το μοτίβο μπορεί να περιέχει ειδικούς χαρακτήρες:

_ (υπογράμμιση) – αντικαθιστά οποιονδήποτε μεμονωμένο χαρακτήρα.

% (σύμβολο τοις εκατό) – αντικαθιστά μια ακολουθία οποιουδήποτε αριθμού χαρακτήρων.

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

  • MIN – ελάχιστη τιμή στη στήλη.
  • MAX – μέγιστη τιμή στη στήλη.
  • SUM - το άθροισμα των τιμών στη στήλη.
  • AVG - μέση τιμή στη στήλη.
  • COUNT – ο αριθμός των μη NULL τιμών στη στήλη.

Το ακόλουθο ερώτημα υπολογίζει τον μέσο όρο όλων των βαθμολογιών που έλαβαν οι μαθητές στις εξετάσεις.

ΕΠΙΛΟΓΗ AVG(σήμανση) ΑΠΟ mark_st

Φυσικά, μπορείτε να χρησιμοποιήσετε αθροιστικές συναρτήσειςμαζί με την ρήτρα WHERE:

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

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

Πίνακας περιεχομένων εγγράφων

Οι λειτουργίες οποιουδήποτε DBMS περιλαμβάνουν:

  • δημιουργία, διαγραφή, αλλαγή βάσης δεδομένων (DB).
  • προσθήκη, αλλαγή, διαγραφή, εκχώρηση δικαιωμάτων χρήστη.
  • εισαγωγή, διαγραφή και αλλαγή δεδομένων στη βάση δεδομένων (πίνακες και εγγραφές)·
  • λήψη δεδομένων από τη βάση δεδομένων.
Μόνο οι διαχειριστές του DBMS ή οι προνομιούχοι χρήστες έχουν πρόσβαση στις δύο πρώτες λειτουργίες. Ας δούμε πώς λύνονται τα δύο τελευταία προβλήματα (στην πραγματικότητα, υπάρχουν επτά προβλήματα).

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

1. ΔΗΜΙΟΥΡΓΙΑ ΔΗΛΩΣΗΣ ΠΙΝΑΚΑ

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

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

Στην έκδοση 3.23 της Mysql, μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί ΠΡΟΣΩΡΙΝΗ όταν δημιουργείτε έναν πίνακα. Ο προσωρινός πίνακας διαγράφεται αυτόματα όταν τελειώσει η σύνδεση και το όνομά του ισχύει μόνο για τη διάρκεια της σύνδεσης. Αυτό σημαίνει ότι δύο διαφορετικές συνδέσεις μπορούν να χρησιμοποιούν προσωρινούς πίνακες με το ίδιο όνομα χωρίς να έρχονται σε διένεξη μεταξύ τους ή με έναν υπάρχοντα πίνακα με το ίδιο όνομα (ο υπάρχων πίνακας είναι κρυφός μέχρι να διαγραφεί ο προσωρινός πίνακας). Στην Mysql 4.0.2, πρέπει να έχετε το δικαίωμα ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΣΩΡΙΝΩΝ ΠΙΝΑΚΩΝ για να δημιουργήσετε προσωρινούς πίνακες.

Στην Mysql 3.23 και μεταγενέστερες εκδόσεις, μπορείτε να χρησιμοποιήσετε τις λέξεις-κλειδιά ΕΑΝ ΔΕΝ ΥΠΑΡΧΕΙ για να αποτρέψετε την εμφάνιση σφάλματος εάν υπάρχει ήδη ο καθορισμένος πίνακας. Σημειώστε ότι η ταυτότητα των δομών αυτών των πινάκων δεν ελέγχεται.

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

1.1. Σύνταξη

ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙΟΥ
όνομα_πίνακα [(στήλη_ορισμός,...)]
[επιλογές_πίνακα]

Η έκφραση στήλη_ορισμός παραθέτει ποιες στήλες πρέπει να δημιουργηθούν στον πίνακα. Κάθε στήλη πίνακα μπορεί να είναι κενή (NULL), να έχει μια προεπιλεγμένη τιμή, να είναι κλειδί ή αυτόματη αύξηση. Επιπλέον, για κάθε στήλη πρέπει να αναφέρεται το είδος των δεδομένων που θα αποθηκευτούν σε αυτήν. Εάν δεν έχει καθοριστεί ούτε NULL ούτε NOT NULL, τότε η στήλη ερμηνεύεται σαν να είχε καθοριστεί NULL. Εάν ένα πεδίο έχει επισημανθεί ως αυτόματη αύξηση (AUTO_INCREMENT), τότε η τιμή του αυξάνεται αυτόματα κατά ένα κάθε φορά που προστίθενται δεδομένα στον πίνακα και μια κενή τιμή (NULL, δηλ. τίποτα) γράφεται σε αυτό το πεδίο
καταγράφηκε) ή 0. Μπορεί να υπάρχει μόνο μία αυτόματη αύξηση σε έναν πίνακα και πρέπει να ευρετηριαστεί.

1.2. Ακολουθία

Το AUTO_INCREMENT ξεκινά από 1. Η παρουσία αυτόματης αύξησης είναι ένα από τα χαρακτηριστικά της Mysql. Επίσημα, η περιγραφή της στήλης (column_definition) μοιάζει με αυτό:

τύπος ονόματος στήλης

Ο τύπος στήλης (πληκτρολογήστε την έκφραση column_definition) μπορεί να είναι ένας από τους παρακάτω:

  • ακέραιος: INT[(μήκος)]
  • πραγματικό: ΠΡΑΓΜΑΤΙΚΟ[(μήκος, δεκαδικοί)]
  • χαρακτήρας: CHAR(μήκος) και VARCHAR(μήκος)
  • ημερομηνία και ώρα: DATE και TIME
  • για εργασία με μεγάλα αντικείμενα: BLOB
  • κείμενο: ΚΕΙΜΕΝΟ
  • απαριθμήσιμο σύνολο: ENUM(τιμή1,τιμή2,τιμή3,...) και SET(τιμή1,τιμή2,τιμή3,...)
Για μια πλήρη λίστα τύπων, ανατρέξτε στην τεκμηρίωση Mysql.

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

ΚΥΡΙΟ ΚΛΕΙΔΙ (όνομα_στήλης, ...)


ή

KEY [όνομα_ευρετηρίου] (όνομα_στήλης,...)


ή

INDEX [όνομα_δείκτη] (όνομα_στήλης,...)


ή

ΜΟΝΑΔΙΚΟ [όνομα_ευρετηρίου]


ή

ΠΛΗΡΕΣ ΚΕΙΜΕΝΟ [όνομα_ευρετηρίου]
(ευρετήριο_όνομα_στήλης,...)


ή


ΞΕΝΟ ΚΛΕΙΔΙ [index_name]
(ευρετήριο_όνομα_στήλης,...)


ή

ΕΛΕΓΧΟΣ (expr)

Κατά τον καθορισμό όλων αυτών των στοιχείων, μια λίστα πεδίων (στήλες) που θα συμπεριληφθούν στο ευρετήριο, το κλειδί ή τον περιορισμό καθορίζεται ως εξής:

Όνομα_στήλης [(μήκος_ευρετηρίου)]
Το ΞΕΝΟ ΚΛΕΙΔΙ, ο ΕΛΕΓΧΟΣ και οι ΑΝΑΦΟΡΕΣ στην πραγματικότητα δεν κάνουν τίποτα στο Mysql. Προστίθενται μόνο για συμβατότητα με άλλους διακομιστές SQL.

Επομένως, δεν θα σταθούμε σε αυτά.

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

  • τύπος πίνακα: TYPE = (BDB | HEAP | ISAM | Inno DB | MERGE | MRG_MYISAM | MYISAM)
  • αρχική τιμή του μετρητή αυτόματης αύξησης: AUTO_INCREMENT = αριθμός
  • μέσο μήκος σειρών στον πίνακα: AVG_ROW_LENGTH = αριθμός
  • σχόλια πίνακα (συμβολοσειρά 60 χαρακτήρων): COMMENT = "σειρά" μέγιστος και ελάχιστος αναμενόμενος αριθμός σειρών: MAX_ROWS = αριθμός και MIN_ROWS = αριθμός
Και το τελευταίο (και πάλι προαιρετικό) στοιχείο της εντολής CREATE είναι η έκφραση SELECT (select_expression). Η σύνταξη είναι:

ΕΠΙΛΕΓΩ...
(οποιαδήποτε έγκυρη έκφραση SELECT)

Κατά τη δημιουργία ενός πίνακα, εάν καθορίσετε μια έκφραση SELECT στην εντολή CREATE, τότε όλα τα πεδία που λαμβάνονται από την επιλογή προστίθενται στον πίνακα που δημιουργήθηκε.

Παράδειγμα 10.1. Δημιουργία του πίνακα Πρόσωπα

Mysql>CREATE TABLE Persons
(ID INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR ( 50 ), επώνυμο
VARCHAR( 100 ), death_date INT,
περιγραφή TEXT, φωτογραφία INT,
υπηκοότητα CHAR ( 50 ) ΠΡΟΕΠΙΛΟΓΗ "Ρωσία");

Χρησιμοποιώντας την εντολή SHOW για τη Mysql, μπορείτε να προβάλετε υπάρχουσες βάσεις δεδομένων, πίνακες σε μια βάση δεδομένων και πεδία σε έναν πίνακα.

Εμφάνιση όλων των βάσεων δεδομένων:

Mysql>ΕΜΦΑΝΙΣΗ βάσεων δεδομένων.

Κάντε τη βάση δεδομένων του βιβλίου τρέχουσα και εμφανίστε όλους τους πίνακες σε αυτήν:

Mysql>χρησιμοποιήστε το βιβλίο.
Mysql>εμφάνιση πινάκων.


Εμφάνιση όλων των στηλών στον πίνακα Πρόσωπα:

Mysql> εμφάνιση στηλών από Πρόσωπα.

2. Δήλωση DOP TABLE

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

Σύνταξη:

ΑΠΟΣΤΟΛΗ TABLE table_name
[, table_name,...]

Στην Mysql έκδοση 3.22 και μεταγενέστερη, μπορείτε να χρησιμοποιήσετε τις λέξεις-κλειδιά ΑΝ ΥΠΑΡΧΕΙ για να δημιουργήσετε ένα σφάλμα εάν δεν υπάρχουν οι καθορισμένοι πίνακες.

Οι επιλογές RESTRICT και CASCADE διευκολύνουν τη μεταφορά ενός προγράμματος από άλλα DBMS. Δεν χρησιμοποιούνται αυτήν τη στιγμή.

Mysql> ΑΠΟΣΤΟΛΗ ΠΙΝΑΚΑ ΑΝ ΥΠΑΡΧΕΙ Πρόσωπα,
Αντικείμενα, δοκιμή.

Παράδειγμα 10.2. Χρησιμοποιώντας τη δήλωση DROP TABLE

3. ALTER TABLE statement

Η δήλωση ALTER TABLE παρέχει τη δυνατότητα αλλαγής της δομής ενός υπάρχοντος πίνακα. Για παράδειγμα, μπορείτε να προσθέσετε ή να αφαιρέσετε στήλες, να δημιουργήσετε ή να καταστρέψετε ευρετήρια ή να μετονομάσετε στήλες ή τον ίδιο τον πίνακα. Μπορείτε επίσης να αλλάξετε το σχόλιο για τον πίνακα και τον τύπο του.

Σύνταξη:

ALTER TABLE table_name
alter_specification
[, alter_specification ...]

Μπορείτε να κάνετε τις ακόλουθες αλλαγές στον πίνακα (όλες αυτές καταγράφονται στο alter_specification):

  • προσθέτοντας ένα πεδίο:

ΠΡΟΣΘΗΚΗ στήλης_ορισμού
ή
ADD(column_definition,
στήλη_ορισμός,...)

  • προσθήκη ευρετηρίων:

ΠΡΟΣΘΗΚΗ ΕΥΡΕΤΗΡΙΟΥ [όνομα_ευρετηρίου] (όνομα_στήλης,...) ή ΠΡΟΣΘΗΚΗ
ΚΥΡΙΟ ΚΛΕΙΔΙ (όνομα_στήλης,...) ή ΠΡΟΣΘΗΚΗ ΜΟΝΑΔΙΚΟΥ
[όνομα_ευρετηρίου] (όνομα_στήλης,...) ή ΠΡΟΣΘΗΚΗ ΠΛΗΡΟΥ ΚΕΙΜΕΝΟΥ
[όνομα_ευρετηρίου] (όνομα_στήλης,...)

  • αλλαγή πεδίου:

ALTER column_name (SET DEFAULT κυριολεκτικά | DROP DEFAULT ) ή
ΑΛΛΑΓΗ old_column_name column_definition ή
TODIFY στήλη_ορισμός

  • διαγραφή πεδίου, ευρετηρίου, κλειδιού:

DROP στήλη_όνομα
ΑΠΟΣΤΟΛΗ ΠΡΩΤΕΥΝΟΥ ΚΛΕΙΔΙΟΥ
ΑΠΟΣΤΟΛΗ INDEX index_name

  • μετονομασία πίνακα:

RENAME new_table_name

  • αναδιάταξη πεδίων πίνακα:

ΠΑΡΑΓΓΕΛΙΑ ΑΝΑ Πεδίο
ή
table_options

Εάν μια δήλωση ALTER TABLE χρησιμοποιείται για την αλλαγή του ορισμού τύπου μιας στήλης, αλλά το DESCRIBE table_name υποδεικνύει ότι η στήλη δεν έχει αλλάξει, τότε η Mysql μπορεί να αγνοεί την τροποποίηση για έναν από τους λόγους που περιγράφονται στην ειδική ενότητα της τεκμηρίωσης. Για παράδειγμα, εάν προσπαθήσετε να αλλάξετε μια στήλη VARCHAR σε CHAR, η Mysql θα συνεχίσει να χρησιμοποιεί το VARCHAR εάν ο εν λόγω πίνακας περιέχει άλλες στήλες μεταβλητού μήκους.

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

Οι λειτουργίες ενημέρωσης και εγγραφής σε αυτόν τον πίνακα αναστέλλονται μέχρι να είναι έτοιμος ο νέος πίνακας. Θα πρέπει να σημειωθεί ότι όταν χρησιμοποιείτε οποιαδήποτε άλλη επιλογή για το ALTER TABLE εκτός από το RENAME, η Mysql θα δημιουργεί πάντα έναν προσωρινό πίνακα, ακόμα κι αν τα δεδομένα δεν χρειάζεται αυστηρή αντιγραφή (για παράδειγμα, όταν αλλάζει το όνομα μιας στήλης).

Παράδειγμα 10.3. Ας προσθέσουμε ένα πεδίο στον δημιουργημένο πίνακα Πρόσωπα για να καταγράψουμε το έτος γέννησης του ατόμου:

Mysql> ALTER TABLE Persons
ΠΡΟΣΘΗΚΗ ΑΚΡΑΙΟΥ ΒΔΗΜΕΡΑΣ ΜΕΤΑ το επώνυμο.

Παράδειγμα 10.3. Προσθήκη πεδίου στον πίνακα Πρόσωπα για την καταγραφή του έτους γέννησης ενός ατόμου

Έτσι, μάθαμε πώς να εργαζόμαστε με πίνακες: να τους δημιουργείτε, να τους διαγράψετε και να τους τροποποιήσετε.

Τώρα ας δούμε πώς να κάνουμε το ίδιο με τα δεδομένα που είναι αποθηκευμένα σε αυτούς τους πίνακες.

4. Δήλωση SELECT

Η δήλωση SELECT χρησιμοποιείται για την ανάκτηση σειρών που έχουν επιλεγεί από έναν ή περισσότερους πίνακες. Δηλαδή, με τη βοήθειά του καθορίζουμε τις στήλες ή τις εκφράσεις που πρέπει να ανακτηθούν (select_expressions), τους πίνακες (table_references) από τους οποίους πρέπει να γίνει η επιλογή και, ενδεχομένως, την προϋπόθεση (where_definition) που πρέπει να πληρούν τα δεδομένα σε αυτές τις στήλες , και τη σειρά με την οποία πρέπει να εκδοθούν αυτά τα δεδομένα.

Επιπλέον, η δήλωση SELECT μπορεί να χρησιμοποιηθεί για την ανάκτηση σειρών που έχουν υπολογιστεί χωρίς αναφορά σε κανέναν πίνακα. Για παράδειγμα, για να υπολογίσετε με τι ισούται το 2*2, απλά γράφετε
Mysql> SELECT 2*2;

Μια απλοποιημένη δομή της δήλωσης SELECT μπορεί να αναπαρασταθεί ως εξής:
SELECT select_expression1, select_expression2,
...

Οι αγκύλες σημαίνουν ότι ο τελεστής που περιέχουν είναι προαιρετικός σημαίνει μια λίστα πιθανών επιλογών. Μετά τη λέξη-κλειδί ORDER BY, υποδείξτε το όνομα της στήλης, τον αριθμό (ανυπόγραφο ακέραιος) ή τον τύπο και τη μέθοδο ταξινόμησης (αύξουσα - ASC ή φθίνουσα - DESC). Η προεπιλεγμένη σειρά είναι αύξουσα.

Όταν γράφουμε "*" στο select_expression, σημαίνει ότι επιλέγουμε όλες τις στήλες. Εκτός από το "*", συναρτήσεις όπως μέγιστο, ελάχιστο και μέσο μπορούν να χρησιμοποιηθούν σε select_expressions.

Παράδειγμα 10.4. Επιλέξτε από τον πίνακα Πρόσωπα όλα τα δεδομένα για τα οποία το πεδίο first_name έχει την τιμή "Alexander":

Παράδειγμα 10.4. Χρησιμοποιώντας τη δήλωση SELECT

Επιλέξτε τον τίτλο και την περιγραφή του αντικειμένου με αριθμό 10:

5. INSERT δήλωση

Η δήλωση INSERT εισάγει νέες σειρές σε έναν υπάρχοντα πίνακα. Ο χειριστής έχει διάφορες μορφές. Η παράμετρος table_name σε όλες αυτές τις φόρμες καθορίζει τον πίνακα στον οποίο πρέπει να γραφτούν οι σειρές. Οι στήλες για τις οποίες καθορίζονται οι τιμές καθορίζονται στη λίστα ονομάτων στηλών (όνομα_στήλης) ή στο τμήμα SET.

Σύνταξη:


ΑΞΙΕΣ (έκφραση,...),(...),...
Αυτή η μορφή της εντολής INSERT εισάγει σειρές σύμφωνα με τις ακριβείς τιμές που καθορίζονται στην εντολή. Οι στήλες παρατίθενται σε παρένθεση μετά το όνομα του πίνακα και οι τιμές τους παρατίθενται μετά τη λέξη-κλειδί VALUES.

Για παράδειγμα:

Mysql> INSERT INTO Personas
(επώνυμο, ημέρα) VALUES
("Ιβάνοφ", "1934");


θα εισαγάγει μια σειρά στον πίνακα Πρόσωπα στον οποίο οι τιμές του επωνύμου (επώνυμο) και της ημερομηνίας γέννησης (bday) θα οριστούν αντίστοιχα ως "Ivanov" και
«1934».
  • ΕΙΣΑΓΩ
όνομα_πίνακα [(όνομα_στήλης,...)]
ΕΠΙΛΕΓΩ...

Αυτή η μορφή της εντολής INSERT εισάγει σειρές επιλεγμένες από άλλον πίνακα ή πίνακες.

Για παράδειγμα:


θα εισαγάγει στον πίνακα Artifacts στο πεδίο "author" την τιμή του αναγνωριστικού που έχει επιλεγεί από τον πίνακα Persons, υπό την προϋπόθεση ότι το επώνυμο του ατόμου είναι Ivanov.

    ΕΙΣΑΓΩ
    όνομα_πίνακα
    SET στήλη_όνομα=έκφραση,
    στήλη_όνομα=έκφραση, ...

Για παράδειγμα:

Mysql> INSERT INTO Personas
SET last_name="Petrov",
first_name="Ιβάν";


Αυτή η εντολή θα εισαγάγει την τιμή "Petrov" στον πίνακα "Persons" στο πεδίο last_name και τη συμβολοσειρά "Ivan" στο πεδίο first_name.

Η φόρμα INSERT...VALUES με λίστα πολλαπλών τιμών υποστηρίζεται στην έκδοση Mysql 3.22.5 και μεταγενέστερη. Η έκφραση σύνταξη στήλη_όνομα=έκφραση υποστηρίζεται στην έκδοση Mysql 3.22.10 και μεταγενέστερη.

Ισχύουν οι ακόλουθες συμφωνίες.

  • Εάν μια λίστα στηλών δεν έχει καθοριστεί για INSERT...VALUES ή INSERT...SELECT, τότε οι τιμές για όλες τις στήλες πρέπει να καθοριστούν στη λίστα VALUES() ή ως αποτέλεσμα της λειτουργίας SELECT. Εάν η σειρά των στηλών σε έναν πίνακα είναι άγνωστη, μπορείτε να χρησιμοποιήσετε το DESCRIBE table_name για να τη λάβετε.
  • Οποιαδήποτε στήλη στην οποία δεν δίνεται ρητά τιμή θα οριστεί στην προεπιλεγμένη τιμή της. Για παράδειγμα, εάν μια δεδομένη λίστα στηλών δεν καθορίζει όλες τις στήλες σε έναν δεδομένο πίνακα, τότε οι στήλες που δεν αναφέρονται ορίζονται στις προεπιλεγμένες τιμές τους.
  • Η έκφραση μπορεί να αναφέρεται σε οποιαδήποτε στήλη που είχε προηγουμένως συμπεριληφθεί στη λίστα τιμών. Για παράδειγμα, μπορείτε να καθορίσετε τα εξής:

Mysql>
ΤΙΜΕΣ ( 15 ,col1* 2 );

Αλλά δεν μπορείτε να προσδιορίσετε:

Mysql> INSERT INTO table_name (col1,col2)
VALUES(col2* 2 ,15 );

Δεν έχουμε συζητήσει ακόμη τρεις προαιρετικές παραμέτρους που υπάρχουν και στις τρεις μορφές της εντολής: LOW_PRIORITY, DELAYED και IGNORE.

Οι παράμετροι LOW_PRIORITY και DELAYED χρησιμοποιούνται όταν ένας μεγάλος αριθμός χρηστών εργάζεται με τον πίνακα. Απαιτούν να δοθεί προτεραιότητα σε μια δεδομένη λειτουργία έναντι των λειτουργιών άλλων χρηστών. Εάν έχει καθοριστεί η λέξη-κλειδί LOW_PRIORITY, η εκτέλεση αυτής της εντολής INSERT θα καθυστερήσει έως ότου οι άλλοι πελάτες ολοκληρώσουν την ανάγνωση του πίνακα. Σε αυτήν την περίπτωση, ο πελάτης πρέπει να περιμένει έως ότου ολοκληρωθεί η εντολή εισαγωγής, κάτι που μπορεί να διαρκέσει σημαντικό χρόνο εάν ο πίνακας χρησιμοποιείται πολύ. Αντίθετα, η εντολή INSERT DELAYED επιτρέπει στον πελάτη να συνεχίσει τη λειτουργία αμέσως, ανεξάρτητα από άλλους χρήστες.

Εάν η λέξη-κλειδί IGNORE έχει καθοριστεί στην εντολή INSERT, τότε τυχόν σειρές που έχουν διπλότυπα ΚΥΡΙΑ ή ΜΟΝΑΔΙΚΑ κλειδιά σε αυτόν τον πίνακα θα αγνοηθούν και δεν θα εισαχθούν στον πίνακα. Εάν δεν καθορίσετε IGNORE, αυτή η λειτουργία εισαγωγής ματαιώνεται όταν συναντήσει μια σειρά που έχει διπλότυπη τιμή για ένα υπάρχον κλειδί.

6. ΕΝΗΜΕΡΩΣΗ Δήλωσης

Σύνταξη:

Η δήλωση UPDATE ενημερώνει τις τιμές των υπαρχουσών στηλών του πίνακα για να ταιριάζουν με τις εισαγόμενες τιμές. Η δήλωση SET καθορίζει ποιες στήλες πρέπει να τροποποιηθούν και ποιες τιμές πρέπει να οριστούν σε αυτές. Ο όρος WHERE, εάν υπάρχει, καθορίζει ποιες σειρές ενημερώνονται. Διαφορετικά, όλες οι σειρές ενημερώνονται. Εάν έχει καθοριστεί μια παράσταση ORDER BY, οι σειρές θα ενημερωθούν με τη σειρά που καθορίζεται σε αυτήν.

Εάν έχει καθοριστεί η λέξη-κλειδί LOW_PRIORITY, η εκτέλεση αυτής της εντολής UPDATE καθυστερεί έως ότου οι άλλοι πελάτες ολοκληρώσουν την ανάγνωση του πίνακα.

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

Η διανομή PHP περιλαμβάνει μια επέκταση που περιέχει ενσωματωμένες συναρτήσεις για εργασία με τη βάση δεδομένων Mysql. Σε αυτή τη διάλεξη θα εξοικειωθούμε με ορισμένες βασικές λειτουργίες για την εργασία με Mysql, οι οποίες θα απαιτηθούν για την επίλυση των προβλημάτων δημιουργίας διεπαφών ιστού με σκοπό την εμφάνιση και τη συμπλήρωση της βάσης δεδομένων. Γεννιέται το ερώτημα, γιατί να δημιουργήσουμε τέτοιες διεπαφές; Άτομα που δεν είναι εξοικειωμένα με τη γλώσσα ερωτημάτων SQL θα μπορούσαν να εισάγουν πληροφορίες στη βάση δεδομένων και να προβάλουν το περιεχόμενό της. Όταν εργάζεστε με μια διεπαφή ιστού, για να προσθέσετε πληροφορίες σε μια βάση δεδομένων, ένα άτομο πρέπει απλώς να εισαγάγει αυτά τα δεδομένα σε μια φόρμα html και να τα στείλει στον διακομιστή και το σενάριό μας θα κάνει τα υπόλοιπα. Και για να δείτε τα περιεχόμενα των πινάκων, απλώς κάντε κλικ στον σύνδεσμο και μεταβείτε στη σελίδα που θέλετε.

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

  • τίτλος (τίτλος);
  • συγγραφέας (συγγραφέας);
  • περιγραφή (περιγραφή);
  • εναλλακτική ονομασία (εναλλακτική)·
  • εικόνα (φωτογραφία).
Ο τίτλος και ο εναλλακτικός τίτλος είναι συμβολοσειρές με μήκος μικρότερο από 255 χαρακτήρες (δηλαδή είναι τύπου VARCHAR(255)), η περιγραφή είναι πεδίο κειμένου (τύπου TEXT) και τα πεδία συγγραφέα και εικόνας περιέχουν τα αναγνωριστικά του συγγραφέα από τη συλλογή Persons και εικόνες του εκθέματος από τη συλλογή Images, αντίστοιχα.

Βασικές δηλώσεις SQL. Σύνταξη και παραδείγματα χρήσης της πρότασης SELECT.

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

Οι ακόλουθες ομάδες τελεστών μπορούν να διακριθούν (δεν αναφέρονται όλοι οι τελεστές SQL):

Δηλώσεις DDL (Data Definition Language) - δηλώσεις για τον ορισμό αντικειμένων βάσης δεδομένων

· ΔΗΜΙΟΥΡΓΙΑ ΣΧΗΜΑΤΟΣ - δημιουργήστε ένα σχήμα βάσης δεδομένων

· DROP SHEMA - διαγράψτε ένα σχήμα βάσης δεδομένων

· ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ - δημιουργήστε έναν πίνακα

ALTER TABLE - αλλάξτε τον πίνακα

· ΑΠΟΡΡΙΨΗ ΠΙΝΑΚΑ - διαγραφή πίνακα

· ΔΗΜΙΟΥΡΓΙΑ ΤΟΜΕΑ - δημιουργήστε έναν τομέα

ALTER DOMAIN - αλλαγή τομέα

· ΑΠΟΡΡΙΨΗ ΤΟΜΕΑ - διαγράψτε έναν τομέα

· ΔΗΜΙΟΥΡΓΙΑ ΣΥΛΛΟΓΗΣ - δημιουργήστε μια ακολουθία

· ΣΥΓΚΡΙΣΗ ΣΤΑΓΩΝ - διαγράψτε μια ακολουθία

· ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗ - δημιουργήστε μια προβολή

· ΑΠΟΣΤΟΛΗ ΠΡΟΒΟΛΗ - διαγραφή μιας προβολής

Τελεστές DML (Data Manipulation Language) - τελεστές χειρισμού δεδομένων

· ΕΠΙΛΟΓΗ - επιλέξτε σειρές από πίνακες

· INSERT - προσθήκη σειρών στον πίνακα

· ΕΝΗΜΕΡΩΣΗ - αλλαγή σειρών στον πίνακα

· ΔΙΑΓΡΑΦΗ - διαγραφή σειρών στον πίνακα

· ΔΕΣΜΕΥΣΗ - δέσμευση αλλαγών που έγιναν

· ROLLBACK - επαναφορά των αλλαγών που έγιναν

Χειριστές προστασίας και διαχείρισης δεδομένων

· ΔΗΜΙΟΥΡΓΗΣΤΕ ΔΗΜΙΟΥΡΓΙΑ - δημιουργήστε έναν περιορισμό

· ΑΠΟΡΡΙΨΗ ΔΗΛΩΣΗΣ - αφαιρέστε έναν περιορισμό

· GRANT - παραχωρήστε δικαιώματα σε χρήστη ή εφαρμογή για χειρισμό αντικειμένων

ΑΝΑΚΛΗΣΗ - ανάκληση δικαιωμάτων χρήστη ή εφαρμογής

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

Οι πιο σημαντικές για τον χρήστη είναι οι δηλώσεις χειρισμού δεδομένων (DML).

Παραδείγματα χρήσης τελεστών χειρισμού δεδομένων

INSERT - εισαγωγή σειρών σε έναν πίνακα

Παράδειγμα 1. Εισαγωγή μιας σειράς σε έναν πίνακα:

VALUES(4, "Ivanov");

ΕΝΗΜΕΡΩΣΗ - ενημέρωση σειρών σε έναν πίνακα

Παράδειγμα 3. Ενημέρωση πολλών σειρών σε έναν πίνακα:

SET PNAME = "Pushnikov"

ΠΟΥ P.PNUM = 1;

ΔΙΑΓΡΑΦΗ - διαγραφή σειρών σε έναν πίνακα

Παράδειγμα 4. Διαγραφή πολλαπλών σειρών σε έναν πίνακα:

ΠΟΥ P.PNUM = 1;

Παραδείγματα χρήσης της δήλωσης SELECT

Η πρόταση SELECT είναι στην πραγματικότητα η πιο κρίσιμη για το χρήστη και η πιο σύνθετη πρόταση SQL. Έχει σχεδιαστεί για την ανάκτηση δεδομένων από πίνακες, ᴛ.ᴇ. Στην πραγματικότητα, υλοποιεί έναν από τους βασικούς σκοπούς της βάσης δεδομένων - να παρέχει πληροφορίες στον χρήστη.

Η πρόταση SELECT εκτελείται πάντα σε ορισμένους από τους πίνακες που αποτελούν μέρος της βάσης δεδομένων.

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

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

SELECT εντολή εκτέλεσης δήλωσης

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

Στάδιο 1: Εκτέλεση μεμονωμένης δήλωσης SELECT

Εάν ο τελεστής περιέχει τις λέξεις-κλειδιά UNION, EXCEPT και INTERSECT, το ερώτημα χωρίζεται σε πολλά ανεξάρτητα ερωτήματα, καθένα από τα οποία εκτελείται χωριστά:

Βήμα 1 (ΑΠΟ). Υπολογίζεται το άμεσο καρτεσιανό γινόμενο όλων των πινάκων που καθορίζονται στην υποχρεωτική ενότητα FROM. Ως αποτέλεσμα του βήματος 1, λαμβάνουμε τον πίνακα Α.

Βήμα 2 (ΠΟΥ). Εάν η πρόταση SELECT περιέχει μια πρόταση WHERE, τότε ο πίνακας A, που λαμβάνεται στο βήμα 1, σαρώνεται σε αυτήν την περίπτωση, για κάθε γραμμή από τον πίνακα A, υπολογίζεται η υπό όρους έκφραση που δίνεται στην πρόταση WHERE. Μόνο εκείνες οι σειρές για τις οποίες η έκφραση υπό όρους επιστρέφει TRUE περιλαμβάνονται στο αποτέλεσμα. Εάν η ενότητα WHERE παραληφθεί, τότε προχωρήστε αμέσως στο βήμα 3. Εάν εμπλέκονται ένθετα υποερωτήματα στην έκφραση υπό όρους, τότε υπολογίζονται σύμφωνα με αυτό το εννοιολογικό σχήμα. Ως αποτέλεσμα του βήματος 2, λαμβάνουμε τον πίνακα Β.

Βήμα 3 (ΟΜΑΔΑ ΑΝΑ). Εάν η πρόταση SELECT περιέχει μια ενότητα GROUP BY, τότε οι σειρές του πίνακα B που λαμβάνονται στο δεύτερο βήμα ομαδοποιούνται σύμφωνα με τη λίστα ομαδοποίησης που δίνεται στην ενότητα GROUP BY. Εάν η ενότητα GROUP BY παραλειφθεί, προχωρήστε αμέσως στο βήμα 4. Ως αποτέλεσμα του βήματος 3, λαμβάνουμε τον πίνακα C.

Βήμα 4 (ΕΧΕΙ). Εάν η πρόταση SELECT περιέχει μια ενότητα HAVING, τότε οι ομάδες που δεν ικανοποιούν την έκφραση υπό όρους που δίνεται στην ενότητα HAVING εξαιρούνται. Εάν η ενότητα HAVING παραλειφθεί, προχωρήστε αμέσως στο βήμα 5. Ως αποτέλεσμα του βήματος 4, λαμβάνουμε τον πίνακα D.

Βήμα 5 (ΕΠΙΛΟΓΗ). Κάθε ομάδα που λαμβάνεται στο βήμα 4 δημιουργεί μία σειρά αποτελεσμάτων ως εξής. Όλες οι βαθμωτές εκφράσεις που καθορίζονται στην ενότητα SELECT αξιολογούνται. Σύμφωνα με τους κανόνες για τη χρήση του όρου GROUP BY, τέτοιες βαθμωτές εκφράσεις πρέπει να είναι ίδιες για όλες τις σειρές σε κάθε ομάδα. Για κάθε ομάδα, υπολογίζονται οι τιμές των αθροιστικών συναρτήσεων που δίνονται στην ενότητα SELECT. Εάν δεν υπάρχει ενότητα GROUP BY, αλλά υπάρχουν συγκεντρωτικές συναρτήσεις στην ενότητα SELECT, τότε θεωρείται ότι υπάρχει μόνο μία ομάδα. Εάν δεν υπάρχει ούτε ενότητα GROUP BY ούτε συγκεντρωτικές συναρτήσεις, τότε θεωρείται ότι υπάρχουν τόσες ομάδες όσες και οι σειρές που έχουν επιλεγεί αυτή τη στιγμή. Ως αποτέλεσμα του βήματος 5, λαμβάνουμε τον πίνακα Ε, ο οποίος περιέχει όσες στήλες υπάρχουν στοιχεία που παρατίθενται στην ενότητα ΕΠΙΛΟΓΗ και τόσες σειρές όσες ομάδες έχουν επιλεγεί.

Στάδιο 2. Εκτέλεση επιχειρήσεων UNION, EXCEPT, INTERSECT

Εάν η πρόταση SELECT περιείχε τις λέξεις-κλειδιά UNION, EXCEPT και INTERSECT, τότε οι πίνακες που προέκυψαν ως αποτέλεσμα του 1ου σταδίου συγχωνεύονται, αφαιρούνται ή τέμνονται.

Στάδιο 3. Παραγγελία του αποτελέσματος

Εάν η δήλωση SELECT περιέχει μια ενότητα ORDER BY, τότε οι σειρές του πίνακα που ελήφθησαν στα προηγούμενα βήματα ταξινομούνται σύμφωνα με τη λίστα παραγγελίας που δίνεται στην ενότητα ORDER BY.

Βασικές δηλώσεις SQL. Σύνταξη και παραδείγματα χρήσης της πρότασης SELECT. - έννοια και τύποι. Ταξινόμηση και χαρακτηριστικά της κατηγορίας "Βασικοί τελεστές SQL. Σύνταξη και παραδείγματα χρήσης του τελεστή SELECT." 2017, 2018.

Η SQL (Structured Query Language) είναι μια καθολική γλώσσα υπολογιστή που χρησιμοποιείται για τη δημιουργία, τροποποίηση και διαχείριση δεδομένων σε σχεσιακές βάσεις δεδομένων. Η γλώσσα SQL βασίζεται στη σχεσιακή άλγεβρα και είναι μια συλλογή τελεστών.

Υπάρχουν 4 ομάδες χειριστών. Ας εξετάσουμε μια ομάδα τελεστών χειρισμού δεδομένων (Γλώσσα χειρισμού δεδομένων, DML, SQL DML)

Επιλογή δεδομένων

Η επιλογή δεδομένων είναι η πιο κοινή λειτουργία που εκτελείται χρησιμοποιώντας SQL. Η δήλωση SELECT είναι μια από τις πιο σημαντικές δηλώσεις σε αυτήν τη γλώσσα, που χρησιμοποιείται για την επιλογή δεδομένων. Η σύνταξη αυτού του τελεστή είναι η εξής:

ΕΠΙΛΟΓΗ στήλης ΑΠΟ πίνακα

Οι δηλώσεις SELECT πρέπει να περιέχουν τις λέξεις SELECT και FROM. άλλες λέξεις-κλειδιά είναι προαιρετικές.

Η λέξη-κλειδί SELECT ακολουθείται από πληροφορίες σχετικά με τα πεδία που θα συμπεριληφθούν στο προκύπτον σύνολο δεδομένων. Ένας αστερίσκος (*) υποδηλώνει όλα τα πεδία του πίνακα, για παράδειγμα:

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

ΕΠΙΛΕΓΩ Εταιρεία

Ένα παράδειγμα επιλογής πολλών στηλών μοιάζει με αυτό:

ΕΠΙΛΕΓΩ Εταιρεία,Τηλέφωνο,Ταχυδρομείο

Για να καθορίσετε τα ονόματα των πινάκων από τους οποίους επιλέγονται οι εγγραφές, χρησιμοποιήστε τη λέξη-κλειδί FROM, για παράδειγμα:

ΕΠΙΛΕΓΩ * ΑΠΟ Πελάτες

Αυτό το ερώτημα θα επιστρέψει όλα τα πεδία από τον πίνακα Πελάτες.

Μπορείτε να χρησιμοποιήσετε τον όρο WHERE (προαιρετικό) για να φιλτράρετε τα αποτελέσματα που επιστρέφονται από την πρόταση SELECT

ΕΠΙΛΟΓΗ * ΑΠΟ Προϊόντα ΟΠΟΥ Κατηγορία = 4

Μπορείτε να χρησιμοποιήσετε διάφορες εκφράσεις στον όρο WHERE,

WHERE έκφραση 1 [(ΚΑΙ | Ή) έκφραση2 ...]

Για παράδειγμα:

ΕΠΙΛΕΞΤΕ * ΑΠΟ Προϊόντα ΟΠΟΥ Κατηγορία = 2 ΚΑΙ Postavshik > 10

ΕΠΙΛΕΞΤΕ Όνομα, Τιμή ΑΠΟ Προϊόντα WHERE Κατηγορία= 3 Ή Τιμή< 50

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

< Меньше

<= Меньше или равно

<>Όχι ίσα

> Περισσότερα

>= Μεγαλύτερο ή ίσο με

Η ρήτρα ORDER BY (προαιρετική) χρησιμοποιείται για την ταξινόμηση του συνόλου αποτελεσμάτων δεδομένων σε μία ή περισσότερες στήλες. Οι λέξεις-κλειδιά ASC (αύξουσα) ή DESC (φθίνουσα) χρησιμοποιούνται για τον προσδιορισμό της σειράς ταξινόμησης. Από προεπιλογή, τα δεδομένα ταξινομούνται με αύξουσα σειρά.

Τροποποίηση δεδομένων

Εκτός από την ανάκτηση δεδομένων, η SQL μπορεί να χρησιμοποιηθεί για ενημέρωση και διαγραφή δεδομένων, αντιγραφή εγγραφών σε άλλους πίνακες και εκτέλεση άλλων λειτουργιών. Παρακάτω θα δούμε τις δηλώσεις ΕΝΗΜΕΡΩΣΗ, ΔΙΑΓΡΑΦΗ και ΕΙΣΑΓΩΓΗ που χρησιμοποιούνται για την επίλυση ορισμένων από αυτά τα προβλήματα.

ΕΝΗΜΕΡΩΣΗ δήλωσης

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

ΕΝΗΜΕΡΩΣΗ ΣΕΤ πίνακα στήλης 1 = έκφραση 1 WHERE κριτήρια

Η έκφραση στην πρόταση SET μπορεί να είναι μια σταθερά ή το αποτέλεσμα ενός υπολογισμού. Για παράδειγμα, για να αυξήσετε τις τιμές όλων των προϊόντων που κοστίζουν λιγότερο από 10 $, θα μπορούσατε να εκτελέσετε το ακόλουθο ερώτημα:

ΕΝΗΜΕΡΩΣΗ Προϊόντων ΣΕΤ Τιμή = Τιμή * 1.1 ΠΟΥ Τιμή< 10

ΔΙΑΓΡΑΦΗ δήλωσης

Για να διαγράψετε σειρές από πίνακες, θα πρέπει να χρησιμοποιήσετε τον τελεστή DELETE, η σύνταξη του οποίου είναι:

ΔΙΑΓΡΑΦΗ ΑΠΟ τον πίνακα ΟΠΟΥ κριτήρια

Διαγράψτε όλα τα προϊόντα των οποίων το κόστος είναι μικρότερο από 100:

ΔΙΑΓΡΑΦΗ ΑΠΟ Προϊόντα ΠΟΥ Τιμή< 100

ΧειριστήςΕΙΣΑΓΩ

Για να προσθέσετε εγγραφές σε πίνακες, θα πρέπει να χρησιμοποιήσετε την πρόταση INSERT, η σύνταξη της οποίας είναι:

INSERT INTO πίνακα ( ΤΙΜΕΣ (έκφραση [, ...])

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

ΕΙΣΑΓΩΓΗ ΤΙΜΩΝ ΣΕ Πελάτες (Αναγνωριστικό πελάτη, Όνομα εταιρείας) ('XYZ', 'XYZ Deli')

Ερώτηση Νο 1. Η SQL και η ιστορία της. 1

Ερώτηση Νο 2. Περιγραφή βασικών δηλώσεων SQL.. 1

Αριθμητικές συναρτήσεις. 4

Λειτουργίες επεξεργασίας συμβολοσειρών. 5

Ειδικές λειτουργίες. 6

Λειτουργίες για επεξεργασία ημερομηνίας... 7

Χρήση συγκεντρωτικών συναρτήσεων σε ερωτήματα. 7

Ερώτηση Νο 1. Η SQL και η ιστορία της

Το μόνο μέσο επικοινωνίας μεταξύ διαχειριστών βάσεων δεδομένων, σχεδιαστών, προγραμματιστών και χρηστών με σχεσιακή βάση δεδομένων είναι η δομημένη γλώσσα ερωτημάτων SQL (Structured Query Language). Η SQL είναι μια γλώσσα με πλήρη χαρακτηριστικά για το χειρισμό δεδομένων σε σχεσιακές βάσεις δεδομένων. Επί του παρόντος, είναι μια γενικά αποδεκτή τυπική διεπαφή για σχεσιακές βάσεις δεδομένων όπως Oracle, Informix, Sybase, DB/2, MS SQL Server και αρκετές άλλες (πρότυπα ANSI και ISO). Η SQL είναι μια μη διαδικαστική γλώσσα που έχει σχεδιαστεί για την επεξεργασία συνόλων που αποτελούνται από γραμμές και στήλες σχεσιακών πινάκων βάσεων δεδομένων. Αν και υπάρχουν προεκτάσεις του που επιτρέπουν τη διαδικαστική επεξεργασία. Οι σχεδιαστές βάσεων δεδομένων χρησιμοποιούν SQL για να δημιουργήσουν όλα τα φυσικά αντικείμενα μιας σχεσιακής βάσης δεδομένων.

Οι θεωρητικές βάσεις της SQL τέθηκαν στο περίφημο άρθρο του Codd, το οποίο έθεσε τα θεμέλια για την ανάπτυξη της θεωρίας των σχεσιακών βάσεων δεδομένων. Η πρώτη πρακτική εφαρμογή πραγματοποιήθηκε στα ερευνητικά εργαστήρια της IBM Chamberlin D.D. και Royce R.F. Η βιομηχανική χρήση της SQL εφαρμόστηκε για πρώτη φορά στο Ingres DBMS. Ένα από τα πρώτα βιομηχανικά σχεσιακά DBMS είναι η Oracle. Ουσιαστικά, ένα σχεσιακό DBMS είναι λογισμικό που διαχειρίζεται τη λειτουργία μιας σχεσιακής βάσης δεδομένων.

Το πρώτο διεθνές πρότυπο για τη γλώσσα SQL υιοθετήθηκε το 1989 (SQL-89). Στα τέλη του 1992, υιοθετήθηκε ένα νέο διεθνές πρότυπο, το SQL-92. Επί του παρόντος, οι περισσότεροι κατασκευαστές σχεσιακών DBMS το χρησιμοποιούν ως βάση. Ωστόσο, η εργασία για την τυποποίηση της γλώσσας SQL απέχει πολύ από το να έχει ολοκληρωθεί και έχει ήδη αναπτυχθεί ένα προσχέδιο προτύπου SQL-99, το οποίο εισάγει την έννοια ενός αντικειμένου στη γλώσσα και επιτρέπει την αναφορά του σε δηλώσεις SQL: Στην αρχική έκδοση της SQL Δεν υπήρχαν εντολές ελέγχου ροής δεδομένων, εμφανίστηκαν στο πρόσφατα εγκριθέν ISO/IEC 9075-5: 1996 Συμπληρωματικό Μέρος SQL.

Κάθε συγκεκριμένο DBMS έχει τη δική του υλοποίηση SQL, η οποία γενικά υποστηρίζει ένα συγκεκριμένο πρότυπο, αλλά έχει τα δικά του χαρακτηριστικά. Αυτές οι υλοποιήσεις ονομάζονται διάλεκτοι. Έτσι, το πρότυπο 1SO/IEC 9075-5 παρέχει αντικείμενα που ονομάζονται μόνιμες αποθηκευμένες μονάδες ή μονάδες PSM (Μόνιμες αποθηκευμένες μονάδες). Στο Oracle DBMS, η επέκταση PL/SQL είναι ανάλογη της παραπάνω τυπικής επέκτασης."

Ερώτηση Νο 2. Περιγραφή βασικών δηλώσεων SQL

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

Ολόκληρο το σύνολο των εντολών SQL μπορεί να χωριστεί στις ακόλουθες ομάδες:

· Εντολές ορισμού δεδομένων (DDL - Data Definion Language).

· Εντολές χειρισμού δεδομένων (DML - Data Manipulation Language).

· Εντολές δειγματοληψίας δεδομένων (DQL - Data Query Language).

· Εντολές διαχείρισης συναλλαγών.

· Εντολές διαχείρισης δεδομένων.

Όταν εκτελείται, κάθε εντολή SQL περνάει από τέσσερις φάσεις επεξεργασίας:

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

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

· η φάση δημιουργίας εκτελέσιμου κώδικα, η οποία περιλαμβάνει την κατασκευή εκτελέσιμου κώδικα εντολών.

· η φάση εκτέλεσης της εντολής, η οποία περιλαμβάνει την εκτέλεση του κώδικα εντολής.

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

Ο Πίνακας 8.1 περιέχει μια λίστα εντολών SQL σύμφωνα με το αποδεκτό πρότυπο, με εξαίρεση ορισμένες εντολές που πρακτικά δεν χρησιμοποιούνται σε διαλέκτους.

Πίνακας 8.1. Τυπική λίστα εντολών SQL

Ομάδα Περιγραφή
Εντολές για τον ορισμό δεδομένων αντικειμένου
ALTER TABLE Αλλάζει την περιγραφή του πίνακα (σχήμα σχέσης)
ΔΗΜΙΟΥΡΓΙΑ ΕΚΔΗΛΩΣΗΣ Δημιουργεί ένα συμβάν χρονοδιακόπτη στη βάση δεδομένων
ΔΗΜΙΟΥΡΓΙΑ ΕΥΡΕΤΗΡΙΟΥ Δημιουργεί ένα ευρετήριο στον πίνακα
ΔΗΜΙΟΥΡΓΗΣΤΕ ΑΚΟΛΟΥΘΙΑ Δημιουργεί μια ακολουθία
ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙΟΥ Ορίζει έναν πίνακα
ΔΗΜΙΟΥΡΓΗΣΤΕ ΤΡΑΠΕΖΟΧΩΡΟ Θα δημιουργηθεί χώρος τραπεζιού
ΔΗΜΙΟΥΡΓΙΑ ΣΚΑΝΔΙΣΤΗΣ Δημιουργεί ένα έναυσμα στη βάση δεδομένων
ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗ Ορίζει μια προβολή σε πίνακες
ΔΕΙΚΤΗΣ ΠΤΩΣΗΣ Καταργεί φυσικά ένα ευρετήριο από τη βάση δεδομένων
ΑΚΟΛΟΥΘΙΑ ΠΤΩΣΗΣ Διαγράφει μια ακολουθία
ΠΤΡΑΠΕΖΙ ΠΤΩΣΗΣ Καταργεί φυσικά έναν πίνακα από τη βάση δεδομένων
ΑΠΟΣΤΟΛΗ ΤΡΑΠΕΖΙΟΧΩΡΟ Διαγράφει έναν πίνακα
ΑΠΟΣΤΟΛΗ ΠΡΟΒΟΛΗ Διαγράφει μια προβολή
Εντολές χειρισμού δεδομένων
ΔΙΑΓΡΑΦΩ Καταργεί μία ή περισσότερες σειρές από έναν πίνακα βάσης δεδομένων
ΕΙΣΑΓΩ Εισάγει μία ή περισσότερες σειρές σε έναν πίνακα βάσης δεδομένων
ΕΚΣΥΓΧΡΟΝΙΖΩ Ενημερώνει τις τιμές στηλών σε έναν πίνακα βάσης δεδομένων
Εντολές ανάκτησης δεδομένων
ΕΠΙΛΕΓΩ Εκτελεί ένα ερώτημα για την ανάκτηση δεδομένων από πίνακες και προβολές
ΕΝΩΣΗ Συνδυάζει τα αποτελέσματα δύο ή περισσότερων εντολών SELECT σε μία επιλογή
Εντολές Ελέγχου Συναλλαγών
ΔΙΑΠΡΑΤΤΩ Ολοκληρώνει μια συναλλαγή και ενημερώνει φυσικά την τρέχουσα κατάσταση της βάσης δεδομένων
ΑΝΤΙΣΤΡΟΦΗ Τερματίζει μια συναλλαγή και επιστρέφει την τρέχουσα κατάσταση της βάσης δεδομένων τη στιγμή της τελευταίας ολοκληρωμένης συναλλαγής και του σημείου ελέγχου
SAVEPOINT Εκχωρεί ένα σημείο ελέγχου σε μια συναλλαγή
Εντολές διαχείρισης δεδομένων
ΑΛΛΑΓΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ Τροποποιεί ομάδες αποθήκευσης ή αρχεία καταγραφής συναλλαγών
ALTER DBAREA Αλλάζει το μέγεθος των περιοχών αποθήκευσης της βάσης δεδομένων
ΑΛΛΑΓΗ ΚΩΔΙΚΟΥ Αλλάζει τον κωδικό πρόσβασης για πρόσβαση στη βάση δεδομένων
ALTER STOGROUP Αλλάζει τη σύνθεση των περιοχών αποθήκευσης σε μια ομάδα αποθήκευσης
ΕΛΕΓΞΤΕ ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ Ελέγχει την ακεραιότητα της βάσης δεδομένων
ΕΛΕΓΧΟΣ ΕΥΡΕΤΗ Ελέγχει την ακεραιότητα του ευρετηρίου
ΕΛΕΓΧΟΣ ΠΙΝΑΚΑ Ελέγχει την ακεραιότητα του πίνακα και του ευρετηρίου
ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ Δημιουργεί φυσικά τη βάση δεδομένων
ΔΗΜΙΟΥΡΓΗΣΤΕ DBAREA Δημιουργεί μια περιοχή αποθήκευσης βάσης δεδομένων
ΔΗΜΙΟΥΡΓΙΑ ΣΤΑΣΗ Δημιουργεί μια ομάδα αποθήκευσης
ΔΗΜΙΟΥΡΓΙΑ ΣΥΝΩΝΥΜΟΥ Δημιουργεί ένα συνώνυμο για έναν πίνακα ή μια προβολή
ΑΠΟΕΓΚΑΤΑΣΤΑΣΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ Κάνει τη βάση δεδομένων απρόσιτη στους χρήστες του δικτύου
ΑΠΟΣΤΟΛΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ Διαγράφει φυσικά βάσεις δεδομένων
ΠΕΣΤΕ DBAREA Διαγράφει φυσικά μια περιοχή αποθήκευσης βάσης δεδομένων
ΑΠΟΣΤΟΛΗ ΣΤΑΜΑΤΗΣ Διαγράφει μια ομάδα αποθήκευσης
ΧΟΡΗΓΗΣΗ Καθορίζει τα δικαιώματα χρήστη και τον έλεγχο πρόσβασης στη βάση δεδομένων
ΕΓΚΑΤΑΣΤΑΣΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ Κάνει τη βάση δεδομένων διαθέσιμη στους χρήστες του δικτύου
ΚΛΕΙΔΩΜΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ Κλειδώνει την τρέχουσα ενεργή βάση δεδομένων
ΑΝΑΚΑΛΩ Ανακαλεί τα δικαιώματα χρήστη και τους περιορισμούς πρόσβασης στη βάση δεδομένων
ΡΥΘΜΙΣΗ ΠΡΟΕΠΙΛΟΓΗΣ ΔΙΑΚΟΠΗΣ Καθορίζει την προεπιλεγμένη ομάδα αποθήκευσης
ΞΕΚΛΕΙΔΩΜΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ Απελευθερώνει την τρέχουσα ενεργή βάση δεδομένων
ΕΝΗΜΕΡΩΣΗ ΣΤΑΤΙΣΤΙΚΩΝ Ενημερώνει στατιστικά στοιχεία για μια βάση δεδομένων
Άλλες εντολές
ΣΧΟΛΙΑΖΩ Τοποθετεί σχόλια στην περιγραφή των αντικειμένων της βάσης δεδομένων στον κατάλογο του συστήματος
ΔΗΜΙΟΥΡΓΙΑ ΣΥΝΩΝΥΜΟΥ Ορίζει εναλλακτικά ονόματα για πίνακες βάσης δεδομένων και προβολές στον κατάλογο του συστήματος
ΠΤΩΣΗ ΣΥΝΩΝΥΜΟ Καταργεί εναλλακτικά ονόματα για πίνακες βάσης δεδομένων και προβολές από τον κατάλογο του συστήματος
ΕΠΙΓΡΑΦΗ Αλλάζει τις ετικέτες περιγραφής συστήματος
ROWCOUNT Υπολογίζει τον αριθμό των γραμμών σε έναν πίνακα βάσης δεδομένων

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

Αριθμητικές συναρτήσεις

Η SQL υποστηρίζει ένα πλήρες σύνολο αριθμητικών πράξεων και μαθηματικών συναρτήσεων για την κατασκευή αριθμητικών παραστάσεων σε στήλες βάσης δεδομένων (+, -, *, /, ABS, LN, SQRT, κ.λπ.).

Μια λίστα με τις κύριες ενσωματωμένες μαθηματικές συναρτήσεις δίνεται παρακάτω στον Πίνακα 8.2.

Μαθηματική συνάρτηση Περιγραφή
ABS(X) Επιστρέφει την απόλυτη τιμή ενός αριθμού Χ
ACOS(X) Επιστρέφει το συνημίτονο τόξου ενός αριθμού Χ
ASIN(X) Επιστρέφει το τόξο ενός αριθμού Χ
ATAN(X) Επιστρέφει την εφαπτομένη του X
COS(X) Επιστρέφει το συνημίτονο ενός αριθμού Χ
ΛΗΞΗ(X) Επιστρέφει τον εκθέτη ενός αριθμού Χ
SIGN(X) Επιστρέφει -] εάν X< 0, 0, если X = 0, + 1, если X > 0
LN(X) Επιστρέφει τον φυσικό λογάριθμο ενός αριθμού Χ
MOD(X,Y) Επιστρέφει το υπόλοιπο όταν το X διαιρείται με το Y
CEIL(X) Επιστρέφει τον μικρότερο ακέραιο μεγαλύτερο ή ίσο του X
ROUND(X,n) Στρογγυλοποιεί τον αριθμό X σε έναν αριθμό με n θέσεις μετά την υποδιαστολή
SIN(X) Επιστρέφει το ημίτονο του X
SQRT(X) Επιστρέφει την τετραγωνική ρίζα ενός αριθμού Χ
TAN(X) Επιστρέφει την εφαπτομένη ενός αριθμού Χ
ΟΡΟΦΟΣ(X) Επιστρέφει τον μεγαλύτερο ακέραιο μικρότερο ή ίσο του X
LOG(a,X) Επιστρέφει τον λογάριθμο ενός αριθμού Χ στη βάση Α
SINH(X) Επιστρέφει το υπερβολικό ημίτονο του X
COSH(X) Επιστρέφει το υπερβολικό συνημίτονο ενός αριθμού Χ
TANH(X) Επιστρέφει την υπερβολική εφαπτομένη του X
TRANC(X.n) Περικόπτει τον αριθμό X σε έναν αριθμό με n δεκαδικά ψηφία
POWER(A,X) Επιστρέφει την τιμή του A αυξημένη στη δύναμη του X

Το σύνολο των ενσωματωμένων λειτουργιών μπορεί να διαφέρει ανάλογα με την έκδοση του DBMS από έναν κατασκευαστή και επίσης σε DBMS από διαφορετικούς κατασκευαστές . Για παράδειγμα, στο SQLBase DBMS, η Century Inc. Υπάρχει μια συνάρτηση @ATAN2(X,Y), η οποία επιστρέφει την εφαπτομένη του Y/X, αλλά δεν υπάρχει συνάρτηση SIGN(X).

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

ΕΠΙΛΟΓΗ ENAME, SAL, COMM. ΠΡΟΣΤΙΜΟ, SAL + COMM - ΠΡΟΣΤΙΜΟ

Η αριθμητική παράσταση SAL + COMM - FINE εξάγεται ως νέα στήλη στον πίνακα αποτελεσμάτων, η οποία υπολογίζεται ως αποτέλεσμα του ερωτήματος. Τέτοιες στήλες ονομάζονται επίσης παράγωγα (υπολογισμένα) χαρακτηριστικάή χωράφια.

Λειτουργίες επεξεργασίας συμβολοσειρών

Η SQL σας παρέχει ένα ευρύ φάσμα λειτουργιών για τον χειρισμό δεδομένων συμβολοσειρών (σύνδεση συμβολοσειρών, CHR, LENGTH, INSTR και άλλα). Μια λίστα με τις κύριες συναρτήσεις για την επεξεργασία δεδομένων συμβολοσειράς δίνεται στον Πίνακα 8.3.

Πίνακας 8.3. Λειτουργίες SQL για επεξεργασία συμβολοσειρών

Λειτουργία Περιγραφή
CHR(N) Επιστρέφει τον κωδικό ASCII χαρακτήρα για τον δεκαδικό κωδικό N
ASCII(S) Επιστρέφει τον δεκαδικό κωδικό ASCII του πρώτου χαρακτήρα μιας συμβολοσειράς
INSTR(S2,SI,pos|,N|) Επιστρέφει τη θέση της συμβολοσειράς SI στη συμβολοσειρά S2 μεγαλύτερη ή ίση με pos. N - αριθμός εμφανίσεων
ΜΗΚΟΣ(Α) Επιστρέφει το μήκος μιας συμβολοσειράς
LOWER(S) Αντικαθιστά όλους τους χαρακτήρες σε μια συμβολοσειρά με κεφαλαίους χαρακτήρες
INITCAP(S) Ορίζει τον πρώτο χαρακτήρα κάθε λέξης σε μια συμβολοσειρά σε κεφαλαία και τους υπόλοιπους χαρακτήρες κάθε λέξης σε κεφαλαία
SUBSTR(S,pos,[,len|) Επιλέγει μια υποσυμβολοσειρά μήκους δέκα στη συμβολοσειρά S, ξεκινώντας από τη θέση pos
ΑΝΩ(Α) Μετατρέπει τα κεφαλαία γράμματα μιας συμβολοσειράς σε κεφαλαία
LPAD(S,N |,A|) Επιστρέφει τη συμβολοσειρά S που είναι γεμισμένη με A σε μέγιστο αριθμό N χαρακτήρων.
RPAD(S,N |,A]) Επιστρέφει τη συμβολοσειρά S με συμπλήρωμα A σε μέγιστο αριθμό N χαρακτήρων.
LTRIM(S,|,Sll) Επιστρέφει την αριστερή περικομμένη συμβολοσειρά S. Οι χαρακτήρες καταργούνται εφόσον ο χαρακτήρας που πρέπει να αφαιρεθεί βρίσκεται στη συμβολοσειρά - μοτίβο SI (η προεπιλογή είναι κενό)
RTRIM(S,|,SI |) Επιστρέφει τη δεξιά περικομμένη συμβολοσειρά S. Οι χαρακτήρες καταργούνται εφόσον ο χαρακτήρας που πρέπει να αφαιρεθεί βρίσκεται στη συμβολοσειρά - μοτίβο S1 (η προεπιλογή είναι κενό)
ΜΕΤΑΦΡΑΖΕΙ,(SI,S2) Επιστρέφει τη συμβολοσειρά S με όλες τις εμφανίσεις της συμβολοσειράς SI να αντικατασταθούν από τη συμβολοσειρά S2. Εάν ο S.I.<>S2, τότε οι χαρακτήρες που δεν ταιριάζουν εξαιρούνται από τη συμβολοσειρά που προκύπτει
REPLACED(SI,|,S2|) Επιστρέφει τη συμβολοσειρά S για την οποία όλες οι εμφανίσεις της υποσυμβολοσειράς SI αντικαθίστανται με την υποσυμβολοσειρά S2. Εάν το S2 δεν έχει καθοριστεί, τότε όλες οι εμφανίσεις της υποσυμβολοσειράς SI αφαιρούνται από την προκύπτουσα συμβολοσειρά S
NVL(X,Y) Εάν το X είναι NULL, τότε επιστρέφει το Y είτε μια συμβολοσειρά, έναν αριθμό ή μια ημερομηνία, ανάλογα με τον αρχικό τύπο του Y

Τα ονόματα των ίδιων συναρτήσεων ενδέχεται να διαφέρουν σε διαφορετικά DBMS. Για παράδειγμα, η συνάρτηση Oracle DBMS SUBSTR(S, pos, |, len|) στο SQLBase DBMS ονομάζεται @SUBSTRING(S, pos, Ien). Το SQLBase DBMS έχει λειτουργίες που δεν είναι διαθέσιμες στο Oracle DBMS (δείτε τον παρακάτω πίνακα για μια λίστα τέτοιων λειτουργιών).

Πίνακας 8.4. Συναρτήσεις συμβολοσειράς SQLBase DBMS που διαφέρουν από τις συναρτήσεις συμβολοσειράς Oracle DBMS

Λειτουργία Περιγραφή
@EXACT(SI,S2) Επιστρέφει το αποτέλεσμα της σύγκρισης δύο χορδών
@ΑΡΙΣΤΕΡΑ(S,lcn) Επιστρέφει την αριστερή υποσυμβολοσειρά του μήκους len
@LENGTH(S) Επιστρέφει το μήκος μιας συμβολοσειράς
@MID(S, pos, len) Επιστρέφει μια υποσυμβολοσειρά του καθορισμένου μήκους, ξεκινώντας από τη θέση pos
@ΕΠΑΝΑΛΗΨΗ(S,n) Επαναλαμβάνει τη συμβολοσειρά S n φορές
@REPLACE(SI,pos,len,S2) Αντικαταστήστε τους χαρακτήρες pos len στη συμβολοσειρά S2 με χαρακτήρες στη συμβολοσειρά SI
@RIGHT(S,len) Επιστρέφει τη δεξιά υποσυμβολοσειρά του S μήκους len
@SCAN(S,pat) Επιστρέφει τη θέση του pat substring στη συμβολοσειρά S
@STRING (X, κλίμακα) Επιστρέφει μια συμβολική αναπαράσταση ενός αριθμού με την καθορισμένη κλίμακα
@TRIM(S) Αφαιρεί κενά από τα δεξιά και τα αριστερά μιας συμβολοσειράς
@VALUE(S) Μετατρέπει τη συμβολική αναπαράσταση ενός αριθμού σε αριθμητική τιμή

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση INITCAP για να διασφαλίσετε ότι, κατά την ανάκτηση μιας λίστας ονομάτων υπαλλήλων, τα επώνυμα αρχίζουν πάντα με κεφαλαίο γράμμα και όλα τα άλλα ονόματα γράφονται με κεφαλαία.

ΕΠΙΛΟΓΗ INITCAP(ENAME)

Ειδικά Χαρακτηριστικά

Η SQL παρέχει ένα σύνολο ειδικών συναρτήσεων για τον μετασχηματισμό τιμών στηλών. Μια λίστα τέτοιων λειτουργιών δίνεται στον Πίνακα 8.5.

Πίνακας 8.5. Ειδικά Χαρακτηριστικά

Στον πίνακα EMPLOYEE, μπορείτε να εισαγάγετε ένα χαρακτηριστικό φύλο για κάθε εργαζόμενο - προσθέστε μια στήλη SEX τύπου CHAR(l) (0 - άνδρας, 1 - γυναίκα). Ας υποθέσουμε ότι χρειάζεστε μια λίστα υπαλλήλων, η οποία απαιτεί να χωρίζονται κατά φύλο και να αναφέρονται σε αριθμητική μορφή. τότε μπορείτε να δώσετε την ακόλουθη εντολή:

ΕΠΙΛΟΓΗ ENAME, LNAME, AGE, " Πάτωμα:",TO_NUMBER(SEX)

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

SELECT ENAME, DEC0DE(DEPN0, 10, " Dryagin", 20,"Ζιλιάεβα". 30,"

Κορότκοφ", "δεν εχει")

Ας υποθέσουμε ότι ο επικεφαλής του οργανισμού έχει μια απροσδιόριστη τιμή για τη στήλη DEPNO και, επομένως, η προεπιλογή που παρέχεται στο DECODE θα λειτουργήσει γι 'αυτόν .


©2015-2019 ιστότοπος
Όλα τα δικαιώματα ανήκουν στους δημιουργούς τους. Αυτός ο ιστότοπος δεν διεκδικεί την πνευματική ιδιοκτησία, αλλά παρέχει δωρεάν χρήση.
Ημερομηνία δημιουργίας σελίδας: 07-08-2016