Eine umfassende Zusammenfassung häufig verwendeter Anweisungen in MySQL (unbedingt lesen)

Eine umfassende Zusammenfassung häufig verwendeter Anweisungen in MySQL (unbedingt lesen)

Die unten zusammengefassten Wissenspunkte werden alle häufig verwendet und stellen wertvolle Informationen dar. Bitte sammeln Sie sie gut.

/* MySQL starten */

net start mysql

/* Mit dem Server verbinden und trennen*/

mysql -h Adresse-P Port-u Benutzername-p Passwort

/* Überspringen Sie die Berechtigungsüberprüfung, um sich bei MySQL anzumelden */

mysqld --skip-grant-tables
-- Ändern Sie die Funktion zur Verschlüsselung des Root-Passworts password()
mysql.user aktualisieren, Passwort festlegen=Passwort('root');

SHOW PROCESSLIST -- zeigt an, welche Threads ausgeführt werden
VARIABLEN ANZEIGEN --

/* Datenbankoperationen */ ------------------

-- Aktuelle Datenbank anzeigen
Datenbank auswählen();
-- Aktuelle Uhrzeit, Benutzernamen, Datenbankversion anzeigen
wähle jetzt(), Benutzer(), Version();
-- Bibliothek erstellen
Datenbank erstellen [falls nicht vorhanden] Datenbankname Datenbankoptionen
Datenbankoptionen:
ZEICHENSATZ Zeichensatzname
COLLATE Sortierungsname
-- Vorhandene Bibliotheken anzeigen
Datenbanken anzeigen [wie 'Muster']
- Aktuelle Bibliotheksinformationen anzeigen
anzeigen, Datenbank erstellen, Datenbankname
-- Ändern Sie die Informationen zu den Bibliotheksoptionen
Informationen zur Option „Datenbankbibliotheksname ändern“
-- Bibliothek löschen
Datenbank löschen[falls vorhanden] Datenbankname
Löschen Sie gleichzeitig das Verzeichnis und seinen Inhalt, der mit der Datenbank zusammenhängt

/* Tabellenoperationen */ ------------------

-- Tabelle erstellen
erstelle [temporäre] Tabelle [falls nicht vorhanden] [Datenbankname.] Tabellenname (Definition der Tabellenstruktur) [Tabellenoptionen]
Jedes Feld muss einen Datentyp haben
Nach dem letzten Feld darf kein Komma stehen
temporäre Tabelle, die automatisch verschwindet, wenn die Sitzung endet

Zur Definition der Felder:

Feldname Datentyp [NOT NULL | NULL] [DEFAULT Standardwert] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'Zeichenfolge']

-- Tabellenoptionen
--Zeichensatz
CHARSET = Zeichensatzname
Wenn die Tabelle nicht gesetzt ist, wird der Datenbankzeichensatz verwendet
- Speicher-Engine
ENGINE = Enginename
Die Tabelle verwendet bei der Datenverwaltung unterschiedliche Datenstrukturen. Unterschiedliche Strukturen führen zu unterschiedlichen Verarbeitungsmethoden, bereitgestellten Funktionsoperationen usw.
Gängige Engines: InnoDB MyISAM Memory/Heap BDB Merge Example CSV MaxDB Archive
Verschiedene Engines verwenden unterschiedliche Methoden zum Speichern der Tabellenstruktur und der Daten.
Bedeutung der MyISAM-Tabellendatei: .frm-Tabellendefinition, .MYD-Tabellendaten, .MYI-Tabellenindex
Bedeutung der InnoDB-Tabellendatei: .frm-Tabellendefinition, Tablespace-Daten und Protokolldateien
SHOW ENGINES -- Statusinformationen zu Speicher-Engines anzeigen
SHOW ENGINE Enginename {LOGS|STATUS} - Zeigt Log- oder Statusinformationen der Speicher-Engine an
--Datendateiverzeichnis
DATA DIRECTORY = 'Verzeichnis'
-- Indexdateiverzeichnis
INDEX DIRECTORY = 'Verzeichnis'
-- Tabellenkommentare
COMMENT = "Zeichenfolge"
-- Partitionsoptionen
PARTITION BY ... (Details siehe Handbuch)
-- Alle Tabellen anzeigen
TABELLEN ANZEIGEN [LIKE 'Muster']
TABELLEN ANZEIGEN AB Tabellenname
-- Tabellenstruktur anzeigen
SHOW CREATE TABLE Tabellenname (nähere Informationen)
DESC Tabellenname/ DESCRIBE Tabellenname/ EXPLAIN Tabellenname/ SHOW COLUMNS FROM Tabellenname [LIKE 'PATTERN']
TABELLENSTATUS ANZEIGEN [FROM db_name] [LIKE 'Muster']
-- Tabelle ändern
- Optionen zum Ändern der Tabelle selbst
ALTER TABLE Tabellenname Tabellenoptionen
ZB: ALTER TABLE Tabellenname ENGINE=MYISAM;
-- Benennen Sie die Tabelle um
RENAME TABLE ursprünglicher Tabellenname TO neuer Tabellenname
UMBENENNEN DER TABELLE – ursprünglicher Tabellenname – IN Datenbankname.Tabellenname (Sie können die Tabelle in eine andere Datenbank verschieben)
-- RENAME kann zwei Tabellennamen austauschen
-- Ändern Sie die Feldstruktur der Tabelle
ALTER TABLE Tabellenname Operationsname
-- Operationsname
ADD[COLUMN] Feldname -- ein Feld hinzufügen
NACH dem Feldnamen -- gibt an, dass nach dem Feldnamen Folgendes hinzugefügt wird
FIRST -- gibt das Hinzufügen des ersten
ADD PRIMARY KEY (Feldname) – Erstellen Sie einen Primärschlüssel
ADD UNIQUE [Indexname] (Feldname) - Einen eindeutigen Index erstellen
ADD INDEX [Indexname] (Feldname) -- einen normalen Index erstellen
HINZUFÜGEN
DROP[COLUMN] Feldname -- ein Feld löschen
MODIFY[COLUMN] Feldname Feldattribute -- Unterstützt die Änderung von Feldattributen, kann aber keine Feldnamen ändern (alle Originalattribute müssen ebenfalls geschrieben werden)
CHANGE[COLUMN] ursprünglicher Feldname neuer Feldname Feldattribute -- Unterstützung für die Änderung von Feldnamen
DROP PRIMARY KEY - Löscht den Primärschlüssel (bevor Sie den Primärschlüssel löschen, müssen Sie sein AUTO_INCREMENT-Attribut löschen)
DROP INDEX Indexname - Einen Index löschen
DROP FOREIGN KEY -- Einen Fremdschlüssel löschen

-- Tabelle löschen
DROP TABLE[IF EXISTS] Tabellenname…
- Tabellendaten löschen
TRUNCATE [TABLE] Tabellenname
-- Tabellenstruktur kopieren
CREATE TABLE Tabellenname LIKE der zu kopierende Tabellenname
-- Tabellenstruktur und Daten kopieren
CREATE TABLE Tabellenname [AS] SELECT * FROM zu kopierender Tabellenname
-- Überprüfen Sie die Tabelle auf Fehler
Tabelle überprüfen Tabellenname [, Tabellenname] ... [Option] ...
-- Tabelle optimieren
OPTIMIEREN [LOKAL | NO_WRITE_TO_BINLOG] TABELLE Tabellenname [, Tabellenname] …
-- Reparaturtisch
REPARATUR [LOKAL | NO_WRITE_TO_BINLOG] TABELLE tbl_name [, tbl_name] ... [SCHNELL] [ERWEITERT] [USE_FRM]
-- Analysetabelle
ANALYSIEREN [LOKAL | NO_WRITE_TO_BINLOG] TABELLE Tabellenname [, Tabellenname] ...

/* Datenoperation */ ------------------

-- Zunahme
INSERT [INTO] Tabellenname [(Feldliste)] VALUES (Werteliste) [, (Werteliste), ...]
-- Wenn die Liste der einzufügenden Werte alle Felder enthält und in der gleichen Reihenfolge vorliegt, kann die Feldliste weggelassen werden.
-- Es können mehrere Datensätze gleichzeitig eingefügt werden!
REPLACE ist genau dasselbe wie INSERT und ist austauschbar.
INSERT [INTO] Tabellenname SET Feldname=Wert [, Feldname=Wert, ...]
-- überprüfen
SELECT Feldliste FROM Tabellenname [andere Klauseln]
-- Mehrere Felder können aus mehreren Tabellen stammen
-- Andere Klauseln können weggelassen werden
-- Die Feldliste kann durch * ersetzt werden, um alle Felder anzuzeigen
-- Löschen
DELETE FROM Tabellenname [Löschbedingungsklausel]
Ohne Konditionalklausel
-- ändern
UPDATE Tabellenname SET Feldname = neuer Wert [, Feldname = neuer Wert] [Updatebedingung]

/* Zeichensatzkodierung */ ------------------

- MySQL, Datenbank, Tabelle und Feld können alle kodiert werden

-- Die Datenkodierung muss nicht mit der Client-Kodierung übereinstimmen

