Οι βάσεις δεδομένων SQL αποθηκεύουν συλλογές δεδομένων σε γραμμές και στήλες. Μπορείτε να ανακτήσετε και να ενημερώσετε τα δεδομένα σε ένα σύστημα διαχείρισης σχεσιακής βάσης δεδομένων (RDBMS) χρησιμοποιώντας τη γλώσσα SQL. Από τις πολλές διαθέσιμες βάσεις δεδομένων SQL, οι πιο δημοφιλείς είναι οι MySQL, PostgreSQL, Microsoft SQL Server και SQLite.

Η λειτουργικότητα για την αλληλεπίδραση με βάσεις δεδομένων στο Go βρίσκεται στο πακέτο βάσης δεδομένων/sql, μέρος της τυπικής βιβλιοθήκης.

Το πακέτο βάσης δεδομένων/sql αλληλεπιδρά με βάσεις δεδομένων SQL χρησιμοποιώντας προγράμματα οδήγησης. Μπορείτε να εισαγάγετε ένα κατάλληλο πακέτο προγραμμάτων οδήγησης για το RDBMS σας και να το χρησιμοποιήσετε για να αλληλεπιδράσετε με τη βάση δεδομένων.

Ξεκινώντας με τις βάσεις δεδομένων SQL στο Go

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

instagram viewer

Ευτυχώς, δεν χρειάζεται να ανησυχείτε για συγκεκριμένες υλοποιήσεις πέρα ​​από το πρόγραμμα οδήγησης. Το πακέτο βάσης δεδομένων/sql χειρίζεται τις λειτουργίες της βάσης δεδομένων ανεξάρτητα από τον διακομιστή στον οποίο συνδέεστε.

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

  • Πρόγραμμα οδήγησης Go-SQL (MySQL)
  • PQ (PostgreSQL)
  • Go-SQLite3 (SQLite)
  • MSSQL DB (Microsoft SQL Server)

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

Εγκατάσταση και εισαγωγή προγραμμάτων οδήγησης βάσης δεδομένων Go

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

πηγαίνετε να πάρετε -u github.com/go-sql-driver/mysql
πηγαίνετε να πάρετε το github.com/mattn/go-sqlite3

Αφού εγκαταστήσετε το πρόγραμμα οδήγησης, εισαγάγετε το για παρενέργειες βάζοντας το πρόθεμα μιας υπογράμμισης πριν από το πακέτο. Για παράδειγμα, για να εισαγάγετε το πρόγραμμα οδήγησης MySQL μαζί με το πακέτο βάσης δεδομένων/sql:

εισαγωγή (
"βάση δεδομένων/sql"
_ "github.com/πηγαίνω-sql-driver/mysql"
)

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

Σύνδεση σε βάση δεδομένων SQL με το Go

Μετά την εισαγωγή των προγραμμάτων οδήγησης της βάσης δεδομένων, μπορείτε να δημιουργήσετε μια σύνδεση βάσης δεδομένων χρησιμοποιώντας το Ανοιξε μέθοδος του βάση δεδομένων/sql πακέτο. Αυτή η μέθοδος παίρνει το όνομα και τη διαδρομή του προγράμματος οδήγησης στη βάση δεδομένων (για SQLite) ή μια συμβολοσειρά σύνδεσης (για MySQL). Για παράδειγμα, χρησιμοποιήστε ένα από τα παρακάτω:

db, err := sql. Open("sqlite3", "models/testdb.db") // SQLite

db, err := sql. Open("mysql", "user: password@/dbname") // MySQL

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

αν λάθος != μηδέν {
κούτσουρο. Fatalln (λάθος)
}

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

Εκτέλεση εντολών SQL

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

εντολή, err := db. Προετοιμασία ("ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ ΕΑΝ ΔΕΝ ΥΠΑΡΧΕΙ σύνδεση (όνομα χρήστη TEXT, κωδικός πρόσβασης TEXT)")

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

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

εντολή, err := db. Prepare("INSERT INTO login (όνομα χρήστη, κωδικός πρόσβασης) τιμές(?,?)")

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

exec, err := εντολή. Exec (τιμή 1, τιμή 2)

αν λάθος != μηδέν {
ΕΠΙΣΤΡΟΦΗ
}

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

επηρεάζεται, εσφαλμένος := εκτελεστ. RowsAffected()

αν λάθος != μηδέν {
ΕΠΙΣΤΡΟΦΗ
}

fmt. Println (επηρεάζεται)

id, err := exec. LastInsertId()

αν λάθος != μηδέν {
ΕΠΙΣΤΡΟΦΗ
}

fmt. Println (αναγνωριστικό)

Λήψη αποτελεσμάτων ερωτήματος

Το πακέτο βάσης δεδομένων/sql σάς επιτρέπει να υποβάλετε ερωτήματα στα αποτελέσματα της βάσης δεδομένων χρησιμοποιώντας το Ερώτηση μέθοδος μιας παρουσίας βάσης δεδομένων:

σειρές, err := db. Ερώτημα ("SELECT * FROM User")

αν λάθος != μηδέν {
ΕΠΙΣΤΡΟΦΗ
}

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

var όνομα χρήστη κωδικός σειρά

Για σειρές. Επόμενο() {
err := σειρές. Σάρωση (&όνομα χρήστη, &κωδικός πρόσβασης)

αν λάθος != μηδέν {
κούτσουρο. Fatalln (λάθος)
}

fmt. Println (όνομα χρήστη, κωδικός πρόσβασης)
}

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

Οι βάσεις δεδομένων SQL είναι πάντα χρήσιμες

Η χρήση βάσεων δεδομένων στο Go είναι απλή με το πακέτο βάσης δεδομένων/sql. Μπορείτε να το χρησιμοποιήσετε για να κάνετε ερωτήσεις και να εκτελέσετε εντολές SQL στο Go με ευκολία.

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

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