MySQL Detaillierte Analyse vom Löschen der Datenbank bis zum Weglaufen_Fortgeschritten (I) - Datenintegrität

MySQL Detaillierte Analyse vom Löschen der Datenbank bis zum Weglaufen_Fortgeschritten (I) - Datenintegrität

1. Einführung in die Datenintegrität

1. Einführung in die Datenintegrität

Datenredundanz bezieht sich auf das Vorhandensein einiger doppelter Daten in der Datenbank, und Datenintegrität bedeutet, dass die Daten in der Datenbank die tatsächliche Situation korrekt widerspiegeln können.

Datenintegrität bezieht sich auf die Zuverlässigkeit und Genauigkeit von Daten. Es gibt vier Arten von Datenintegrität:

A. Entitätsintegrität: Die Entitätsintegrität erzwingt die Integrität der Identifikationsspalte oder des Primärschlüssels einer Tabelle (durch eine eindeutige Einschränkung, eine Primärschlüsseleinschränkung oder Identitätsspaltenattribute).

B. Domänenintegrität: Einschränken von Typen (Datentypen), Formaten (durch Prüfbeschränkungen und Regeln) und möglichen Wertebereichen (durch Fremdschlüsselbeschränkungen, Prüfbeschränkungen, Standardwertdefinitionen, Nicht-Null-Beschränkungen und Regeln).

C. Referenzielle Integrität: Die referenzielle Integrität behält die definierten Beziehungen zwischen Tabellen beim Löschen und Eingeben von Datensätzen bei. Durch referenzielle Integrität wird sichergestellt, dass Schlüsselwerte über alle Tabellen hinweg konsistent sind und nicht auf nicht vorhandene Werte verweisen können. Wenn ein Schlüssel.

D. Definitionsintegrität: Von Benutzern selbst definierte Geschäftsregeln, wie z. B. die Verwendung von Triggern zur Implementierung benutzerdefinierter Geschäftsregeln.

2. Methode zur Implementierung der Datenintegrität

MySQL unterstützt keine Check-Constraints. Sie können zwar einer Spalte einen Check-Constraint hinzufügen, das funktioniert jedoch nicht.

2. Implementierung der Entity-Integrität

1. Einführung in die Implementierung der Entitätsintegrität

Es gibt zwei Möglichkeiten, Entitätsintegrität zu implementieren:

A. Primärschlüsselbeschränkung: Eine Tabelle kann nur eine Spalte mit einem Primärschlüssel haben. Der Wert muss eindeutig sein und darf nicht leer sein. Für die innoDB-Speicher-Engine ist der Primärschlüssel der Index.

B. Eindeutige Wertbeschränkung: Eine Tabelle kann mehrere Spalten mit hinzugefügten eindeutigen Wertbeschränkung haben, sodass ein Datensatz immer einen Nullwert haben kann.

Die Entitätsintegrität wird durch Primärschlüssel und eindeutige Einschränkungen erreicht, wodurch sichergestellt wird, dass die Datensätze in der Tabelle eine eindeutige Kennung haben. Der Primärschlüssel wird in zwei Typen unterteilt: Primärschlüssel und AUTO_INCREMENT-PRIMARY-KEY.

2. Primärschlüssel

Der Name des Primärschlüssels in MySQL ist immer PRIMARY. Wenn beim Erstellen einer Primärschlüsseleinschränkung die Speicher-Engine der Tabelle innoDB ist, erstellt das System standardmäßig einen entsprechenden eindeutigen Index für die Spalten- und Spaltenkombination.

Die Primärschlüsseleinschränkung entspricht der Kombination aus eindeutiger Einschränkung und Nicht-Null-Einschränkung. Die Spalten der Primärschlüsseleinschränkung dürfen nicht wiederholt werden und es dürfen keine Nullwerte vorkommen. Bei der Primärschlüsseleinschränkung mehrerer Spalten dürfen keine Spalten Nullwerte aufweisen und die kombinierten Werte dürfen nicht wiederholt werden. Jede Tabelle darf höchstens einen Primärschlüssel haben. Die Primärschlüsseleinschränkung kann auf Spaltenebene oder auf Tabellenebene erstellt werden.

A. Angeben des Primärschlüssels beim Erstellen einer Tabelle

Methode 1 zum Festlegen des Primärschlüssels beim Erstellen einer Tabelle:

Tischprodukt erstellen
 (
 Produkt-ID int Primärschlüssel,
 pName VARCHAR(10),
 Preis DOPPELT
 )ENGINE=MyISAM-Standard CHARSET=utf8;

