Dieser Artikel fasst das Wissen im Zusammenhang mit der PHP-Interviewfrage „Datenbank“ zusammen. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Antwort: Oracle, SQL Server, MySQL, Sybase, DB2, Access usw.
Welche Teile umfasst die SQL-Sprache? Was sind die Aktionsschlüsselwörter für jeden Abschnitt?
Antwort: Die SQL-Sprache besteht aus vier Teilen: Datendefinition (DDL), Datenmanipulation (DML), Datenkontrolle (DCL) und Datenabfrage (DQL). Datendefinition: Tabelle erstellen, Tabelle ändern, Tabelle löschen, Index erstellen/löschen usw. Datenmanipulation: Auswählen, einfügen, aktualisieren, löschen,
Datenkontrolle: gewähren, widerrufen
Datenabfrage: auswählen
Was sind die Integritätsbeschränkungen?
Datenintegrität bezieht sich auf die Genauigkeit und Zuverlässigkeit von Daten. Beinhaltet: (1) Entitätsintegrität: legt fest, dass jede Zeile der Tabelle eine eindeutige Entität in der Tabelle ist.
(2) Domänenintegrität: Dies bedeutet, dass die Spalten in der Tabelle bestimmte Datentypbeschränkungen erfüllen müssen, darunter Wertebereich, Genauigkeit und andere Vorschriften.
(3) Referenzielle Integrität: bedeutet, dass die Daten des Primärschlüssels und des Fremdschlüssels der beiden Tabellen konsistent sein sollten, um die Konsistenz der Daten zwischen den Tabellen sicherzustellen und Datenverlust oder die Verbreitung bedeutungsloser Daten in der Datenbank zu verhindern.
(4) Benutzerdefinierte Integrität: Verschiedene relationale Datenbanksysteme erfordern je nach Anwendungsumgebung häufig einige besondere Einschränkungen. Benutzerdefinierte Integrität ist eine Einschränkung für eine bestimmte relationale Datenbank, die die semantischen Anforderungen widerspiegelt, die eine bestimmte Anwendung erfüllen muss.
Was ist eine Transaktion? und seine Eigenschaften?
Transaktion: Es handelt sich um eine Reihe von Datenbankoperationen und die grundlegende logische Einheit von Datenbankanwendungen. Eigenschaften: (1) Atomarität: Das heißt, Unteilbarkeit, entweder werden alle Transaktionen ausgeführt oder keine.
(2) Konsistenz oder Stringability. Die Ausführung einer Transaktion wandelt die Datenbank von einem korrekten Zustand in einen anderen korrekten Zustand um
(3) Isolation. Bevor die Transaktion korrekt festgeschrieben wird, dürfen Änderungen der Daten durch die Transaktion keiner anderen Transaktion zur Verfügung gestellt werden,
(4) Haltbarkeit. Nachdem eine Transaktion korrekt übermittelt wurde, werden ihre Ergebnisse dauerhaft in der Datenbank gespeichert. Auch wenn nach der Übermittlung der Transaktion weitere Fehler auftreten, werden die Verarbeitungsergebnisse der Transaktion gespeichert.
Einfaches Verständnis: Alle Vorgänge in einer Transaktion sind entweder erfolgreich oder fehlschlagen.
Was ist ein Schloss?
Die Datenbank ist eine gemeinsame Ressource, die von mehreren Benutzern verwendet wird. Wenn mehrere Benutzer gleichzeitig auf Daten zugreifen, greifen mehrere Transaktionen gleichzeitig auf dieselben Daten in der Datenbank zu. Wenn gleichzeitige Vorgänge nicht kontrolliert werden, können falsche Daten gelesen und gespeichert werden, wodurch die Konsistenz der Datenbank zerstört wird. Sperren ist eine sehr wichtige Technologie, um die Parallelitätskontrolle von Datenbanken zu erreichen. Bevor eine Transaktion ein Datenobjekt bearbeitet, sendet sie zunächst eine Anfrage an das System, um es zu sperren. Nach der Sperrung hat die Transaktion eine gewisse Kontrolle über das Datenobjekt. Bevor die Transaktion die Sperre aufhebt, können andere Transaktionen das Datenobjekt nicht aktualisieren.
Grundlegende Sperrtypen: Zu den Sperren gehören Sperren auf Zeilenebene und Sperren auf Tabellenebene.
Was ist eine Ansicht? Was ist ein Cursor?
Eine Ansicht ist eine virtuelle Tabelle mit den gleichen Funktionen wie eine physische Tabelle. Ansichten können hinzugefügt, geändert, überprüft und bearbeitet werden. Eine Ansicht ist normalerweise eine Teilmenge von Zeilen oder Spalten einer oder mehrerer Tabellen. Änderungen an der Ansicht wirken sich nicht auf die zugrunde liegenden Tabellen aus. Im Vergleich zu Abfragen mit mehreren Tabellen ist es für uns einfacher, Daten zu erhalten. Cursor: Er verarbeitet die Abfrageergebnismenge effektiv als Einheit. Der Cursor kann auf einer bestimmten Zeile in der Zelle positioniert werden, um eine oder mehrere Zeilen aus der aktuellen Zeile im Ergebnissatz abzurufen. Sie können die aktuelle Zeile des Ergebnissatzes ändern. Cursor werden im Allgemeinen nicht verwendet, aber wenn Daten einzeln verarbeitet werden müssen, sind Cursor sehr wichtig.
Was ist eine gespeicherte Prozedur? Wie soll ich anrufen?
Eine gespeicherte Prozedur ist eine vorkompilierte SQL-Anweisung. Der Vorteil besteht darin, dass sie einen modularen Aufbau ermöglicht, was bedeutet, dass sie nur einmal erstellt werden muss und später im Programm mehrmals aufgerufen werden kann. Wenn für einen bestimmten Vorgang mehrere SQL-Ausführungen erforderlich sind, ist die Verwendung gespeicherter Prozeduren schneller als die Ausführung einfacher SQL-Anweisungen. Gespeicherte Prozeduren können über ein Befehlsobjekt aufgerufen werden.
Welche Rolle spielt der Index? Und welche Vor- und Nachteile hat es?
Ein Index ist eine spezielle Abfragetabelle, die die Datenbanksuchmaschine verwenden kann, um den Datenabruf zu beschleunigen. Es ist dem Inhaltsverzeichnis eines Buches im wirklichen Leben sehr ähnlich. Sie können die gewünschten Daten finden, ohne das gesamte Buch abzufragen. Indizes können eindeutig sein. Wenn Sie einen Index erstellen, können Sie eine einzelne Spalte oder mehrere Spalten angeben. Der Nachteil besteht darin, dass dadurch die Geschwindigkeit der Dateneingabe verlangsamt und auch die Größe der Datenbank erhöht wird.
Wie kann man die drei Paradigmen auf populäre Weise verstehen?
Erste Normalform: 1NF ist eine Atomizitätsbeschränkung für Attribute, die erfordert, dass Attribute atomar sind und nicht zerlegt werden können;
Zweite Normalform: 2NF ist eine Eindeutigkeitsbeschränkung für Datensätze, die erfordert, dass Datensätze eindeutige Bezeichner haben, d. h. die Eindeutigkeit von Entitäten ;
Dritte Normalform: 3NF ist eine Einschränkung der Feldredundanz, das heißt, jedes Feld kann nicht von anderen Feldern abgeleitet werden. Es erfordert, dass Felder nicht redundant sind. .
Was ist ein Basistisch? Was ist eine Ansicht?
Die Basistabelle ist eine Tabelle, die unabhängig existiert. In SQL entspricht eine Beziehung einer Tabelle.
Eine Ansicht ist eine Tabelle, die aus einer oder mehreren Basistabellen abgeleitet ist. Die Ansicht selbst wird nicht unabhängig in der Datenbank gespeichert, sondern ist eine virtuelle Tabelle. Bitte beschreiben Sie die Vorteile der Ansicht.
(1) Ansichten können Benutzeroperationen vereinfachen.
(2) Ansichten ermöglichen es Benutzern, dieselben Daten aus mehreren Blickwinkeln anzuzeigen.
(3) Ansichten bieten ein gewisses Maß an logischer Unabhängigkeit für die Datenbank.
(4) Ansichten können die Vertraulichkeit von Daten wahren ist mit einem Sicherheitsschutz ausgestattet.
Was bedeutet NULL? Der Wert NULL steht für UNKNOWN (unbekannt): Er steht nicht für „“ (leere Zeichenfolge).
Jeder Vergleich mit einem NULL-Wert führt zu einem NULL-Wert.
Sie können keinen Wert mit einem NULL-Wert vergleichen und logischerweise erwarten, eine Antwort zu erhalten.
Verwenden Sie IS NULL für die NULL-Beurteilung
Der Unterschied zwischen Primärschlüssel, Fremdschlüssel und Index
Definition:
Primärschlüssel – identifiziert einen Datensatz eindeutig, kann nicht dupliziert werden und darf nicht leer sein
Fremdschlüssel – der Fremdschlüssel einer Tabelle ist der Primärschlüssel einer anderen Tabelle, Fremdschlüssel können Duplikate haben, können ein Nullwert sein
Index – dieses Feld hat keine doppelten Werte, kann aber einen Nullwert haben
Funktion:
Primärschlüssel – wird verwendet, um die Datenintegrität sicherzustellen
Fremdschlüssel – wird verwendet, um Verbindungen herzustellen andere Tabellen
Index – soll die Sortiergeschwindigkeit von Abfragen verbessern
Nummer:
Primärschlüssel – es kann nur einen Primärschlüssel geben
Fremdschlüssel – eine Tabelle kann mehrere Fremdschlüssel haben
Index – eine Tabelle kann mehrere eindeutige Indizes haben
Überprüfen Sie die in der Datenbanktabelle definierte Einschränkung, um die in dieser Spalte eingegebenen Werte zu begrenzen.
Sagen Sie mir, welche Methoden es gibt, um SQL-Anweisungen zu optimieren? (Wählen Sie einige aus) (1) In der Where-Klausel: Die Verbindung zwischen Where-Tabellen muss vor anderen Where-Bedingungen geschrieben werden, und jene Bedingungen, die die maximale Anzahl von Datensätzen herausfiltern können, müssen am Ende der Where-Klausel geschrieben werden . HABEN ist das Letzte.
(2) Ersetzen Sie IN durch EXISTS und NOT IN durch NOT EXISTS.
(3) Vermeiden Sie die Verwendung von Berechnungen für Indexspalten
(4) Vermeiden Sie die Verwendung von IS NULL und IS NOT NULL für Indexspalten
(5) Um Abfragen zu optimieren, versuchen Sie, vollständige Tabellenscans zu vermeiden. Überlegen Sie zunächst, wo und in welcher Reihenfolge. Erstellen Sie einen Index für beteiligte Spalten von.
(6) Sie sollten versuchen, Nullwerturteile für Felder in der where-Klausel zu vermeiden, da die Engine sonst die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt.
(7) Versuchen Sie, Ausdrucksoperationen für Felder in der Klausel zu vermeiden where-Klausel. Dies führt dazu, dass die Engine die Verwendung des Index aufgibt und einen vollständigen Tabellenscan durchführt
Was ist der Unterschied zwischen „korrelierter Unterabfrage“ und „nicht korrelierter Unterabfrage“ in einer SQL-Anweisung? (1) Eine nicht korrelierte Unterabfrage ist eine von der äußeren Abfrage unabhängige Unterabfrage. Die Unterabfrage wird insgesamt einmal ausgeführt und der Wert wird nach der Ausführung an die äußere Abfrage übergeben.
(2) Die Ausführung der relevanten Unterabfrage hängt von den Daten der externen Abfrage ab. Wenn die externe Abfrage eine Zeile ausführt, wird die Unterabfrage einmal ausgeführt.
Daher sind nicht korrelierte Unterabfragen effizienter als korrelierte Unterabfragen
Was ist der Unterschied zwischen char und varchar? Char ist ein Typ mit fester Länge, während varchar ein Typ mit variabler Länge ist.
Unterschied:
In einer Datenspalte vom Typ char(M) belegt jeder Wert M Bytes. Wenn eine bestimmte Länge kleiner als M ist, ergänzt MySQL sie rechts mit Leerzeichen. (Die aufgefüllten Leerzeichen werden während des Suchvorgangs entfernt).
In der Datenspalte vom Typ varchar(M) belegt jeder Wert gerade genug Bytes plus ein Byte, um seine Länge aufzuzeichnen (d. h. die Gesamtlänge beträgt L+1 Bytes).
MyISAM ist eine nicht-transaktionale Speicher-Engine; geeignet für Anwendungen mit häufigen Tabellensperren; kein Deadlock unterstützt keine Transaktionen. Geeignet für kleine Datenmengen und geringe Parallelität. Innodb ist eine Speicher-Engine, die für Anwendungen mit vielen Einfügungs- und Aktualisierungsvorgängen geeignet ist. Bei richtiger Gestaltung handelt es sich um eine Zeilensperre (der größte Unterschied liegt in der Sperrebene). ; geeignet für Big Data und große Parallelität.
MyISAM, InnoDB, HEAP, BOB, ARCHIVE, CSV usw.
MyISAM: Ausgereift, stabil, einfach zu verwalten und schnell zu lesen. Einige Funktionen (Transaktionen usw.) unterstützen keine Sperren auf Tabellenebene.
MySQL-Datenbank wird als Speicher des Veröffentlichungssystems verwendet. Der Zuwachs von mehr als 50.000 Elementen pro Tag wird auf drei Jahre Betrieb und Wartung geschätzt.
(1) Entwerfen Sie eine gut gestaltete Datenbankstruktur, ermöglichen Sie teilweise Datenredundanz und versuchen Sie, Join-Abfragen zu vermeiden, um die Effizienz zu verbessern.
(2) Wählen Sie den entsprechenden Tabellenfelddatentyp und die Speicher-Engine aus und fügen Sie die Indizes entsprechend hinzu.
(3) Führen Sie eine Lese-/Schreibtrennung bei der MySQL-Master-Slave-Replikation durch.
(4) Teilen Sie die Datentabelle in Tabellen auf, um die Datenmenge in einer einzelnen Tabelle zu reduzieren und die Abfragegeschwindigkeit zu verbessern.
(5) Fügen Sie einen Caching-Mechanismus hinzu, z. B. Redis, Memcached usw.
(6) Für Seiten, die sich nicht häufig ändern, generieren Sie statische Seiten (z. B. OB-Caching).
(7) Schreiben Sie effizientes SQL. Beispielsweise wird SELECT * FROM TABEL in SELECT field_1, field_2, field_3 FROM TABLE geändert.
Welche Methode verwenden Sie bei Websites mit hohem Datenverkehr, um das Problem der Statistik von Seitenbesuchen zu lösen?
(1) Bestätigen Sie, ob der Server den aktuellen Datenverkehr unterstützen kann.
(2) Datenbankzugriff optimieren.
(3) Verbieten Sie den externen Zugriff auf Links (Hotlinking), wie z. B. das Hotlinking von Bildern.
(4) Datei-Downloads kontrollieren.
(5) Führen Sie einen Lastausgleich durch und verwenden Sie verschiedene Hosts, um den Datenverkehr zu entlasten.
(6) Nutzen Sie Browsing-Statistiksoftware, um die Anzahl der Besuche zu ermitteln und gezielte Optimierungen durchzuführen. bis
Das obige ist der detaillierte Inhalt vonFassen Sie das Wissen im Zusammenhang mit der PHP-Interviewfrage „Datenbank' zusammen.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!