VARIABLEN WIE 'character_set_%' ANZEIGEN -- Alle Zeichensatzkodierungselemente anzeigen
character_set_client Die vom Client zum Senden von Daten an den Server verwendete Kodierung
character_set_results Die vom Server verwendete Kodierung, um Ergebnisse an den Client zurückzugeben
character_set_connection Kodierung der Verbindungsschicht

SET Variablenname = Variablenwert

setze Zeichensatz-Client = gbk;
setze Zeichensatzergebnisse = gbk;
setze Zeichensatzverbindung = gbk;
SET NAMES GBK; -- entspricht dem Abschluss der drei obigen Einstellungen

-- Korrekturleseset

Kollationssatz zum Sortieren
SHOW CHARACTER SET [LIKE 'pattern']/SHOW CHARSET [LIKE 'pattern'] Alle Zeichensätze anzeigen
SORTIMENT ANZEIGEN [LIKE 'pattern'] Alle Sortierungssätze anzeigen
charset Zeichensatzkodierung Zeichensatzkodierung festlegen
collate Kodierung des Kollationssatzes Kodierung des Kollationssatzes festlegen

/* Datentyp (Spaltentyp) */ ------------------

1. Numerische Typen

-- a. Ganzzahl---------

Typ Bytebereich (vorzeichenbehaftetes Bit)
tinyint 1 Byte -128 ~ 127 Vorzeichenlose Bits: 0 ~ 255
smallint 2 Bytes -32768 ~ 32767
mittlerer Wert 3 Bytes -8388608 ~ 8388607
int 4 Bytes
Bigint: 8 Byte

int(M) M stellt die Gesamtzahl der Ziffern dar

- Standardmäßig gibt es ein Vorzeichenbit, vorzeichenlose Attributänderungen

- Anzeigebreite. Wenn eine Zahl nicht die bei der Definition des Feldes festgelegte Anzahl von Ziffern erreicht, wird sie mit Nullen aufgefüllt. Änderung des Zerofill-Attributs

Beispiel: int(5) fügt eine Zahl '123' ein, und nach dem Ausfüllen ist sie '00123'

- Je kleiner, desto besser, sofern die Voraussetzungen erfüllt sind.

- 1 steht für einen Bool-Wert von „true“, 0 steht für einen Bool-Wert von „false“. MySQL hat keinen Booleschen Typ und wird durch die Ganzzahlen 0 und 1 dargestellt. Tinyint(1) wird häufig verwendet, um Boolesche Typen darzustellen.

-- b. Gleitkommatyp----------

Typ Bytes Bereich

Float (einfache Genauigkeit) 4 Bytes

double (doppelte Genauigkeit) 8 Bytes

Gleitkommatypen unterstützen sowohl das vorzeichenlose Attribut als auch das Zerofill-Attribut.

Im Gegensatz zu ganzen Zahlen werden Nullen vor und hinter die Zahlen gesetzt.

Wenn Sie einen Gleitkommatyp definieren, müssen Sie die Gesamtzahl der Ziffern und die Anzahl der Dezimalstellen angeben.

schweben(M, D) doppelt(M, D)

M steht für die Gesamtzahl der Ziffern und D für die Anzahl der Dezimalstellen.

Die Größe von M und D bestimmt den Bereich der Gleitkommazahlen. Unterscheidet sich vom festen Bereich der Ganzzahltypen.

M stellt sowohl die Gesamtzahl der Ziffern (ohne Dezimalpunkt und positive und negative Vorzeichen) als auch die Anzeigebreite (einschließlich aller angezeigten Symbole) dar.

Unterstützt wissenschaftliche Notation.

Gleitkommazahlen stellen ungefähre Werte dar.

-- c. Festkommazahl----------

Dezimalzahl – variable Länge

Dezimalzahl (M, D) M stellt auch die Gesamtzahl der Ziffern dar und D die Anzahl der Dezimalstellen.

Speichert einen exakten Wert ohne die Daten zu verändern, im Gegensatz zur Rundung von Gleitkommazahlen.

Wandeln Sie die Gleitkommazahl zum Speichern in eine Zeichenfolge um, wobei jeweils 9 Ziffern als 4 Bytes gespeichert werden.

2. Zeichenfolgentyp

-- a. char, varchar ----------

char-String mit fester Länge, schnell, aber Platzverschwendung

varchar-String mit variabler Länge, langsam, aber platzsparend

M stellt die maximale Länge dar, die gespeichert werden kann. Diese Länge ist die Anzahl der Zeichen, nicht die Anzahl der Bytes.

Verschiedene Codes belegen unterschiedlichen Platz.

char, bis zu 255 Zeichen, unabhängig von der Kodierung.

varchar, bis zu 65535 Zeichen, abhängig von der Kodierung.

Die maximale Länge eines gültigen Datensatzes darf 65535 Bytes nicht überschreiten.

Die maximale Länge einer UTF8-Zeichenfolge beträgt 21.844 Zeichen, die maximale Länge einer GBK-Zeichenfolge beträgt 32.766 Zeichen und die maximale Länge einer Latin1-Zeichenfolge beträgt 65.532 Zeichen.

VARCHAR hat eine variable Länge und erfordert Speicherplatz, um die Länge von VARCHAR zu speichern. Wenn die Daten weniger als 255 Bytes umfassen, wird ein Byte zum Speichern der Länge verwendet, andernfalls sind zwei Bytes zum Speichern erforderlich.

Die maximale effektive Länge von varchar wird durch die maximale Zeilengröße und den verwendeten Zeichensatz bestimmt.

Die maximal gültige Länge beträgt 65532 Bytes, da beim Speichern einer Zeichenfolge in einem varchar das erste Byte leer ist und keine Daten enthält und anschließend zwei Bytes zum Speichern der Länge der Zeichenfolge erforderlich sind. Die effektive Länge beträgt also 64432-1-2 = 65532 Bytes.

Beispiel: Wenn eine Tabelle als CREATE TABLE tb(c1 int, c2 char(30), c3 varchar(N)) charset=utf8 definiert ist, was ist der Maximalwert von N? Antwort: (65535-1-2-4-30*3)/3

-- b. Blob, Text ----------

Blob-Binärzeichenfolge (Byte-Zeichenfolge)

kleiner Blob, Blob, mittlerer Blob, langer Blob

Text Nicht-binäre Zeichenfolge (Zeichenfolge)

Kleintext, Text, Mitteltext, Langtext

Beim Definieren von Text muss keine Länge angegeben werden und die Gesamtlänge wird nicht berechnet.

Beim Definieren eines Texttyps können Sie ihm keinen Standardwert zuweisen.

-- c. binär, varbinary ----------

Ähnlich wie char und varchar wird es zum Speichern von Binärzeichenfolgen verwendet, d. h. zum Speichern von Bytefolgen anstelle von Zeichenfolgen.

char, varchar, text entsprechen binary, varbinary, blob.

3. Datums- und Zeittypen

Im Allgemeinen werden zum Speichern von Zeitstempeln ganze Zahlen verwendet, da PHP Zeitstempel problemlos formatieren kann.

datetime 8 Bytes Datum und Uhrzeit 1000-01-01 00:00:00 bis 9999-12-31 23:59:59

Datum 3 Bytes Datum 1000-01-01 bis 9999-12-31

Zeitstempel 4 Bytes Zeitstempel 19700101000000 bis 2038-01-19 03:14:07

Zeit 3 ​​Bytes Zeit -838:59:59 bis 838:59:59

Jahr 1 Byte Jahr 1901 - 2155

Datum/Uhrzeit „JJJJ-MM-TT hh:mm:ss“
Zeitstempel "JJ-MM-TT hh:mm:ss"
"JJJJMMTThhmmss"
"JJMMTThhmmss"
JJJJMMTThhmmss
JJMMTThhmmss
Datum "JJJJ-MM-TT"
"JJ-MM-TT"
"JJJJMMTT"
"JJMMTT"
JJJJMMTT
JJMMTT
Zeit "hh:mm:ss"
"hhmmss"
hmmss
Jahr "JJJJ"
"JJ"
JJJJ
JJ

4. Aufzählungen und Mengen

--Aufzählung -----------

Aufzählung(Wert1, Wert2, Wert3 …)

Wählen Sie einen einzelnen Wert aus den bekannten Werten aus. Die maximale Anzahl beträgt 65535.

Wenn der Enumerationswert gespeichert wird, wird er als 2-Byte-Ganzzahl (Smallint) gespeichert. Jeder Enumerationswert wird beginnend bei 1 in der Reihenfolge der gespeicherten Position um eins erhöht.

Es wird als Zeichenfolgentyp dargestellt, aber als Ganzzahltyp gespeichert.

Der Index eines NULL-Wertes ist NULL.

Der Indexwert des leeren String-Fehlerwerts ist 0.

-- Satz ----------

Satz (Wert1, Wert2, Wert3 …)

Tabellenregisterkarte erstellen (Geschlechtssatz („Geschlecht“, „Geschlecht“, „Keine“));

in Tabulatorwerte einfügen ('男, 女');

Es kann bis zu 64 verschiedene Mitglieder geben. Als Bigint gespeichert, insgesamt 8 Bytes. Nimmt die Form von bitweisen Operationen an.