Methode 2 zum Festlegen des Primärschlüssels beim Erstellen einer Tabelle:

Tischprodukt erstellen
 (
 Produkt-ID int,
 pName VARCHAR(10),
 Preis DOUBLE, CONSTRAINT pk_s_productID PRIMARY KEY(Produkt-ID)
 )ENGINE=MyISAM-Standard CHARSET=utf8;

Beim Einfügen von Datensätzen in eine Tabelle mit einem angegebenen Primärschlüssel sind doppelte IDs nicht zulässig. Wenn der Primärschlüsselwert nicht angegeben ist, ist der Standardwert 0.

Die MylSAM-Speicher-Engine erstellt keine Indizes für die Primärschlüsselspalten und die Speicherreihenfolge der Datensätze in der Tabelle entspricht der Einfügereihenfolge.

Die InnoDB-Speicher-Engine erstellt automatisch einen Index für die Primärschlüsselspalte und die eingefügten Datensätze werden in der Reihenfolge der Primärschlüsselwerte angeordnet.

Tabellenprodukt ändern ENGINE=InnoDB; 

B. Primärschlüssel hinzufügen

Tabelle TStudent ändern, Primärschlüssel hinzufügen (Studenten-ID);

C. Löschen des Primärschlüssels

Tabelle TStudent ändern, Primärschlüssel löschen;

3. Primärschlüssel automatisch inkrementieren

AUTO_INCREMENT PRIMÄRSCHLÜSSEL

Wenn Sie keinen Primärschlüsselwert angeben, wird der Maximalwert des vorhandenen Primärschlüsselwertes automatisch um 1 erhöht, um den Primärschlüssel des neuen Datensatzes zu erhalten. Der Primärschlüsselwert beginnt standardmäßig bei 1. Sie können einer Spalte mit dem Datentyp „Integer“ einen automatisch inkrementierenden Primärschlüssel hinzufügen.

A. Angeben von automatisch inkrementierten Spalten beim Erstellen einer Tabelle

Tischprodukt erstellen
 (
 productID int PRIMARY KEY AUTO_INCREMENT nicht NULL,
 pName VARCHAR(10),
 Preis DOPPELT
 )ENGINE=MyISAM-Standard CHARSET=utf8;

B. Angeben einer Auto-Increment-Spalte für eine vorhandene Tabelle

Tabelle TStudent ändern, Spalte studentID ändern, int PRIMARY KEY AUTO_INCREMENT;

C. Löschen Sie die Auto-Increment-Spalte in der Tabelle

Tabelle TStudent ändern, Spalte „Studenten-ID“ ändern, int nicht NULL;

Löschen Sie die Auto-Increment-Spalte. Sie ist immer noch der Primärschlüssel, jedoch ohne die Auto-Increment-Funktion.

4. Zusammengesetzter Primärschlüssel

Erstellen Sie einen Primärschlüssel mithilfe von zwei oder mehr Spalten einer Tabelle.

A. Angeben eines zusammengesetzten Primärschlüssels beim Erstellen einer Tabelle

Tabelle erstellen Student
 (
 Studenten-ID int, ID INT,
 sname VARCHAR(10),
 Punktzahl int,
 PRIMÄRSCHLÜSSEL (Studenten-ID, ID)
 )ENGINE=MyISAM-Standard CHARSET=utf8;

B. Hinzufügen eines zusammengesetzten Primärschlüssels zur Tabelle

Tabelle „Student“ ändern, PRIMARY KEY (Studenten-ID, ID) hinzufügen;

C. Zusammengesetzten Primärschlüssel löschen

Tabelle ändern, Student, Primärschlüssel löschen;

5. Einzigartige Einschränkung

UNIQUE KEY, eine eindeutige Einschränkung, gibt an, dass die Daten in einer bestimmten Spalte oder einer Spaltenkombination nicht wiederholt werden können.

A. Angeben einer eindeutigen Einschränkung beim Erstellen einer Tabelle

Tabellenpunktzahl erstellen
 (sname VARCHAR(10) UNIQUE,
 Punktzahl int nicht NULL
 );

B. Hinzufügen einer Unique-Einschränkung zu einer vorhandenen Spalte

Tabellenbewertung ändern, CONSTRAINT hinzufügen, us_sname UNIQUE(sname);

Das Hinzufügen einer eindeutigen Einschränkung ist nicht zulässig, wenn die vorhandenen Datensätze in der Tabelle doppelte Werte enthalten. Sie können Aggregatfunktionen verwenden, um doppelte Datensätze zu finden, sie zu löschen und dann eine eindeutige Einschränkung zu erstellen.

