SQL Was ist das?

Was ist SQL? Erklärung der Gründe, warum SQL in Rails kaum verwendet wird und die Rolle von ActiveRecord. Klärung von Verwirrungen bei Anfängerentwicklern.

bamchi 500

Was ist SQL? Und warum verwenden wir in Rails SQL fast nicht? - Die Existenzberechtigung von ActiveRecord

Viele Anfänger-Entwickler fühlen sich an diesem Punkt verwirrt.

  • Brauchen wir SQL nicht, wenn wir eine Datenbank verwenden?

  • Aber warum funktioniert ein Webdienst in Rails fast ohne SQL?

  • Was genau ist die Rolle von ActiveRecord, dass dies möglich ist?

Dieser Artikel erklärt genau den Kernpunkt.


1⃣ Was ist SQL? (nur die Essenz zusammengefasst)

SQL (Structured Query Language) ist

eine formelle Sprache zum Kommunizieren mit Datenbanken.

Wenn Sie mit der Datenbank arbeiten, verwenden Sie SQL.

Beispiel:

SELECT * FROM users WHERE age > 20;

Dieser Satz bedeutet

"Hole Datensätze aus der Tabelle 'users', bei denen das Alter größer als 20 ist".

Die Dinge, die Sie mit SQL tun können, lassen sich auf genau vier Punkte zusammenfassen.

  1. Erstellen - Daten erstellen

  2. Lesen - Daten lesen

  3. Aktualisieren - Daten aktualisieren

  4. Löschen - Daten löschen

Das heißt, CRUD.

Letztendlich

fordert jeder Webdienst

über SQL CRUD-Operationen von der Datenbank an.


2⃣ Aber in Rails verwenden wir SQL fast nicht. Warum? Weil es ActiveRecord gibt.

Eines der Kernkomponenten von Rails ist ActiveRecord.

ActiveRecord ist ein ORM (Object Relational Mapping).

Was bedeutet das?


3⃣ Was ist ORM? Ein System, das automatisch "Objekte ↔ Datenbanktabellen" verbindet

Programmiersprachen verwenden Objekte.

user = User.new(name: "bamcoding")

Datenbanken verwenden Datensätze.

1. Zeile der Tabelle users

Die Rolle von ORM ist nur eine:

"Objekte in der Ruby-Welt" mit "Datensätzen in der Datenbankwelt" automatisch zu verbinden.

Dadurch können wir

Datenbanken behandeln wie Objekte.


4⃣ Ersetzen von SQL durch ActiveRecord

Beispiel 1) Lesen von Daten (Read)

SQL:

SELECT * FROM users;

Rails:

User.all

Beispiel 2) Bedingte Suche

SQL:

SELECT * FROM users WHERE age > 20;

Rails:

User.where("age > 20")

Oder auf eine mehr Ruby-Weise:

User.where(age: 21..)

Beispiel 3) Erstellen (Create)

SQL:

INSERT INTO users (name, age) VALUES ('bamcoding', 34);

Rails:

User.create(name: "bamcoding", age: 34)

Beispiel 4) Aktualisieren (Update)

SQL:

UPDATE users SET age = 35 WHERE id = 1;

Rails:

user = User.find(1)
user.update(age: 35)

Beispiel 5) Löschen (Delete)

SQL:

DELETE FROM users WHERE id = 1;

Rails:

user = User.find(1)
user.destroy

5⃣ Kernpunkt: Rails-Entwickler arbeiten nicht mit SQL, sondern mit "Ruby" auf die Datenbank

Denn ActiveRecord

wandelt die von mir ausgeführten Ruby-Befehle

im Hintergrund in SQL um.

Das bedeutet,

Der Entwickler verwendet kein SQL, aber Rails erstellt und führt SQL intern aus.

Dank dessen kann der Entwickler

sich auf das Design der Geschäftslogik konzentrieren,

ohne die technische Belastung der direkten Steuerung der Datenbank.


6⃣ Der wahre Grund, warum ActiveRecord als "leistungsstark" bezeichnet wird

Die Stärke von ActiveRecord liegt nicht nur darin, dass "man kein SQL schreiben muss".

Das ist nur ein oberflächlicher Vorteil.

Die eigentliche Essenz sind die folgenden vier Punkte.


1) Das Modell und die DB-Tabelle sind automatisch verbunden

Wenn Sie das User-Modell erstellen,

wird automatisch eine Verbindung zur users-Tabelle hergestellt.

  • Sie müssen den Tabellennamen nicht anpassen

  • Sie müssen das Mapping nicht separat festlegen

  • Rails verbindet automatisch nach Konvention

Dies allein erhöht die Entwicklungsgeschwindigkeit explosionsartig.


2) Die Beziehungseinstellung ist überwältigend intuitiv

Beispiel:

class Building < ApplicationRecord
  has_many :rooms
end

class Room < ApplicationRecord
  belongs_to :building
end

Diese beiden Zeilen

lassen Rails standardmäßig Folgendes ausführen:

  • Erzeugt das richtige SQL JOIN

  • Unterstützt den Aufruf von building.rooms

  • Verwaltet automatisch den Fremdschlüssel building_id

  • Optimiert die beziehungsbezogene Abfrage

Um dies mit SQL direkt zu implementieren,

müssten Sie dutzende Zeilen JOIN, INDEX, Bedingungen schreiben.

ActiveRecord erledigt all dies

mit nur zwei Zeilen.


3) Sicherheit, Injektionsschutz, Abfrageoptimierung werden von Rails übernommen

Risiken bei der Verwendung von SQL direkt:

  • SQL-Injection

  • Leistungsprobleme durch falsche Abfragen

  • übermäßige Verwendung von SELECT *

  • Langsame Abfragen aufgrund fehlender INDEXe

ActiveRecord verhindert

die meisten Probleme im Voraus

oder wandelt sie in sichere SQL um.

Es ist das Sicherheitsnetz für Webentwickler.


4) Eine Entwicklungserfahrung, die vollständig in die Ruby-Syntax integriert ist

Sie können Abfragen auf eine Ruby-Weise zusammenstellen:

User.where(active: true)
    .where("age > ?", 20)
    .order(created_at: :desc)
    .limit(10)

Es sieht aus wie Ruby-Code,

aber intern wird optimiertes SQL generiert.

Diese Fähigkeit zur "Codekombination"

macht ActiveRecord zu einem der leistungsstärksten ORMs.


7⃣ Fazit - Warum Rails-Entwickler SQL fast nicht verwenden

Weil ActiveRecord alle Komplexität von SQL abstrahiert hat

Weil Entwickler nur Ruby-Code schreiben müssen

Weil Modell-Beziehung-Abfrage-Speicherung-Löschung sich alle wie die Manipulation von Ruby-Objekten anfühlen

Weil Produktivität, Sicherheit und Wartbarkeit überwältigend verbessert werden

ActiveRecord ist nicht nur ein einfaches ORM, sondern

der Kernmotor der Rails-Produktivität.

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Weiterlesen

Get notified of new posts

We'll email you when Bamchi Blog publishes new content.

Your email will only be used for new post notifications.