Beim Erstellen einer Tabelle werden nachstehende Leerzeichen in SET-Mitgliedswerten automatisch entfernt.

/*Typ auswählen*/
- PHP-Perspektive
1. Funktionale Zufriedenheit
2. Minimieren Sie den Speicherplatz und verbessern Sie die Verarbeitungseffizienz
3. Kompatibilitätsprobleme berücksichtigen

-- IP-Speicher -----------

1. Muss nur gespeichert werden, Zeichenfolge kann verwendet werden

2. Wenn Berechnungen, Suchen usw. erforderlich sind, können sie als 4-Byte-Integer ohne Vorzeichen gespeichert werden, d. h. ohne Vorzeichen

1) PHP-Funktionskonvertierung

ip2long kann in eine Ganzzahl umgewandelt werden, es tritt jedoch ein Vorzeichenproblem auf. Muss als vorzeichenlose Ganzzahl formatiert werden.

Formatieren einer Zeichenfolge mit der Funktion sprintf

sprintf("%u", ip2long('192.168.3.134'));

Verwenden Sie dann long2ip, um die Ganzzahl wieder in eine IP-Zeichenfolge umzuwandeln

2) MySQL-Funktionskonvertierung (vorzeichenlose Ganzzahl, UNSIGNED)

INET_ATON('127.0.0.1') IP in Ganzzahl umwandeln
INET_NTOA(2130706433) Integer in IP umwandeln

/* Spaltenattribute (Spalteneinschränkungen) */ ------------------

1. Primärschlüssel

– Ein Feld, das einen Datensatz eindeutig identifizieren kann und als Primärschlüssel verwendet werden kann.
– Eine Tabelle kann nur einen Primärschlüssel haben.
- Der Primärschlüssel ist eindeutig.
- Verwenden Sie beim Deklarieren eines Felds den Primärschlüssel, um es zu identifizieren.
Es kann auch nach der Feldliste deklariert werden

Beispiel: Tabelle erstellen (ID int, stu varchar(10), Primärschlüssel (ID));
– Der Wert des Primärschlüsselfelds darf nicht null sein.
– Ein Primärschlüssel kann aus mehreren Feldern bestehen. In diesem Fall muss die Methode nach der Feldliste deklariert werden.
Beispiel: Tabellenregisterkarte erstellen (ID int, stu varchar(10), Alter int, Primärschlüssel (stu, Alter));

2. Eindeutiger Index (eindeutige Einschränkung)

Dadurch wird verhindert, dass der Wert eines Feldes wiederholt wird.

3. Nullbeschränkungen

NULL ist kein Datentyp, sondern eine Eigenschaft einer Spalte.
Gibt an, ob die aktuelle Spalte null sein kann, und zeigt nichts an.
null, leer ist erlaubt. Standard.
nicht null, darf nicht leer sein.
in Tabulatorwerte einfügen (null, ‚val‘);
-- Dies bedeutet, dass der Wert des ersten Felds auf null gesetzt wird, abhängig davon, ob das Feld null sein darf

4. Standard-Standardwertattribut

Der Standardwert für das aktuelle Feld.
in Tabulatorwerte einfügen (Standard, „val“); – Dies bedeutet, dass die Verwendung des Standardwerts erzwungen wird.
Tabellenregisterkarte erstellen (add_time Zeitstempel, Standard: aktueller_Zeitstempel);
-- bedeutet, den aktuellen Zeitstempel als Standardwert festzulegen.
aktuelles_Datum, aktuelle_Uhrzeit

5. auto_increment automatische Wachstumsbeschränkung

Die automatische Inkrementierung muss ein Index sein (Primärschlüssel oder eindeutig).

Nur ein Feld kann automatisch inkrementiert werden.

Der Standardwert ist 1, um automatisches Wachstum zu starten. Sie können es mit dem Tabellenattribut auto_increment = x oder mit „alter table tbl auto_increment = x“ festlegen.

6. Kommentar

Beispiel: create table tab (id int) comment ‚Kommentarinhalt‘;

7. Fremdschlüsseleinschränkungen

Wird verwendet, um die Datenintegrität der Mastertabelle und der Slavetabelle einzuschränken.

Tabelle t1 ändern, Einschränkung „t1_t2_fk“ hinzufügen, Fremdschlüssel (t1_id) verweist auf t2(id);
-- Ordnen Sie den Fremdschlüssel t1_id der Tabelle t1 dem ID-Feld der Tabelle t2 zu.
-- Jeder Fremdschlüssel hat einen Namen, der durch eine Einschränkung angegeben werden kann

Die Tabelle mit den Fremdschlüsseln wird als Slave-Tabelle (untergeordnete Tabelle) bezeichnet, und die Tabelle, auf die die Fremdschlüssel zeigen, wird als Master-Tabelle (übergeordnete Tabelle) bezeichnet.

Funktion: Datenkonsistenz und -integrität aufrechterhalten. Der Hauptzweck besteht darin, die in der Fremdschlüsseltabelle (aus der Tabelle) gespeicherten Daten zu steuern.

In MySQL können Sie Fremdschlüsseleinschränkungen mit der InnoDB-Engine verwenden:

Grammatik:

Fremdschlüssel (Fremdschlüsselfeld) verweist auf Haupttabellennamen (zugehöriges Feld) [Aktion, wenn Haupttabellendatensatz gelöscht wird] [Aktion, wenn Haupttabellendatensatz aktualisiert wird]

Zu diesem Zeitpunkt muss erkannt werden, dass ein Fremdschlüssel einer sekundären Tabelle auf einen vorhandenen Wert der primären Tabelle beschränkt werden muss. Ein Fremdschlüssel kann auf Null gesetzt werden, wenn keine Zuordnung besteht und die Fremdschlüsselspalte nicht den Wert „Null“ aufweist.

Sie müssen die Aktion nicht angeben, wenn der Datensatz der Mastertabelle geändert oder aktualisiert wird. In diesem Fall wird der Vorgang an der Mastertabelle abgelehnt.

Wenn „beim Aktualisieren“ oder „beim Löschen“ angegeben ist: Beim Löschen oder Aktualisieren können Sie zwischen folgenden Operationen wählen:

1. Kaskade, Kaskadenbetrieb. Die Daten der Mastertabelle werden aktualisiert (der Primärschlüsselwert wird aktualisiert) und die Slavetabelle wird ebenfalls aktualisiert (der Fremdschlüsselwert wird aktualisiert). Der Datensatz der Mastertabelle wird gelöscht und die zugehörigen Datensätze in der Slavetabelle werden ebenfalls gelöscht.

2. Auf Null setzen, auf Null setzen. Die Daten der Primärtabelle werden aktualisiert (der Primärschlüsselwert wird aktualisiert) und der Fremdschlüssel der Sekundärtabelle wird auf Null gesetzt. Der Datensatz der Mastertabelle wird gelöscht und der Fremdschlüssel des zugehörigen Datensatzes in der Slavetabelle wird auf Null gesetzt. Beachten Sie jedoch, dass die Fremdschlüsselspalte keine Nicht-Null-Attributeinschränkung aufweisen darf.

3. Löschen und Aktualisieren der übergeordneten Tabelle einschränken oder ablehnen.

Beachten Sie, dass Fremdschlüssel nur von der InnoDB-Speicher-Engine unterstützt werden. Andere Engines werden nicht unterstützt.

/* Spezifikationen zur Tabellenerstellung*/ ------------------

-- Normalformat, NF
- Jede Tabelle speichert eine Entitätsinformation
- Jedes hat ein ID-Feld als Primärschlüssel
- ID-Primärschlüssel + atomare Tabelle
-- 1NF, Erste Normalform
Wenn der Körper nicht weiter geteilt werden kann, ist die erste Normalform erfüllt.
-- 2NF, Zweite Normalform
Unter der Voraussetzung der Erfüllung der ersten Normalform kann keine partielle Abhängigkeit auftreten.
Durch die Eliminierung des Primärschlüssels können partielle Abhängigkeiten vermieden werden. Fügen Sie einspaltige Schlüsselwörter hinzu.
- 3NF, die dritte Normalform
Unter der Prämisse der Erfüllung des zweiten Paradigmas können keine transitiven Abhängigkeiten auftreten.
Ein Feld hängt vom Primärschlüssel ab, und andere Felder hängen davon ab. Dies ist eine transitive Abhängigkeit.
Die Daten einer Entitätsinformation werden in einer Tabelle abgelegt.

/* wählen */ ------------------

wähle [alles|verschieden] select_expr von -> wobei -> gruppieren nach [Aggregatfunktion] -> habend -> sortieren nach -> begrenzen

ein. select_expr

-- Sie können alle Felder mit * kennzeichnen.
wähle * aus tb;
-- Ausdrücke können verwendet werden (Berechnungsformeln, Funktionsaufrufe und Felder sind auch Ausdrücke)
wähle stu, 29+25, jetzt() aus tb;
-- Sie können für jede Spalte Aliase verwenden. Nützlich, um die Spaltenidentifizierung zu vereinfachen und die Duplizierung mehrerer Spaltenbezeichner zu vermeiden.
- Verwenden Sie das Schlüsselwort „as“ oder lassen Sie „as“ weg.
wähle stu+10 als add10 aus tb;