C. Erstellen eines zusammengesetzten eindeutigen Indexes

Tabelle erstellen Student
 (
 Studenten-ID int, ID INT,
 sname VARCHAR(10),
 Punktzahl int, CONSTRAINT uc_id UNIQUE(Studenten-ID, ID)
 )ENGINE=MyISAM-Standard CHARSET=utf8;

D. Löschen Sie die eindeutige Einschränkung der Spalte

Tabellenpunktzahl ändern, Index uc_sname löschen;

3. Domänenintegrität

1. Standardwerte

Wenn beim Einfügen eines neuen Datensatzes in eine Tabelle dem Feld kein Wert zugewiesen ist, weist das Datenbanksystem dem Feld automatisch einen Standardwert zu.

Tabelle erstellen st
(sid INT nicht null Primärschlüssel auto_increment,
sname varchar(10),
Betreff varchar (20) Standard 'Software Engineering',
entertime TIMESTAMP Standard jetzt()
);

So fügen Sie einer Spalte in einer Tabelle eine Standardwerteinschränkung hinzu:

Alarmtabelle st, Spalte „Betreff“ ändern VARCHAR (20), Standard „Informatik und Technologie“;

So entfernen Sie die Standardwerteinschränkung aus einer Spalte in einer Tabelle:

Alarmtabelle st, Spalte „Betreff“ ändern VARCHAR (20) Standard NULL;

2. Erstellen Sie eine Nicht-Null-Einschränkung

Die Nicht-Null-Einschränkung wird verwendet, um sicherzustellen, dass der Wert der aktuellen Spalte nicht null ist. Die Nicht-Null-Einschränkung kann nur in der Spalte des Tabellenobjekts auftreten.

Eigenschaften des Nulltyps: Alle Arten von Werten können null sein, einschließlich int, float und anderen Datentypen. Leere Zeichenfolgen sind nicht gleich NULL und 0 ist nicht gleich NULL.

A. Geben Sie beim Erstellen einer Tabelle eine Nicht-Null-Einschränkung für die Spalte an.

Tabellenpunktzahl erstellen
 (sname VARCHAR(10) nicht NULL,
 Punktzahl int nicht NULL
 );

B. Geben Sie eine Nicht-Null-Einschränkung für die angegebene Spalte an.

Alarmtabellen-Score, Spalten-Score ändern, Int nicht NULL;

C. Löschen Sie die Nicht-Null-Einschränkung

Tabellenpunktzahl ändern, Spaltenpunktzahl ändern int;

3. Prüfen

Das Schlüsselwort check funktioniert nur beim Einfügen neuer Zeilen oder beim Ändern vorhandener Zeilen. Es verhindert, dass Werte, die die Bedingungen nicht erfüllen, in die Spalte gelangen. Für Nullwerte ist es ungültig, da das Einfügen von Null gleichbedeutend mit Nichteinfügen ist. Eine Spalte kann mehrere Häkchen enthalten.

Alter int check (Alter zwischen 10 und 20);

Derzeit unterstützt MySQL keine Prüfbeschränkungen. Microsoft MSSQL unterstützt Prüfbeschränkungen, Sie können jedoch beim Erstellen einer Tabelle Prüfbeschränkungen angeben, diese funktionieren jedoch nicht.

IV. Referenzielle Integrität

1. Einführung in die referenzielle Integrität

Die referenzielle Integrität von MySQL wird im Allgemeinen durch MySQL-Fremdschlüssel erreicht.

Die Spalten der Tabelle, auf die durch den Fremdschlüssel verwiesen wird (nur von innoDB unterstützt), müssen der Primärschlüssel sein.

Eine Fremdschlüsseldeklaration besteht aus drei Teilen:

A. Welche Spalte oder Spaltenkombination ist der Fremdschlüssel

B. Geben Sie die Tabelle und die Spalte an, auf die der Fremdschlüssel verweist

C. Referenzaktionen [kaskadieren (Kaskadenvorgang), einschränken (Ablehnungsvorgang), auf Null setzen (auf leer setzen), keine Aktion, auf Standard setzen].

Wenn eine Fremdschlüsseleinschränkung eine Referenzaktion angibt, werden beim Ändern oder Löschen des Datensatzes der Primärtabelle die von der Sekundärtabelle referenzierten Spalten entsprechend geändert oder nicht geändert, die Änderung wird verweigert oder sie werden auf den Standardwert gesetzt.