b. from-Klausel

Wird verwendet, um die Quelle der Abfrage zu identifizieren.
-- Sie können einer Tabelle einen Alias ​​zuweisen. Verwenden Sie das Schlüsselwort „as“.
wähle * aus tb1 als tt, tb2 als bb;
– Nach der From-Klausel können mehrere Tabellen erscheinen.
- Mehrere Tabellen werden horizontal übereinander gestapelt und die Daten bilden ein kartesisches Produkt.
wähle * aus tb1, tb2;

c. Where-Klausel

- Filter aus der Datenquelle, aus der er bezogen wurde.
- Die Ganzzahl 1 steht für „wahr“, 0 für „falsch“.
-- Ein Ausdruck besteht aus Operatoren und Operanden.
-- Operanden: Variablen (Felder), Werte, Funktionsrückgabewerte
-- Betreiber:
=, <=>, <>, !=, <=, <, >=, >, !, &&, ||,
in (nicht) null, (nicht) wie, (nicht) in, (nicht) zwischen und, ist (nicht), und, oder, nicht, xor
ist/ist nicht plus wahr/falsch/unbekannt, um die Wahrheit eines Wertes zu testen
<=> hat die gleiche Funktion wie <> und <=> kann für Nullvergleiche verwendet werden

d. group by-Klausel, Gruppierungsklausel

Gruppieren nach Feld/Alias ​​[Sortieren nach]
Nach der Gruppierung werden sie sortiert. Aufsteigend: ASC, Absteigend: DESC

Die folgenden Aggregatfunktionen müssen mit „group by“ verwendet werden:
count Gibt die Anzahl der unterschiedlichen Werte ungleich NULL zurück count(*), count(field)
Summe
max Finden Sie den Maximalwert
min Finden Sie den Minimalwert
Durchschnittlicher Durchschnittswert
group_concat gibt ein String-Ergebnis mit den verketteten Nicht-NULL-Werten aus einer Gruppe zurück. Gruppeninterne Zeichenfolgenverkettung.

e. Having-Satz, Konditionalsatz

Es hat dieselbe Funktion und Verwendung wie where, aber der Ausführungszeitpunkt ist anders.
wobei zu Beginn die Datenerkennung ausgeführt und die Originaldaten gefiltert werden.
Nachdem die gefilterten Ergebnisse erneut gefiltert wurden.
Das Having-Feld muss abgefragt werden und das Where-Feld muss in der Datentabelle vorhanden sein.
Wo Feldaliase nicht verwendet werden können, aber vorhanden ist. Denn wenn der WHERE-Code ausgeführt wird, kann es sein, dass der Spaltenwert noch nicht ermittelt ist.
Wo Aggregatfunktionen nicht verwendet werden können. Im Allgemeinen wird „having“ nur verwendet, wenn eine Aggregatfunktion benötigt wird.
Der SQL-Standard erfordert, dass HAVING auf Spalten in der GROUP BY-Klausel oder auf Spalten verweisen muss, die in einer Aggregatfunktion verwendet werden.

f. Order by-Klausel, Sortierungsklausel

Sortieren nach Sortierfeld/Alias-Sortiermethode [, Sortierfeld/Alias-Sortiermethode] ...
Aufsteigend: ASC, Absteigend: DESC
Unterstützt das Sortieren nach mehreren Feldern.

g. Begrenzungsklausel, Begrenzung der Anzahl der Ergebnisse

Lediglich die aufbereiteten Ergebnisse sind zahlenmäßig begrenzt. Behandeln Sie die verarbeiteten Ergebnisse als Satz, in der Reihenfolge, in der die Datensätze erscheinen, wobei der Index bei 0 beginnt.
Startposition begrenzen, Anzahl der Einträge ermitteln
Das Weglassen des ersten Parameters bedeutet, dass beim Index 0 begonnen wird. limit Anzahl der Einträge abrufen

h. verschieden, alle Optionen

distinct entfernt doppelte Datensätze
Der Standardwert ist „alle“, alle Datensätze

/* UNION */ ------------------

Kombiniert die Ergebnisse mehrerer Auswahlabfragen zu einem einzigen Ergebnissatz.
AUSWÄHLEN ... UNION [ALLE|DISTINCT] AUSWÄHLEN ...
Der Standardmodus „DISTINCT“ bedeutet, dass alle zurückgegebenen Zeilen eindeutig sind.
Es wird empfohlen, jede SELECT-Abfrage in Klammern einzuschließen.
Wenn ORDER BY zum Sortieren verwendet wird, muss LIMIT zur Kombination hinzugefügt werden.
Die Anzahl der Felder muss in jeder Auswahlabfrage gleich sein.
Die Feldliste (Anzahl, Typ) jeder Select-Abfrage sollte konsistent sein, da sich die Feldnamen im Ergebnis an der ersten Select-Anweisung orientieren.

/* Unterabfrage */ ------------------

- Unterabfragen müssen in Klammern eingeschlossen werden.

-- vom Typ

Auf das Schlüsselwort „from“ muss eine Tabelle folgen und dem Ergebnis der Unterabfrage muss ein Alias ​​zugewiesen werden.
- Vereinfachen Sie die Bedingungen innerhalb jeder Abfrage.
- Der From-Typ muss eine temporäre Tabelle mit dem Ergebnis generieren, die zum Aufheben der Sperre der Originaltabelle verwendet werden kann.
- Die Unterabfrage gibt eine Tabelle vom Typ „Tabelle“ zurück.
Wählen Sie * aus (Wählen Sie * aus tb, wo ID > 0) als Unterelement aus, wo ID > 1;

-- wobei Typ

- Die Unterabfrage gibt einen Wert zurück, eine skalare Unterabfrage.
- Es ist nicht erforderlich, Unterabfragen Aliase zuzuweisen.
- Die Tabelle in der Where-Unterabfrage kann nicht direkt aktualisiert werden.
Wählen Sie * aus tb, wobei Geld = (Wählen Sie max(Geld) aus tb);

-- Spaltenunterabfrage

Wenn das Ergebnis der Unterabfrage eine Spalte zurückgibt.
Verwenden Sie „in“ oder „not in“, um die Abfrage zu vervollständigen
Bedingungen für das Vorhandensein und Nichtvorhandensein
Gibt 1 oder 0 zurück, wenn die Unterabfrage Daten zurückgibt. Wird oft verwendet, um den Zustand zu beurteilen.
Wählen Sie Spalte1 aus t1, sofern vorhanden (wählen Sie * aus t2);

-- Zeilenunterabfrage

Die Abfragebedingung ist eine Zeile.
wähle * aus t1, wobei (ID, Geschlecht) in (wähle ID, Geschlecht aus t2);
Zeilenkonstruktor: (col1, col2, …) oder ROW(col1, col2, …)
Zeilenkonstruktoren werden häufig verwendet, um Unterabfragen zu vergleichen, die zwei oder mehr Spalten zurückgeben.

-- Spezialoperatoren
!= all() ist gleichbedeutend mit nicht in
= some() ist gleichbedeutend mit in. any ist ein Alias ​​für some
!= some() ist nicht gleichbedeutend mit not in und ist nicht gleich einem von beiden.
alle, einige können mit anderen Operatoren verwendet werden.


/* Abfrage verbinden (join) */ ------------------

Sie können Felder aus mehreren Tabellen verbinden und Verbindungsbedingungen angeben.
-- Innerer Verbund
- Der Standard ist „Inner Join“, „Inner“ kann weggelassen werden.
- Eine Verbindung kann nur hergestellt werden, wenn Daten vorhanden sind. Das heißt, das Verbindungsergebnis darf keine Leerzeilen enthalten.
Ein zeigt den Verbindungszustand an. Sein bedingter Ausdruck ähnelt where. Sie können die Bedingung auch weglassen (was bedeutet, dass sie immer wahr ist).
Sie können auch „where“ verwenden, um die Join-Bedingung auszudrücken.
Es gibt auch die Möglichkeit „Verwenden“, aber die Feldnamen müssen gleich sein. mit (Feldname)

-- Kreuzverbindung
Das heißt, es gibt keinen bedingten inneren Join.
Wählen Sie * aus TB1, verbinden Sie TB2;
-- Äußere Verbindung
- Wenn die Daten nicht vorhanden sind, werden sie auch in den Verbindungsergebnissen angezeigt.
--Linker äußerer Join
Wenn die Daten nicht vorhanden sind, wird der Datensatz der linken Tabelle angezeigt und die rechte Tabelle wird mit Null gefüllt
--Rechter äußerer Join
Wenn die Daten nicht vorhanden sind, wird der Datensatz der rechten Tabelle angezeigt und die linke Tabelle wird mit Nullen gefüllt.
-- Natürliche Verbindung
Verbindungsbedingungen automatisch ermitteln und Verbindung herstellen.
Dies entspricht dem Weglassen von „using“ und es wird automatisch nach dem gleichen Feldnamen gesucht.
natürliche Verbindung
natürlicher linker Join
natürliches Recht beitreten

Wählen Sie info.id, info.name, info.stu_num, extra_info.hobby, extra_info.sex aus info, extra_info, wobei info.stu_num = extra_info.stu_id;

/* Importieren und Exportieren */ ------------------

select * into outfile Dateiadresse [Steuerformat] aus Tabellenname; -- Tabellendaten exportieren
Daten laden [lokal] Infile Dateiadresse [ersetzen|ignorieren] in Tabelle Tabellenname [Steuerformat]; -- Daten importieren
Das Standardtrennzeichen für generierte Daten ist das Tabulatorzeichen.
Wenn „local“ nicht angegeben ist, muss sich die Datendatei auf dem Server befinden
Die Schlüsselwörter „Ersetzen“ und „Ignorieren“ steuern die Behandlung von Duplikaten vorhandener eindeutiger Schlüsseldatensätze.
-- Kontrollformat

fields steuert das Format von Feldern
Standard: Felder, die durch „\t“ abgeschlossen und durch „“ umschlossen sind, maskiert durch „\\“
beendet durch „String“
umschlossen von 'char'
entkommen durch 'char'
-- Beispiel:
WÄHLEN Sie a, b, a + b in die Ausgabedatei '/tmp/result.text'
FELDER, DIE DURCH ',' BEENDET WERDEN, OPTIONAL DURCH '"' EINGESCHLOSSEN
Mit '\n' abgeschlossene Zeilen
VON Testtabelle;

Linien steuert das Linienformat

Standard: Zeilen mit „\n“ abgeschlossen
beendet durch 'String'

/* einfügen */ ------------------

Die durch die Select-Anweisung erhaltenen Daten können mit „insert“ eingefügt werden.

Die Spaltenangabe kann weggelassen werden, die erforderlichen Werteklammern () geben die Werte aller Felder in Spaltenreihenfolge an.
Oder verwenden Sie die festgelegte Syntax.
in tbl_name einfügen, Feld=Wert festlegen,...;

Mehrere Werte können gleichzeitig in der Form (), (), (); verwendet werden.
in tbl_name-Werte einfügen (), (), ();

Sie können beim Angeben von Spaltenwerten Ausdrücke verwenden.
in tbl_name-Werte einfügen (Feldwert, 10 + 10, jetzt ());
Ein spezieller Wert, Standard, kann verwendet werden, um anzugeben, dass die Spalte den Standardwert verwendet.
in tbl_name-Werte einfügen (Feldwert, Standard);

Als einzufügender Wert können Sie das Ergebnis einer Abfrage verwenden.
in tbl_name einfügen, auswählen ...;

Sie können angeben, dass die Informationen anderer Spalten, die keine Primärschlüssel sind, aktualisiert werden, wenn ein eingefügter Wert mit dem Primärschlüssel (oder dem eindeutigen Index) in Konflikt steht.
Bei doppeltem Schlüssel in tbl_name Werte/Satz/Auswählen einfügen, Feld=Wert aktualisieren, …;

/* löschen */ ------------------

DELETE FROM Tabellenname [WHERE Where-Definition] [ORDER BY ...] [LIMIT Zeilenanzahl]

Löschen nach Bedingung

Geben Sie die maximale Anzahl der zu löschenden Datensätze an. Limit

Kann nach Sortierbedingungen gelöscht werden. Sortieren nach + Limit

Unterstützt das Löschen mehrerer Tabellen unter Verwendung einer ähnlichen Join-Syntax.
„Löschen aus“ erfordert das Löschen von Daten aus mehreren Tabellen 1 und 2 unter Verwendung der Bedingungen der Tabellenverknüpfungsoperation.

/* abschneiden */ ------------------

TRUNCATE [TABELLE] Tabellenname
Daten löschen, Tabelle löschen und neu aufbauen

Der Unterschied:

1. Truncate dient zum Löschen und anschließenden Erstellen der Tabelle. Delete dient zum Löschen einer Tabelle nach der anderen.

2. truncate setzt den Wert von auto_increment zurück. Und löschen wird nicht

3. Truncate weiß nicht, wie viele Datensätze gelöscht werden, aber Delete weiß es.

4. Bei Verwendung von Truncate auf einer partitionierten Tabelle bleiben die Partitionen erhalten.


/* Sichern und Wiederherstellen */ ------------------

Sichern Sie die Datenstruktur und die Daten in der Tabelle.

Dies geschieht mit dem Befehl mysqldump.

-- Export

1. Exportieren Sie eine Tabelle mysqldump -u Benutzername -p Passwort Datenbankname Tabellenname > Dateiname (D:/a.sql)
2. Mehrere Tabellen exportieren mysqldump -u Benutzername -p Passwort Datenbankname Tabelle 1 Tabelle 2 Tabelle 3 > Dateiname (D:/a.sql)
3. Alle Tabellen exportieren mysqldump -u Benutzername -p Passwort Datenbankname > Dateiname (D:/a.sql)
4. Exportieren Sie eine Bibliothek mysqldump -u Benutzername -p Passwort -B Bibliotheksname > Dateiname (D:/a.sql)

Sie können -w verwenden, um Sicherungsbedingungen zu übernehmen

-- Import

1. Beim Anmelden bei MySQL:
Quellsicherungsdatei

2. Ohne Anmeldung mysql -u Benutzername -p Passwort Datenbankname < Sicherungsdatei


/* Sicht */ ------------------

Was ist eine Ansicht:

Eine Ansicht ist eine virtuelle Tabelle, deren Inhalt durch eine Abfrage definiert wird. Wie eine echte Tabelle besteht eine Ansicht aus einer Reihe benannter Datenspalten und -zeilen. Eine Ansicht liegt allerdings nicht als gespeicherter Satz von Datenwerten in der Datenbank vor. Die Zeilen- und Spaltendaten stammen aus den Tabellen, auf die von der Abfrage verwiesen wird, die die Ansicht definiert, und werden dynamisch generiert, wenn auf die Ansicht verwiesen wird.

Eine Ansicht hat eine Tabellenstrukturdatei, aber keine Datendatei.

Eine Ansicht wirkt wie ein Filter für die zugrunde liegenden Tabellen, auf die sie verweist. Die Filter, die eine Ansicht definieren, können aus einer oder mehreren Tabellen in der aktuellen oder anderen Datenbanken oder aus anderen Ansichten stammen. Für Abfragen über Ansichten bestehen keine Einschränkungen und für die Änderung von Daten über diese Ansichten gibt es nur wenige Einschränkungen.

Eine Ansicht ist eine SQL-Anweisung einer in einer Datenbank gespeicherten Abfrage. Sie wird aus zwei Hauptgründen verwendet: Sicherheitsgründen. Ansichten können einige Daten verbergen, wie z. B. die Tabelle der Sozialversicherungskasse, in der nur Name und Adresse angezeigt werden, ohne die Sozialversicherungsnummer und das Gehalt usw. anzuzeigen. Ein weiterer Grund ist, dass komplexe Abfragen dadurch leichter verständlich und verwendbar sind.

-- Erstellen Sie eine Ansicht

ERSTELLEN [ODER ERSETZEN] [ALGORITHMUS = {UNDEFINED | MERGE | TEMPTABLE}] VIEW Ansichtsname [(Spaltenliste)] AS Auswahlanweisung
- Der Ansichtsname muss eindeutig sein und darf nicht den gleichen Namen wie eine Tabelle haben.
- Die Ansicht kann die von der Select-Anweisung abgefragten Spaltennamen verwenden oder die entsprechenden Spaltennamen selbst angeben.
– Sie können den von der Ansicht auszuführenden Algorithmus angeben, indem Sie ALGORITHM angeben.
- column_list muss, falls vorhanden, der Anzahl der von der SELECT-Anweisung abgerufenen Spalten entsprechen

-- Struktur anzeigen

ANZEIGEN ERSTELLEN ANSICHT Ansichtsname

-- Löschen Sie die Ansicht

- Nach dem Löschen der Ansicht sind die Daten weiterhin vorhanden.

- Mehrere Ansichten können gleichzeitig gelöscht werden.
DROP VIEW [IF EXISTS] Ansichtsname ...

-- Ändern Sie die Ansichtsstruktur

- Ansichten werden im Allgemeinen nicht geändert, da nicht alle aktualisierten Ansichten Tabellen zugeordnet sind.
ALTER VIEW Ansichtsname [(Spaltenliste)] AS Auswahlanweisung

-- Funktion anzeigen

1. Vereinfachen Sie die Geschäftslogik
2. Die eigentliche Tabellenstruktur vor dem Client verbergen

-- Algorithmus anzeigen (ALGORITHMUS)

VERSCHMELZEN
Die Abfrageanweisung der Ansicht muss vor der Ausführung mit der externen Abfrage zusammengeführt werden!
VERFÜHRBAR
Nachdem die Ansicht ausgeführt wurde, wird eine temporäre Tabelle erstellt und dann eine äußere Abfrage ausgeführt!
UNDEFINED Undefiniert (Standard), was bedeutet, dass MySQL den entsprechenden Algorithmus selbstständig auswählt.

/* Transaktion */ ------------------