Der Spaltenname der referenzierten Tabelle muss der Primärschlüssel sein und beim Löschen der referenzierten Tabelle muss die Referenzbeziehung gelöscht oder die aktuelle Tabelle gelöscht werden.

2. Geben Sie beim Erstellen von Tabellen Fremdschlüssel an

Erstellen Sie zwei Tabellen, die Studententabelle und die Punktetabelle. Der Wert der SID-Spalte der Punktetabelle bezieht sich auf die Studententabelle (die SID-Spalte der Studententabelle ist als Primärschlüssel festgelegt, und die Speicher-Engine der Tabelle ist innodb. Die Speicher-Engine der Punktetabelle muss ebenfalls auf innodb festgelegt sein).

Tabelle erstellen Student
(sid int nicht null Primärschlüssel,
sname varchar(20)
) engine=innodb;Tabellenpunktzahl erstellen
(sid int nicht null,
Mark INT, Einschränkung score_fk FOREIGN KEY (sid) verweist auf Student (sid) beim Löschen der Kaskade, beim Aktualisieren der Kaskade) Engine=innodb;

Einfügen eines Datensatzes in die Studententabelle

in Schülerwerte einfügen (1, ‚Sun Wukong‘)

Tragen Sie einen Eintrag in die Notentabelle ein, die Matrikelnummer ist 1, Erfolg.

in Scorewerte einfügen (1,98)

Tragen Sie einen Eintrag in die Notentabelle ein, die Matrikelnummer ist 2, nicht bestanden.

in Scorewerte einfügen (2,88)

Fügen Sie einen Datensatz mit der Studentennummer 2 in die Studententabelle ein

in Schülerwerte einfügen (2, '唐僧')

Anschließend fügen Sie erfolgreich einen Datensatz mit der Matrikelnummer 2 in die Notentabelle ein, was beweist, dass die Fremdschlüsselreferenz erfolgreich ist.

in Scorewerte einfügen (2,88);

3. Referenzbeschränkungen löschen

Tabellenscore ändern, Fremdschlüssel score_fk löschen;

4. Fügen Sie vorhandenen Tabellen referenzielle Einschränkungen hinzu

Tabellenbewertung ändern, Einschränkung score_fk2 hinzufügen, Fremdschlüssel (sid) referenziert Student (sid);

5. Überprüfen Sie das Löschen und Aktualisieren kaskadierender Aktionen

In der in der Punktetabelle erstellten referenziellen Integrität wird für die Referenzaktion der Löschaktion und der Aktualisierungsaktion Kaskade ausgewählt. Wenn die SID in der Studententabelle aktualisiert wird, wird auch die entsprechende SID in der Punktetabelle aktualisiert. Wenn der Student gelöscht wird, wird auch der Datensatz der SID, die der Punktetabelle entspricht, automatisch gelöscht.

Aktualisieren Sie die Studententabelle. Der Student mit der Matrikelnummer 1 wird in 10 geändert.

Aktualisiere den Studentensatz sid = 10, wobei sid = 1

Schauen Sie auf den Bewertungsbogen und Sie können sehen, dass sich die Schülernummer 1 in 10 geändert hat.

Wählen Sie * aus der Partitur

Löschen Sie den Studenten mit der Matrikelnummer 2 in der Studententabelle

Löschen von Student, wo Sid = 2

Sie können die Punktetabelle sehen, die Punktzahl des Schülers wurde gelöscht

Wählen Sie * aus der Partitur

6. Kaskadenaktion überprüfen Keine Aktion

Die Kaskadenaktion ist auf KEINE AKTION eingestellt. Wenn in der untergeordneten Tabelle übereinstimmende Datensätze vorhanden sind, sind Aktualisierungs-/Löschvorgänge für den entsprechenden Kandidatenschlüssel der übergeordneten Tabelle nicht zulässig.

Die Aktion „Einschränken“ ist dieselbe wie die Aktion „Nein“. Beide überprüfen Fremdschlüsseleinschränkungen sofort.

Setzen Sie die Referenzaktion auf keine Aktion. Wenn die Punktetabelle die Studenten-ID enthält, kann die Spalte „Studenten-ID“ der Studententabelle nicht geändert und der Student nicht gelöscht werden. Es sei denn, Sie löschen zuerst die Note des Schülers und dann den Schüler selbst.

Löschen Sie die Fremdschlüsseleinschränkung der Punktetabelle

Tabellenscore ändern, Fremdschlüssel score_fk löschen;

Fügen Sie der Spalte „sid“ der Punktetabelle eine Fremdschlüsseleinschränkung hinzu.