Eine Transaktion bezeichnet eine logische Gruppe von Operationen. Jede Einheit, aus der diese Gruppe von Operationen besteht, muss entweder erfolgreich sein oder fehlschlagen.
- Unterstützt den kollektiven Erfolg oder den kollektiven Abbruch aufeinanderfolgender SQL-Anweisungen.
- Transaktion ist eine Funktion der Datenbank im Datenmanagement.
- Zur Unterstützung der Auto-Commit-Funktion müssen Sie die Speicher-Engine InnoDB oder BDB verwenden.
- InnoDB ist als transaktionssichere Engine bekannt.

-- Transaktionsbeginn
TRANSAKTION STARTEN; oder BEGINNEN;
Nachdem eine Transaktion geöffnet wurde, werden alle ausgeführten SQL-Anweisungen als SQL-Anweisungen innerhalb der aktuellen Transaktion betrachtet.
-- Transaktions-Commit
BEGEHEN;
-- Transaktions-Rollback
ROLLBACK;
Wenn bei einigen Vorgängen ein Problem auftritt, wird dies vor dem Starten der Transaktion behoben.

-- Transaktionsmerkmale
1. Atomarität
Eine Transaktion ist eine unteilbare Arbeitseinheit. Entweder werden alle Vorgänge einer Transaktion ausgeführt oder keiner.
2. Konsistenz
Die Integrität der Daten vor und nach der Transaktion muss erhalten bleiben.
- Externe Daten sind konsistent, wenn eine Transaktion beginnt und endet
- Der Betrieb läuft während der gesamten Transaktion weiter
3. Isolierung
Wenn mehrere Benutzer gleichzeitig auf die Datenbank zugreifen, dürfen die Transaktionen eines Benutzers nicht durch andere Benutzer gestört werden und die Daten zwischen mehreren gleichzeitigen Transaktionen müssen voneinander isoliert werden.
4. Haltbarkeit
Sobald eine Transaktion bestätigt wurde, sind ihre Änderungen an den Daten in der Datenbank dauerhaft.

-- Transaktionsdurchführung
1. Der Tabellentyp muss von der Transaktion unterstützt werden
2. Starten Sie eine Transaktion, bevor Sie eine Reihe verwandter Vorgänge ausführen
3. Nachdem der gesamte Vorgangssatz abgeschlossen ist und alle Vorgänge erfolgreich waren, führen Sie ein Commit aus. Wenn ein Fehler auftritt, wählen Sie ein Rollback, und die Transaktion kehrt zum Sicherungspunkt am Anfang zurück.

-- Das Prinzip der Transaktionen
Dies geschieht mit der AutoCommit -Funktion von InnoDB.
Nachdem eine normale MySQL -Anweisung ausgeführt wurde, kann der aktuelle Datenübermittlungsbetrieb von anderen Clients angezeigt werden.
Transaktionen schalten den Mechanismus "Auto Commit" vorübergehend aus und erfordern fest, dass anhaltende Datenoperationen festgelegt werden.

-- Beachten
1. Data Definition Language (DDL) Anweisungen können nicht zurückgerollt werden, z. B. Anweisungen, die eine Datenbank erstellen oder fallen lassen, sowie Anweisungen, die eine Tabelle oder eine gespeicherte Prozedur erstellen, fallen oder zu ändern.
2. Transaktionen können nicht verschachtelt werden

- SavePoint
Speichernspeicherpoint -Name - Einsetzen Sie einen Transaktionsspeicherpunkt
Rollback to SavePoint SavePoint Name - Rollen Sie zum SavePoint zurück
SavePoint SavePoint -Name losgeben - Löschen Sie den Speichernpunkt

-InnoDB Auto-Commit-Funktionseinstellungen
Setzen Sie AutoCommit = 0 | 1;
- Wenn es geschlossen ist, sind die Ergebnisse normaler Operationen für andere Kunden nicht sichtbar, und Datenvorgänge können erst nach dem Commit festgehalten werden.
- Sie können auch das AutoCommit ausschalten, um eine Transaktion zu starten. Aber im Gegensatz zu Start -Transaktion,,
Setzen Sie AutoCommit dauerhaft die Einstellungen des Servers, bis die Einstellungen beim nächsten Mal erneut geändert werden. (für die aktuelle Verbindung)
Start -Transaktionsaufzeichnungen den Status, bevor er gestartet wird, und sobald die Transaktion festgelegt oder zurückgerollt ist, muss die Transaktion erneut gestartet werden. (Für die Stromtransaktion)


/ * Sperrtabelle */
Tabellenverriegelungen werden nur verwendet, um unsachgemäßes Lesen und Schreiben durch andere Kunden zu verhindern.
MyISAM unterstützt Tischschlösser und InnoDB unterstützt Zeilenschlösser.
-- Sperren
Sperrtabellen TBL_NAME [als Alias]
- Entsperren
TABELLEN ENTSPERREN


/* Auslösen */ ------------------
Ein Trigger ist ein benanntes Datenbankobjekt, das einer Tabelle zugeordnet ist, die aktiviert ist, wenn ein bestimmtes Ereignis in dieser Tabelle auftritt.
Überwachung: Hinzufügen, Ändern und Löschen von Datensätzen.

- Erstellen Sie Trigger
Erstellen Sie Trigger Trigger_Name Trigger_Time Trigger_Event auf TBL_NAME für jede Zeilentrigger_stmt
Parameter:
trigger_time ist die Aktionszeit des Triggerprogramms. Es kann vor oder nachher sein, um anzuzeigen, dass der Auslöser vor oder nach der Anweisung, die ihn aktiviert, abgefeuert wird.
Trigger_Event gibt den Typ der Anweisung an, der den Trigger aktiviert
Einfügen: Aktiviert einen Auslöser, wenn eine neue Zeile in eine Tabelle eingefügt wird
Update: Löst eine Prozedur aus, wenn eine Zeile geändert wird
Löschen: Aktiviert einen Auslöser, wenn eine Zeile aus einer Tabelle gelöscht wird
TBL_NAME: Die überwachte Tabelle muss eine dauerhafte Tabelle sein.
Trigger_stmt: Die Anweisung, die ausgeführt wird, wenn der Auslöser aktiviert ist. Um mehrere Anweisungen auszuführen, können Sie die Struktur der Startvereinigung von Beginn ... End Compound verwenden.

-- löschen
Drop Trigger [schema_name.] Trigger_name

Sie können alte und neu verwenden, um alte und neue Daten zu ersetzen
Der Aktualisierungsvorgang, bevor das Update alt ist, nachdem das Update neu ist.
Betrieb löschen, nur alt.
Um eine Operation hinzuzufügen, nur neu.

-- Beachten
1. Für eine bestimmte Tabelle können es nicht zwei Auslöser mit derselben Auslöser -Aktionszeit und -ereignis geben.


- Charakterverkettungsfunktion
concat (str1 [, str2, ...])

- Branch-Erklärung
wenn Bedingung dann
Execute-Anweisung
Elsef Bedingung dann
Execute-Anweisung
anders
Execute-Anweisung
Ende wenn;

- Ändern Sie den äußersten Anweisungs-Terminator
Trennzeichen für benutzerdefiniertes Endsymbol
SQL Anweisung Custom End Symbol

Abgrenzung;

- Anweisung Block Wraping
beginnen
Anweisung Block
Ende

- Sonderausführung
1. Wenn ein Datensatz hinzugefügt wird, wird das Programm ausgelöst.
2. Einfügen in eine doppelte Schlüsselaktualisierungssyntax ein Auslöser:
Wenn es keine doppelten Datensätze gibt, wird vor dem Einfügen und nach dem Einfügen ausgelöst.
Wenn es doppelte Datensätze gibt und diese vor dem Einfügen vor dem Update und nach dem Update aktualisiert werden.
Wenn doppelte Datensätze vorliegen, aber vor dem Einfügen und vor dem Update keine Aktualisierung auftritt.
3. Ersetzen Sie die Syntax, wenn Datensätze vorhanden sind, vor dem Löschen nach dem Löschen nach dem Einfügen ausführen


/ * SQL-Programmierung */ ----------------------

-// Lokale Variablen ----------
- Variable Deklaration
deklarieren Sie var_name [, ...] Typ [Standardwert]
Diese Aussage wird verwendet, um lokale Variablen zu deklarieren. Um einen Standardwert für eine Variable anzugeben, geben Sie eine Standardklausel an. Der Wert kann als Ausdruck angegeben werden und muss keine Konstante sein. Wenn es keine Standardklausel gibt, ist der Anfangswert null.

-- Abtretung
Verwenden Sie den Satz und wählen Sie in Anweisungen aus, um Variablen Werte zuzuweisen.

- Hinweis: Globale Variablen (benutzerdefinierte Variablen) können in einer Funktion verwendet werden


-// Globale Variablen ----------
-Werte definieren und zuweisen
Die SET -Anweisung definiert und weist Variablen Werte zu.
set @var = value;
Sie können die Auswahl auch in Anweisung verwenden, um Variablen zu initialisieren und zuweisen. Dies erfordert, dass die Auswahlanweisung nur eine Zeile zurückgeben kann, aber mehrere Felder sein können, was bedeutet, dass das Zuweisen von Werten gleichzeitig mehreren Variablen zugewiesen wird, und die Anzahl der Variablen muss mit der Anzahl der Spalten in der Abfrage übereinstimmen.
Sie können sich auch die Zuweisungsanweisung als Ausdruck vorstellen und sie durch SELECT ausführen. Um zu vermeiden = als relationaler Operator behandelt werden, verwenden Sie: = stattdessen. (Die SET -Anweisung kann verwenden = und: =).
Wählen Sie @var: = 20;
Wählen Sie @v1: = id, @v2 = Name aus T1 Limit 1;
Wählen Sie * aus TBL_NAME, wobei @var: = 30;

SELECT in können die Daten aus der Tabellenabfrage einer Variablen zuweisen.
-|.

-Benutzerdefinierte Variablennamen, um Konflikte zwischen benutzerdefinierten Variablen und Systemkennung (normalerweise Feldnamen) in ausgewählten Anweisungen zu vermeiden, verwenden benutzerdefinierte Variablen @ als Startsymbol vor dem Variablennamen.
@var = 10;

- Sobald eine Variable definiert ist, ist sie während der gesamten Sitzung gültig (Anmelden zum Abmelden)


-// Kontrollstruktur ----------
- Wenn Aussage
Wenn suche_condition dann
Anweisungsliste
[elseif search_condition dann
Anweisung_List]
...
[anders
Anweisung_List]
Ende wenn;

- Fallerklärung
Fallwert bei [Vergleichswert], dann resultieren Sie dann
[Wenn [value] dann result ...]
[Sonst Ergebnis]
ENDE


- während Schleife
[begin_label:] während such_condition to to to
Anweisungsliste
Ende während [end_label];

- Wenn Sie die while -Schleife frühzeitig in der Schleife beenden müssen, müssen Sie ein Etikett verwenden.

- Verlassen Sie die Schleife
Beenden Sie den gesamten Schleifenurlaub
Beenden Sie die aktuelle Iterate
Bestimmen Sie, welche Schleife mit der Ausgangsbezeichnung beenden soll


-// integrierte Funktionen -----------
- Numerische Funktionen
ABS (x)-Absolutwert ABS (-10,9) = 10
Format (x, d) - Formate das Tausendstel -Wert -Format (1234567,456, 2) = 1.234.567,46
CEIL (x) - RUND CEIL (10.1) = 11
Boden (x) - rundem Boden (10.1) = 10
Runde (x) - Runde zur Ganzzahl
MOD (M, N) - M%nm Mod N Rest 10%3 = 1
pi () - Holen Sie sich den Wert von pi
pow (m, n) - m^n
SQRT (x) - Quadratwurzel
Rand () - Zufällige Zahlen
verkürzt (x, d) - verkürzte Dezimalstellen abschneiden

- Zeit- und Datumsfunktionen
jetzt () current_timestamp ();
current_date ();
current_time (); - aktuelle Zeit
Datum ('yyyy-mm-dd hh: ii: ss');
Zeit ('yyyy-mm-dd hh: ii: ss');
DATE_FORMAT ('yyyy-mm-dd hh: ii: ss', ' %d %y %d %m %b %J')-Formatzeit
UNIX_Timestamp ();
von _unixtime ();

- String-Funktionen
Länge (Zeichenfolge) - Stringlänge, Bytes
char_length (String) - Die Anzahl der Zeichen in der Zeichenfolge
Substring (STR, Position [, Länge]) - Beginnen Sie von der Position von STR und nehmen Sie Längenzeichen
Ersetzen (STR, Search_str, ersetzen_str) - Ersetzen
Instrument (String, Substring) - Gibt die Position des ersten Auftretens des Substring in String zurück
concat (String [, ...]) - Verkettungszeichenfolgen
charset (str) - Gibt den Zeichensatz einer Zeichenfolge zurück
Lupe (String) - Konvertieren Sie in Kleinbuchstaben
Links (String, Länge) - Nehmen Sie Längenzeichen von links von String2 ein
Load_file (Datei_Name) - Inhalt aus einer Datei lesen
Suchen Sie (Substring, String [, start_position]) - genau wie Instrunden, aber Sie können die Startposition angeben
LPAD (Zeichenfolge, Länge, Pad) - Fügen Sie wiederholt Pad zum Beginn der Saite hinzu, bis die Länge der Saite Länge ist
Ltrim (String) - Entfernen Sie führende Räume
Wiederholen (String, Count) - Wiederholungszeitzeiten wiederholen
RPAD (String, Länge, Pad) - Verwenden Sie das Pad, um zu STR hinzuzufügen, bis die Länge der Länge ist
Rtrim (String) - Entfernen Sie Ablaufräume
STRCMP (String1, String2) - Vergleichen Sie zwei Zeichenfolgenzeichen mit dem Zeichen

- Prozessfunktion
Fall Wenn [Bedingung] dann [wenn [Zustand] resultiert, dann resultiert ...] [sonst Ergebnis] beenden mehrere Zweige
if (expr1, expr2, expr3) Doppelzweig.

- Aggregatfunktionen
zählen()
Summe();
max ();
min ();
avg ();
Gruppe_Verkettung()

- Andere häufig verwendete Funktionen
md5 ();
Standard();


-// gespeicherte Funktion, benutzerdefinierte Funktion ----------
-- Neu
Funktionsfunktion erstellen function_name (Parameterliste) Rückgabe -Rückgabewerttyp Rückgabebereich
Funktionskörper

- Funktionsnamen sollten rechtliche Kennungen sein und nicht mit vorhandenen Schlüsselwörtern in Konflikt stehen.
- Eine Funktion sollte zu einer bestimmten Datenbank gehören.
- Der Parameterteil besteht aus "Parametername" und "Parametertyp". Mehrere Parameter werden durch Kommas getrennt.
- Die Funktionsbehörde besteht aus mehreren verfügbaren MySQL -Anweisungen, Durchflussregelung, variabler Deklaration und anderen Aussagen.
- Mehrere Aussagen sollten in einem Start ... End -Anweisungsblock eingeschlossen sein.
- Es muss eine Rückgabeerklärung geben.

-- löschen
Drop -Funktion [falls exists] Funktion_name;

-- Überprüfen
Funktionsstatus wie "Teilten" anzeigen
CREATE FUNKTION FUNKTION ISTEMAL_NAME anzeigen;

-- Überarbeiten
Function Function Function Function_Name Funktionoptionen


-// gespeicherte Prozedur, benutzerdefinierte Funktion ----------
-Definieren Sie eine gespeicherte Prozedur: Eine gespeicherte Prozedur ist ein Code (Prozedur), das in der Datenbank in SQL gespeichert ist.
Ein gespeichertes Verfahren wird normalerweise verwendet, um eine Geschäftslogik wie Registrierung, Unterrichtszahlung, Bestelleintrag usw. abzuschließen.
Eine Funktion konzentriert sich normalerweise auf eine bestimmte Funktion und wird als Dienst für andere Programme angesehen.

-- Erstellen
Prozedur erstellen SP_NAME (Parameterliste)
Verfahrenskörper

Parameterliste: Unterscheidet sich von der Parameterliste einer Funktion, der Parametertyp muss angegeben werden
In Eingangstyp angezeigt
Aus, den Ausgangstyp angeben
In Out angeben, wie ein gemischter Typ angezeigt wird

Beachten Sie, dass es keinen Rückgabewert gibt.


/ * Gespeicherte Prozedur */ ----------------------

Eine gespeicherte Prozedur ist eine Sammlung ausführbarer Code. Im Vergleich zu Funktionen neigt es eher zur Geschäftslogik.
Rufen Sie an: Anrufverfahrensname
-- Beachten
- Kein Rückgabewert.
- kann nur alleine bezeichnet werden und kann nicht mit anderen Aussagen gemischt werden

- Parameter
In | out | Inout Parameter Name Datentyp
In der Eingabe: Während des Aufrufprozesses werden Daten in die Parameter innerhalb der Prozedurkörper eingegeben.
Ausgabe aus Ausgabe: Während des Aufrufprozesses wird das Ergebnis der Prozedurgremium an den Client zurückgegeben
Eingabe und Ausgabe in Out: sowohl Eingang als auch Ausgang

-- Grammatik
Verfahrensvorgangsname erstellen (Parameterliste)
BEGINNEN
Verfahrenskörper
ENDE


/* Benutzer- und Berechtigungsverwaltung */ ------------------