ALTER TABLE „score“, ADD CONSTRAINT „score_fk“, FOREIGN KEY („sid“) REFERENZEN „student“ („sid“) BEIM LÖSCHEN KEINE AKTION, BEIM UPDATE KEINE AKTION;

Aktualisieren der Matrikelnummer der Matrikelnummer 10, fehlgeschlagen

Aktualisiere den Studentensatz sid = 11, wobei sid = 10

Löschen des Studenten mit der Matrikelnummer 10, fehlgeschlagen

Löschen von Student, wo Sid = 10

Sie müssen zuerst den Datensatz in der Schülerbewertungstabelle löschen und dann den Schüler löschen.

Löschen aus Student, wo sid=10, Löschen aus Score, wo sid=10;

7. Überprüfen Sie die Kaskadenaktion Set NULL

Wenn Sie Datensätze in der übergeordneten Tabelle aktualisieren/löschen, setzen Sie die Spalten der entsprechenden Datensätze in der untergeordneten Tabelle auf null. Beachten Sie, dass der Fremdschlüssel der untergeordneten Tabelle nicht ungleich null sein kann.

Löschen Sie die Fremdschlüsseleinschränkung der Notentabelle

Tabellenscore ändern, Fremdschlüssel score_fk löschen;

Fügen Sie der Spalte „sid“ der Notentabelle eine Fremdschlüsseleinschränkung hinzu und legen Sie die Referenzaktion auf „null“ fest.

Tabellenbewertung ändern, Einschränkung score_fk hinzufügen, Fremdschlüssel (Sid) verweist auf Student (Sid), beim Löschen auf NULL setzen, beim Aktualisieren auf NULL setzen;

Ändern Sie den Standardwert der Spalte „Sid“ in der Score-Tabelle auf NULL.

ALTER TABLE `score` MODIFY COLUMN `sid` INTEGER(11) DEFAULT NULL;in Studentenwerte einfügen (1,'Score')in Studentenwerte einfügen (2,'Score')in Punktewerte einfügen (1,98)in Punktewerte einfügen (2,88)

Löschen Sie den Schüler mit der Matrikelnummer 1 in der Schülertabelle

delete from student where sid = 1

Überprüfen Sie die Punktetabelle. Die Spalte mit der Schülernummer 1 in der Punktetabelle ist NULL.

select * from score

Zusammenfassen

Das Obige ist die Einführung des Herausgebers in MySQL, vom Löschen der Datenbank bis zum Weglaufen_Erweitert (I) – Datenintegrität. Ich hoffe, es wird allen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • MySQL: Datenintegrität
  • MySQL- und PHP-Grundlagen und -Anwendungen - Datenintegrität

<<:  Erstellen einer einfachen Game-Engine mit React Native

>>:  Dockerfile echo gibt die Methode zum Implementieren mehrerer Textzeilen in der angegebenen Datei an

Artikel empfehlen

Wie werden Leerzeichen in HTML dargestellt (was bedeuten sie)?

Bei der Webentwicklung stößt man häufig auf Zeiche...

Detaillierte Erklärung des Linux-Kernel-Makros Container_Of

Inhaltsverzeichnis 1. Wie werden Strukturen im Ge...

So fügen Sie einen Docker-Port hinzu und erhalten eine Docker-Datei

Holen Sie sich das Dockerfile aus dem Docker-Imag...

WeChat-Miniprogramme ermöglichen nahtloses Scrollen

In diesem Artikelbeispiel wird der spezifische Co...

Django2.* + Mysql5.7-Entwicklungsumgebung Integrations-Tutorial-Diagramm

Umfeld: MAC_OS 10.12 Python 3.6 MySQL 5.7.25 Djan...

So verstehen Sie SELinux unter Linux

Inhaltsverzeichnis 1. Einführung in SELinux 2. Gr...

So fügen Sie MySQL Indizes hinzu

Hier ist eine kurze Einführung in Indizes: Der Zw...

Tutorial zur Installation von MySQL 5.6 mit RPM in CentOS

Alle vorherigen Projekte wurden in der Windows-Sy...

80 Zeilen Code zum Schreiben eines Webpack-Plugins und Veröffentlichen auf npm

1. Einleitung Ich habe vor Kurzem die Prinzipien ...

Praxis der Linux-Datei- und Benutzerverwaltung

1. Zeigen Sie die Dateien oder Verzeichnisse im V...

CSS kompletter Parallax-Scrolling-Effekt

1. Was ist Beim Parallax-Scrolling handelt es sic...