Benutzerinformationstabelle: mysql.user
- Berechtigungen aktualisieren
Spülung Privilegien
- Benutzer hinzufügen
CREATE USER Benutzername IDENTIFIED BY [PASSWORT] Passwort (Zeichenfolge)
– Sie müssen über das globale CREATE USER-Privileg für die MySQL-Datenbank oder über das INSERT-Privileg verfügen.
- Kann nur Benutzer erstellen, kann aber keine Berechtigungen erteilen.
- Benutzername, beachten Sie die Anführungszeichen: zB 'Benutzername'@'192.168.1.1'
- Das Kennwort muss auch zitiert werden, und auch reine numerische Passwörter müssen zitiert werden
- Um das Kennwort im Klartext anzugeben, lassen Sie das Kennwortschlüsselwort weg. Um das Kennwort als Hashwert anzugeben, der von der Funktion PASSWORD() zurückgegeben wird, schließen Sie das Schlüsselwort PASSWORD ein.
- Benutzer umbenennen
BENENNEN SIE BENUTZER ALT_BENUTZER IN NEUER_BENUTZER UM
- Passwort festlegen
Setzen Sie Passwort = Passwort ('Passwort') - Setzen Sie das Kennwort für den aktuellen Benutzer
Setzen Sie das Kennwort für Benutzername = Passwort ('Passwort') - Setzen Sie das Kennwort für den angegebenen Benutzer
- Benutzer löschen
Benutzer Benutzername fallen lassen
- Zuwenden von Berechtigungen/Benutzer hinzufügen
List für die Berechtigung auf den Tabellennamen für den Benutzernamen [durch [Passwort] 'Passwort' identifiziert] gewähren.
- Alle Privilegien bedeuten alle Privilegien
- *. * bedeutet alle Tabellen in allen Bibliotheken
- Bibliotheksname.
- Berechtigungen anzeigen
Zeigen Sie Zuschüsse für den Benutzernamen
- Die aktuellen Benutzerberechtigungen anzeigen
Zeigen Sie Zuschüsse;
- REPOKE Berechtigungen
Wiederholen
Reben Sie alle Privilegien wider, Zuschussoption vom Benutzernamen - alle Privilegien widerrufen
- Berechtigungsstufen
- Um Grant oder Revoke zu verwenden, müssen Sie über die Berechtigungsberechtigungen für die Zuschussoption verfügen, und Sie müssen das Privileg verwenden, das Sie gewähren oder widerrufen.
Globale Ebene: Globale Berechtigungen gelten für alle Datenbanken in einem bestimmten Server.
GRANT ALL ON *.* und REVOKE ALL ON *.* erteilen und widerrufen nur globale Privilegien.
Datenbankebene: Datenbankberechtigungen gelten für alle Objekte in einer bestimmten Datenbank, mysql.db, mysql.host
GRANT ALL ON db_name.* und REVOKE ALL ON db_name.* erteilen und entziehen nur Datenbankberechtigungen.
Tabellenstufe: Die Tabellenrechte gelten für alle Spalten in einer bestimmten Tabelle
Mit den Befehlen GRANT ALL ON db_name.tbl_name und REVOKE ALL ON db_name.tbl_name können nur Tabellenberechtigungen gewährt und widerrufen werden.
Spaltenebene: Spaltenrechte gelten für eine einzelne Spalte in einer bestimmten Tabelle
Wenn Sie REVOKE verwenden, müssen Sie dieselben Spalten angeben, die gewährt werden sollen.
- Erlaubnisliste
Alle [Berechtigungen] - Stellen Sie alle einfachen Berechtigungen außer der Option Grant fest
Alter - Ermöglicht die Verwendung der Änderungstabelle
Routine ändern - eine gespeicherte Routine ändern oder löschen
Create - Ermöglicht die Verwendung von Create -Tabelle
Routine erstellen - Erstellen Sie eine gespeicherte Routine
Temporäre Tabellen erstellen - ermöglicht die Verwendung der temporären Tabelle erstellen
BENUTZER ERSTELLEN – Ermöglicht die Verwendung der Funktionen „BENUTZER ERSTELLEN“, „BENUTZER LÖSCHEN“, „BENUTZER UMBENENNEN“ und „ALLE PRIVILEGIEN WIDERRUFEN“.
CREATE VIEW -- Ermöglicht die Verwendung von CREATE VIEW
DELETE -- Ermöglicht die Verwendung von DELETE
DROP - Ermöglicht die Verwendung von DROP TABLE
Ausführen - ermöglicht dem Benutzer, eine gespeicherte Unterroutine auszuführen
Datei - Ermöglicht die Verwendung von Select ... in Outfile und laden Sie Daten infile
INDEX - Ermöglicht die Verwendung von CREATE INDEX und DROP INDEX
INSERT -- Ermöglicht die Verwendung von INSERT
LOCK TABLES – Ermöglicht Ihnen, LOCK TABLES auf Tabellen anzuwenden, für die Sie über SELECT-Berechtigungen verfügen.
PROZESS - Aktivieren Sie die Verwendung von „Vollständige Prozessliste anzeigen“.
Referenzen - nicht implementiert
Neu laden - Ermöglicht die Verwendung von Flush
Replication Client - Ermöglicht dem Benutzer, die Adresse eines Slave oder eines Master -Servers abzufragen
Replikation Slave - Für Replikationssklavenserver (Lesen von Binärprotokollereignissen vom Master -Server)
SELECT -- Ermöglicht die Verwendung von SELECT
Datenbanken anzeigen - alle Datenbanken anzeigen
Ansicht anzeigen - Verwenden Sie die Verwendung von Show Create Create -Ansicht aktivieren
SHUTDOWN – ermöglicht die Verwendung von mysqladmin shutdown
SUPER – Ermöglicht die Verwendung der Anweisungen CHANGE MASTER, KILL, PURGE MASTER LOGS und SET GLOBAL sowie des Debug-Befehls mysqladmin; ermöglicht Ihnen die (einmalige) Verbindung, auch wenn die Anzahl der Verbindungen erreicht wurde.
UPDATE -- Ermöglicht die Verwendung von UPDATE
Nutzung - Synonym für "keine Berechtigungen"
Zuschussoption - Gewährung von Privilegien zulassen


/ * Tabellenwartung */
- Analysieren und speichern Sie die Schlüsselwortverteilung der Tabelle
Analysieren [lokal |.
- Überprüfen Sie einen oder mehrere Tabellen auf Fehler
Überprüfen Sie die Tabelle TBL_NAME [, TBL_NAME] ... [Option] ...
Option = {SCHNELL | SCHNELL | MITTEL | ERWEITERT | GEÄNDERT}
- Die Datendateien defrieren
Optimieren [Lokal |.

/* Verschiedenes*/ ------------------

1. Sie können Back Ticks (`) verwenden, um Bezeichner (Bibliotheksnamen, Tabellennamen, Feldnamen, Indizes, Aliase) zu wickeln, um Duplikation mit Schlüsselwörtern zu vermeiden! Chinesisch können auch als Kennung verwendet werden!

2. Jedes Bibliotheksverzeichnis verfügt über eine Optionsdatei db.opt, die die aktuelle Datenbank speichert.

3. Hinweise:

Einzelzeilenkommentar# Kommentar Inhaltsmulti-Linie Kommentar/* Kommentarinhalt*/
Einzelzeilenkommentar-Kommentarinhalt (Standard-SQL-Kommentarstil, der einen Speicherzeichen (Platz, Registerkarte, Zeilenumbruch usw.) nach einem Doppel-Armaturenbrett erfordert)

4. Muster Wildcards:

_ Jedes einzelne Zeichen
% Eine beliebige Anzahl von Zeichen, einschließlich Zero Zeichen
Einzelne Zitate müssen entkommen \ 'entkommen.

5. Der Anweisung Terminator in der CMD -Befehlszeile kann ";", "\ g", "\ g" sein, was nur das Anzeigeergebnis beeinflusst. Verwenden Sie an anderer Stelle ein Semikolon, um die Aussage zu beenden. Der Ablager kann den Anweisungsanschluss des aktuellen Dialogfelds ändern.

6. SQL ist nicht fallempfindlich

7. Vorhandene Aussagen löschen: \ C.

Die obige umfassende Zusammenfassung der häufig verwendeten MySQL-Aussagen (Must Read) ist alles, was ich mit Ihnen teilen möchte.

Das könnte Sie auch interessieren:
  • Tägliche Sammlung häufig verwendeter SQL-Abfrageanweisungen
  • MySQL-Reihe: Grundlegende Konzepte der relationalen MySQL-Datenbank
  • Ist MySQL eine relationale Datenbank?
  • Lernen Sie schnell die MySQL-Grundlagen
  • Zusammenfassung der Kenntnisse zur SQL-Abfragesyntax

<<:  Detaillierte Erklärung der grundlegenden Verwendung des SSH-Befehls ssh-keygen

>>:  JavaScript ermittelt die Position der Bildlaufleiste und verschiebt die Seite zum Ankerpunkt

Artikel empfehlen

Installieren Sie Windows Server 2019 auf VMware Workstation (Grafisches Tutorial)

Wenn Sie aufgefordert werden, einen Schlüssel ein...

Detailliertes Beispiel zur Verwendung der distinct-Methode in MySQL

Ein deutlicher Bedeutung: distinct wird verwendet...

Beispiel zum Ändern von Stilen über CSS-Variablen

Frage Wie ändere ich den CSS-Pseudoklassenstil mi...

Implementierung einer Fuzzy-Abfrage wie %% in MySQL

1, %, steht für beliebige 0 oder mehr Zeichen. Es...

js zum Schreiben des Karusselleffekts

In diesem Artikel wird der spezifische Code von j...

So installieren Sie MySql in CentOS 8 und erlauben Remoteverbindungen

Herunterladen und installieren. Prüfen Sie zunäch...

Beispiele für JavaScript-Entschüttelungen und Drosselung

Inhaltsverzeichnis Stabilisierung Drosselung: Ant...

Anweisungen zum Erlernen von Vue

Inhaltsverzeichnis 1. v-Text (v-Befehlsname = „Va...

Was sind die Attribute des JSscript-Tags

Was sind die Attribute des JS-Skript-Tags: charse...