Heim  >  Artikel  >  Datenbank  >  Detaillierte Einführung in eine umfassende Zusammenfassung häufig verwendeter Anweisungen in MySql

Detaillierte Einführung in eine umfassende Zusammenfassung häufig verwendeter Anweisungen in MySql

黄舟
黄舟Original
2017-03-21 13:24:04959Durchsuche

Der unten stehende Editor liefert Ihnen eine umfassende Zusammenfassung häufig verwendeter Anweisungen in MySql (ein Artikel, den Sie unbedingt lesen müssen). Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Kommen Sie vorbei und schauen Sie sich den Editor an.

Die unten zusammengefassten Wissenspunkte werden alle häufig verwendet und sind alle nützliche Informationen, also behalten Sie sie in Ihrer Sammlung.

/* MySQL starten */

net start mysql

/* Verbindung zum Server herstellen und trennen*/

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

/* Berechtigungsüberprüfung zur Anmeldung bei MySQL überspringen */

mysqld --skip-grant-tables
-- Root-Passwort ändern
Passwortverschlüsselungsfunktion passwort()
update mysql.user set passwort=password('root');

PROZESSLISTE ANZEIGEN – Zeigt an, welche Threads ausgeführt werden
VARIABLEN ANZEIGEN –

/* Datenbankbetrieb*/ ------------------

-- Aktuelle Datenbank anzeigen
Datenbank auswählen();
-- Aktuelle Uhrzeit, Benutzername, Datenbankversion anzeigen
Jetzt(), Benutzer(), Version() auswählen
-- Bibliothek erstellen
Datenbank erstellen[ wenn nicht vorhanden] Datenbankname Datenbankoption
Datenbankoption:
CHARACTER SET charset_name
COLLATE collation_name
-- Vorhandene Bibliotheken anzeigen
Datenbanken anzeigen[ like 'Muster']
--Aktuelle Bibliotheksinformationen anzeigen
Datenbank erstellen, Datenbanknamen anzeigen
--Bibliotheksoptionsinformationen ändern
Datenbank ändern, Bibliotheksnamen-Optionsinformationen
--LöschenBibliothek
Datenbank löschen[ falls vorhanden] Datenbankname
Gleichzeitig das mit der Datenbank verknüpfte Verzeichnis und seinen Verzeichnisinhalt löschen

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

-- Tabelle erstellen
[temporäre] Tabelle erstellen[falls nicht vorhanden] [Bibliotheksname.]Tabellenname (Strukturdefinition der Tabelle)[Tabellenoptionen]
Jedes Feld muss einen Datentyp
temporäre Tabelle haben, die Tabelle verschwindet automatisch wenn die Sitzung endet

Für Felddefinition:


Feldname-Datentyp [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [ UNIQUE [KEY] |. PRIMÄR] SCHLÜSSEL] [COMMENT 'string']


--Tabellenoptionen
--Zeichensatz
-CHARSET = charset_name
-Wenn die Tabelle nicht festgelegt ist, wird der Datenbankzeichensatz verwendet
--Speicher-Engine
ENGINE = engine_name
Tabellen verwenden unterschiedliche Datenstrukturen bei der Datenverwaltung. Unterschiedliche Strukturen führen zu unterschiedlichen Verarbeitungsmethoden und bereitgestellten Funktionsoperationen.
Gemeinsame Engines: InnoDB MyISAM Memory/Heap BDB Merge-Beispiel CSV MaxDB Archive
Es werden verschiedene Engines verwendet Auf unterschiedliche Weise werden die Struktur und die Daten der Tabelle gespeichert 🎜> SHOW ENGINES – Zeigt die Statusinformationen der Speicher-Engine an
SHOW ENGINE-Engine-Name {LOGS|STATUS} – Protokoll- oder Statusinformationen der Speicher-Engine anzeigen
– Datendateiverzeichnis
DATA DIRECTORY = 'Directory'
– Indexdateiverzeichnis
INDEXVERZEICHNIS = 'Directory'
-- Tabellenkommentar
COMMENT = 'string'
-- Partitionsoption
PARTITION BY.. (Einzelheiten finden Sie im Handbuch)
--Alle Tabellen anzeigen
TABELLEN ANZEIGEN[ LIKE 'pattern']
TABELLEN AB Tabellennamen ANZEIGEN
-- Tabellenorganisation anzeigen
SHOW CREATE TABLE Tabellenname ( detailliertere Informationen)
DESC Tabellenname/DESCRIBE Tabellenname/ EXPLAIN-Tabellenname/SHOW COLUMNS FROM table name [LIKE 'PATTERN']
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
- -
Ändern Sie die Tabelle

-- Optionen zum Ändern der Tabelle selbst Optionen für die ALTER TABLE-Tabellennamentabelle ZB: ALTER TABLE-Tabellenname ENGINE=MYISAM;
– Starten Sie die Tabelle neu. Benennen Sie
UMBENENNEN SIE TABLE den ursprünglichen Tabellennamen in eine neue Tabelle Name
RENAME TABLE ursprünglicher Tabellenname TO Datenbankname.Tabellenname (Tabelle kann in eine andere Datenbank verschoben werden)
– RENAME kann zwei Tabellennamen austauschen – Ändern Sie das Feld des Formulars nach dem Feldnamen
ZUERST – bedeutet, es zum ersten hinzuzufügen
PRIMÄRSCHLÜSSEL HINZUFÜGEN (Feldname) – Einen Primärschlüssel erstellen
UNIQUE [Indexname] (Feldname) HINZUFÜGEN – Einen eindeutigen Index erstellen
INDEX HINZUFÜGEN [ Indexname] (Feldname) – Einen normalen Index erstellen
ADD
DROP[ COLUMN] Feldname – Feld löschen
MODIFY[ COLUMN] Feldnamenfeld
Attribute
- -In Durch die Unterstützung der Feldattribute kann der Feldname nicht geändert werden (alle Originalattribute müssen ebenfalls geschrieben werden)
[Spalte] ursprünglichen Feldnamen ändern, neues Feldname-Feldattribut - Feldnamenänderung unterstützen
Primär löschen Schlüssel – Löschen Sie den Primärschlüssel (Sie müssen sein AUTO_INCREMENT-Attribut löschen, bevor Sie den Primärschlüssel löschen)
DROP INDEX Indexname – Index löschen
DROP FOREIGN KEY Fremdschlüssel – Fremdschlüssel löschen

-- Tabelle löschen
DROP TABLE[IF EXISTS] Tabellenname...
-- Tabelle löschen Daten
TRUNCATE [TABLE] Tabellenname
-- Tabellenstruktur kopieren
CREATE TABLE Tabellenname LIKE Tabellenname, der kopiert werden soll
-- Tabellenstruktur und Daten kopieren
CREATE TABLE Tabellenname [AS ] SELECT * FROM zu kopierender Tabellenname
-- Überprüfen Sie, ob die Tabelle Fehler aufweist
CHECK TABLE tbl_name [, tbl_name] ... [Option] ...
-- Optimieren Sie die Tabelle
OPTIMIZE [LOCAL |. NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
--Repair table
REPAIR [LOCAL |. NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
-- Analysetabelle
ANALYZE [LOCAL |. NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

/* Datenoperation*/ -- -

-- Add
INSERT [INTO] Tabellenname [(Feldliste)] VALUES (Werteliste ) )[, (Werteliste), ...]
   — Wenn die einzufügende Werteliste alle Felder enthält und in derselben Reihenfolge vorliegt, kann die Feldliste weggelassen werden.
-- Es können mehrere Datensätze gleichzeitig eingefügt werden!
REPLACE ist genau das Gleiche wie INSERT und ist austauschbar.
INSERT [INTO] Tabellenname SET Feldname = Wert [, Feldname = Wert, ...]
-- Prüfen
SELECT Feldliste FROM Tabellenname [andere Klauseln]
-- Mehrere Felder aus mehreren Tabellen
– Andere Klauseln dürfen nicht verwendet werden
– Die Feldliste kann durch * ersetzt werden, um alle Felder darzustellen
– Löschen
DELETE FROM table name [Bedingungsklausel löschen]
Wenn keine Bedingungsklausel vorhanden ist, werden alle
gelöscht--change
UPDATE table name SET field name=new value[, field name=new value] [ UpdateBedingungen]

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

--Die Kodierung kann für MySQL, Datenbanken, Tabellen und Felder festgelegt werden

--Datenkodierung und Client-Kodierung müssen nicht konsistent sein

VARIABLEN WIE 'character_set_ ANZEIGEN %' – Alle Zeichensatz-Codierungselemente anzeigen
Character_set_client Die vom Client beim Senden von Daten an den Server verwendete Codierung
Character_set_results Die vom Server verwendete Codierung, um Ergebnisse an den Client zurückzugeben
Character_set_connection Verbindungsschicht-Codierung

SET Variablenname = Variablenwert

set Character_set_client = gbk;
set Character_set_results = gbk;
set Character_set_connection = gbk;
SET NAMES GBK ; -- Ganz nach Abschluss der oben genannten drei Einstellungen

-- Proofset

Proofset wird zum Sortieren verwendet
SHOW CHARACTER SET [LIKE 'pattern']/SHOW CHARSET [LIKE 'pattern' ] Alle Zeichensätze anzeigen
SORTIERUNG ANZEIGEN [LIKE 'Muster'] Alle Sortiersätze anzeigen
Zeichensatz-Kodierung des Zeichensatzes
Kodierung des Sortiersatzes sortieren

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

1 🎜>

-- a. Ganzzahltyp---------

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

int(M) M stellt die Gesamtzahl der Ziffern dar

- Es gibt standardmäßig ein Vorzeichenbit, vorzeichenlose Attributänderung

- Anzeigebreite: Wenn eine bestimmte Zahl für die beim Definieren des Felds festgelegte Anzahl von Ziffern nicht ausreicht, füllen Sie sie mit 0 vor, Nullfüllungsattributänderung

Beispiel: int(5) Fügen Sie eine Zahl „123“ ein, Füllen Sie es aus, gefolgt von „00123“

- Je kleiner, desto besser, wenn die Anforderungen erfüllt sind.

- 1 bedeutet, dass der Bool-Wert wahr ist, 0 bedeutet, dass der Bool-Wert falsch ist. MySQL hat keinen booleschen Typ, der durch die Ganzzahlen 0 und 1 dargestellt wird. Tinyint(1) wird üblicherweise zur Darstellung des booleschen Typs verwendet.

-- b. Gleitkomma ----------

Typ Bytes Bereich

float (einfache Genauigkeit) 4 Bytes

double (doppelte Genauigkeit) 8 Bytes

Der Gleitkommatyp unterstützt sowohl das Vorzeichenbit-Attribut ohne Vorzeichen als auch das Anzeigebreiten-Zerofill-Attribut.

Anders als beim Ganzzahltyp wird 0 davor und danach aufgefüllt.

Bei der Definition des Gleitkommatyps müssen Sie die Gesamtzahl der Ziffern und die Anzahl der Dezimalstellen angeben.

float(M, D) double(M, D)

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

Die Größe von M und D bestimmt den Bereich der Gleitkommazahlen. Anders als der feste Bereich ganzer Zahlen.

M steht sowohl für die Gesamtzahl der Ziffern (ohne Dezimalpunkte und Vorzeichen) als auch für die Anzeigebreite (einschließlich aller Anzeigesymbole).

Unterstützt die wissenschaftliche Notation.

Gleitkommazahlen stellen Näherungswerte dar.

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

Dezimal  –  variable Länge

decimal(M, D) M repräsentiert auch die Gesamtzahl der Ziffern und D repräsentiert die Anzahl der Dezimalstellen.

Speichern Sie im Gegensatz zum Runden von Gleitkommazahlen einen genauen Wert ohne Datenänderungen.

Gleitkommazahl zum Speichern in String umwandeln, jede 9-stellige Zahl wird als 4 Bytes gespeichert.

2. String-Typ

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

char Zeichenfolge mit fester Länge, schnell, aber verschwendet Platz

varchar Zeichenfolge mit variabler Länge, langsam, aber platzsparend

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

Unterschiedliche Kodierungen belegen unterschiedliche Räume.

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

varchar, bis zu 65535 Zeichen, bezogen auf die Codierung.

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

utf8 hat eine maximale Länge von 21844 Zeichen, gbk hat eine maximale Länge von 32766 Zeichen und latin1 hat eine maximale Länge von 65532 Zeichen

varchar hat eine variable Länge und benötigt Speicherplatz Wird zum Speichern der Länge von Varchar verwendet. Wenn die Daten weniger als 255 Bytes betragen, wird ein Byte zum Speichern der Länge verwendet, andernfalls werden zwei Bytes zum Speichern benötigt. Die maximale effektive Länge von

varchar wird durch die maximale Zeilengröße und den verwendeten Zeichensatz bestimmt.

Die maximale effektive Länge beträgt 65532 Bytes, denn wenn Varchar eine Zeichenfolge speichert, ist das erste Byte leer und es sind keine Daten vorhanden, und dann werden zwei Bytes benötigt, um die Länge der Zeichenfolge zu speichern. Also die effektive Länge ist 64432-1-2=65532 Bytes.

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

-- Blob, Text ----------

Blob-Binärzeichenfolge (Bytezeichenfolge)

Tinyblob, Blob, Mediumblob, Longblob

Text, nicht-binäre Zeichenfolge (Zeichenfolge)

Tinytext , text, mediumtext, longtext

text Bei der Definition muss die Länge nicht definiert werden und die Gesamtlänge wird nicht berechnet. Beim Definieren des Texttyps

kann der Standardwert nicht angegeben werden

-- binär, varbinär ----------

ähnelt char und varchar und wird zum Speichern von Binärzeichenfolgen verwendet, dh zum Speichern von Bytezeichenfolgen anstelle von Zeichenfolgen.

char, varchar, text entsprechen Binary, Varbinary, Blob.

3. Datums- und Uhrzeittypen

im Allgemeinen Verwenden Sie eine Ganzzahl. Speichern Sie den -Zeitstempel , da PHP den Zeitstempel problemlos formatieren kann.

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

date 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:5 9 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
“ JJJJ-MM-TT“
„JJ-MM-TT“
„JJJJMMTT“
„JJMMTT“
„hhmmss“
Jahr „JJJJ“
„JJ“
„JJJJ“
JJ



4. Aufzählungen und Sammlungen

-- Aufzählung (enum) ----- -----

enum(val1, val2, val3...)Treffen Sie eine Einzelauswahl unter bekannten Werten. Die maximale Zahl beträgt 65535.

Wenn der Aufzählungswert gespeichert wird, wird er als 2-Byte-Ganzzahl (Smallint) gespeichert. Jeder Aufzählungswert beginnt in der Reihenfolge der gespeicherten Position bei 1 und erhöht sich schrittweise.

verhält sich wie ein String-Typ, wird aber als Ganzzahl gespeichert.

Der Index eines NULL-Wertes ist NULL.

Der Indexwert des leeren String-Fehlerwerts ist 0.

-- set ----------

set(val1, val2, val3 ... )
Tabellenregister erstellen (Geschlechtssatz('männlich', 'weiblich', 'keine') );

Werte in die Registerkarte einfügen ('männlich, weiblich');

Kann bis zu 64 verschiedene Mitglieder haben. In Bigint gespeichert, insgesamt 8 Bytes. Erfolgt in Form einer

Bit-Operation

.

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

/* Typ auswählen*/-- PHP-Perspektive

1. Funktionen sind erfüllt

2. Der Speicherplatz sollte so klein wie möglich sein und die Verarbeitungseffizienz ist höher

3. Berücksichtigen Sie Kompatibilitätsprobleme




--IP Storage----------

Einfach speichern, verfügbare Zeichenfolge 2. Wenn Berechnung, Suche usw. erforderlich sind, kann es als 4-Byte-Int ohne Vorzeichen gespeichert werden, d. h. ohne Vorzeichen

1)

PHP-Funktion

Konvertierung

ip2long kann in einen Ganzzahltyp konvertiert werden, es tritt jedoch ein Problem beim Tragen von Symbolen auf. Muss als vorzeichenlose Ganzzahl formatiert werden. Verwenden Sie die Funktion sprintf, um die Zeichenfolge zu formatieren

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

Verwenden Sie dann long2ip, um die Ganzzahl zu konvertieren zurück IP-Zeichenfolge

2) MySQL-Funktionskonvertierung (unsigned integer, UNSIGNED)

INET_ATON('127.0.0.1') IP in Ganzzahl umwandeln

INET_NTOA(2130706433 ) Ganzzahl in IP konvertieren


/* Spaltenattribute (Column
Constraint

) */ -------- ------ ----

1. Primärschlüssel

- kann das Feld des Datensatzes eindeutig identifizieren kann als Primärschlüssel verwendet werden.
- Eine Tabelle kann nur einen Primärschlüssel haben.
- Der Primärschlüssel ist eindeutig.
- Wenn Sie ein Feld deklarieren, verwenden Sie den Primärschlüssel, um es zu identifizieren.

kann auch nach der Feldliste

deklariert werden

Beispiel: Tabellenregister erstellen (id int, stu varchar(10), Primärschlüssel (id));
- Der Wert des Primärschlüsselfelds darf nicht null sein.
- Der Primärschlüssel kann aus mehreren Feldern bestehen. Zu diesem Zeitpunkt ist eine nach der Feldliste deklarierte Methode erforderlich.
Beispiel: Tabellenregister erstellen (id int, stu varchar(10), age int, Primary Key (stu, age));

2 )

damit der Wert eines bestimmten Feldes nicht wiederholt werden kann.

3. Null-Einschränkung

Null ist kein Datentyp, sondern ein Attribut der Spalte.
Gibt an, ob die aktuelle Spalte null sein kann, was bedeutet, dass nichts vorhanden ist.
null, darf leer sein. Standard.
nicht null, leer ist nicht zulässig.
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. Standardwertattribut

Der Standardwert des aktuellen Felds.
in Tab-Werte einfügen (Standard, 'val'); – Dies bedeutet, dass gezwungen wird, den Standardwert zu verwenden.
Tabellenregister erstellen (add_time timestamp default current_timestamp);
-- bedeutet, den Zeitstempel der aktuellen Zeit als Standardwert festzulegen.
aktuelles_Datum, aktuelle_Uhrzeit

5. auto_increment automatische Wachstumsbeschränkung

Automatisches Wachstum muss ein Index sein (Primärschlüssel oder eindeutig)

Nur ​​ein Feld kann automatisch erhöht werden.

Der Standardwert ist 1, um das automatische Wachstum zu starten. Es kann über das Tabellenattribut auto_increment = x oder alter table tbl auto_increment = x;

6 festgelegt werden. Beispiel: Tabellenregisterkarte (id int) Kommentar „Kommentarinhalt“ erstellen

7. Fremdschlüsseleinschränkungen

werden verwendet, um den Master einzuschränken Tabelle und die Slave-Tabelle Datenintegrität. Tabelle t1 ändern, Einschränkung „t1_t2_fk“ hinzufügen, Fremdschlüssel (t1_id) verweist auf t2(id);

--Verknüpfen Sie den t1_id-Fremdschlüssel von Tabelle t1 mit dem ID-Feld von Tabelle t2.

--Jeder Fremdschlüssel hat einen Namen, den Sie durch Einschränkung angeben können. Die Tabelle, in der der Fremdschlüssel vorhanden ist, wird als Slave-Tabelle (Untertabelle) bezeichnet, und die Tabelle, auf die der Fremdschlüssel verweist die Master-Tabelle (übergeordnete Tabelle).

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

In MySQL können Sie Fremdschlüsseleinschränkungen für die InnoDB-Engine verwenden:

Syntax:

Fremdschlüssel (Fremdschlüsselfeld) verweist auf die Haupttabelle Name ( Verwandte Felder) [Aktion, wenn der Master-Tabellendatensatz gelöscht wird] [Aktion, wenn der Master-Tabellendatensatz aktualisiert wird]

Zu diesem Zeitpunkt ist es notwendig, einen Fremdschlüssel aus der Slave-Tabelle zu erkennen, der benötigt wird auf den vorhandenen Wert der Mastertabelle beschränkt werden. Der Fremdschlüssel kann auf Null gesetzt werden, wenn keine Zuordnung vorliegt. Voraussetzung ist, dass die Fremdschlüsselspalte nicht Null ist. Sie können die Aktion nicht angeben, wenn der Haupttabellendatensatz geändert oder aktualisiert wird. Dann wird der Vorgang der Haupttabelle zu diesem Zeitpunkt abgelehnt.

Wenn beim Aktualisieren oder beim Löschen angegeben ist: Beim Löschen oder Aktualisieren stehen mehrere Vorgänge zur Auswahl:

1. Kaskadenbetrieb. Die Daten der Master-Tabelle werden aktualisiert (Aktualisierung des Primärschlüsselwerts) und die Slave-Tabelle wird ebenfalls aktualisiert (Aktualisierung des Fremdschlüsselwerts). Die Datensätze der Master-Tabelle werden gelöscht, und die zugehörigen Datensätze aus der Slave-Tabelle werden ebenfalls gelöscht. 2. Null setzen, auf Null setzen. Die Daten der Haupttabelle werden aktualisiert (der Primärschlüsselwert wird aktualisiert) und der Fremdschlüssel der Sekundärtabelle wird auf Null gesetzt. Der primäre Tabellendatensatz wird gelöscht und der Fremdschlüssel des sekundären tabellenbezogenen Datensatzes wird auf Null gesetzt. Beachten Sie jedoch, dass die Fremdschlüsselspalte keine Attributbeschränkungen (nicht NULL) aufweisen darf. 3. Löschen und Aktualisieren der übergeordneten Tabelle einschränken, verweigern.

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

/* Tabellenerstellungsspezifikationen */ -------------------

-- Normalformat, NF
– Jede Tabelle speichert eine Entitätsinformation
– Jede hat ein ID-Feld als Primärschlüssel
– ID-Primärschlüssel + atomare Tabelle
– 1NF, Erste Normalform
Wenn das Feld nicht weiter unterteilt werden kann, erfüllt es die erste Normalform.
-- 2NF, Zweite Normalform
Unter der Voraussetzung, dass die erste Normalform erfüllt ist, kann keine teilweise Abhängigkeit auftreten.
Teilabhängigkeiten können vermieden werden, indem passende Primärschlüssel eliminiert werden. Fügen Sie einspaltige Schlüsselwörter hinzu.
-- 3NF, Dritte Normalform
Unter der Voraussetzung, dass die zweite Normalform erfüllt ist, können transitive Abhängigkeiten nicht auftreten.
Ein bestimmtes Feld hängt vom Primärschlüssel ab, und andere Felder hängen von diesem Feld ab. Das ist transitive Abhängigkeit.
Fügen Sie die Daten einer Entitätsinformation in eine Tabelle ein.

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

wählen [alle |distinct] select_expr from -> 🎜>

--* kann zur Darstellung aller Felder verwendet werden. select * from tb;
- Sie können
Ausdruck
verwenden (Berechnungsformel, Funktionsaufrufe, Felder sind ebenfalls Ausdruck)

Wählen Sie Stu, 29+25, Now () aus () from () from tb;

– Sie können für jede Spalte Aliase verwenden. Geeignet zur Vereinfachung der Spaltenidentifizierung und zur Vermeidung der Duplizierung mehrerer Spaltenkennungen.
           – Verwenden Sie das Schlüsselwort „as“ oder lassen Sie es weg. „as“ kann weggelassen werden. „                         
– Sie können der Tabelle einen Alias ​​geben. Verwenden Sie das Schlüsselwort as. wählen Sie * aus tb1 als tt, tb2 als bb; aus Klassen können mehrere Tabellen gleichzeitig erscheinen.     – Mehrere Tabellen werden horizontal überlagert und die Daten bilden ein kartesisches Produkt.
              select * from tb1, tb2;


c where-Klausel


-- die von Filter erhaltene Datenquelle In.
– Ganzzahl 1 steht für wahr, 0 steht für falsch.

– Der Ausdruck besteht aus dem

-Operator und dem Operations--Array
.
                                                                                                                                                                                                                                               ;, >=, >, !, &&, ||,
in (nicht) null, (nicht) wie, (nicht) in, (nicht) zwischen und, ist (nicht), und, oder, nein,

d. Gruppieren nach Klausel, Gruppierungsklausel
Gruppieren nach Feld/Alias ​​[Sortiermethode]

Gruppierung Wird später sortiert. Aufsteigende Reihenfolge: ASC, absteigende Reihenfolge: DESC


Die folgende [Gesamtfunktion] muss mit „group by“ verwendet werden:
count Gibt die Anzahl verschiedener Nicht-NULL-Werte zurück count(*), count(field) sum Summiert die Summe max Findet den Maximalwert
min Findet den Minimalwert
avg Findet den Durchschnittswert
group_concat Gibt ein String-Ergebnis mit concatenated zurück Nicht-NULL-Werte aus einer Gruppe.
String-Verkettung
innerhalb der Gruppe.

e. mit Klausel, Bedingungsklausel

Die Funktion und Verwendung sind die gleichen wie bei where, aber der Ausführungszeitpunkt ist unterschiedlich.
Wo führt die Erkennungsdaten zu Beginn aus und filtert die Originaldaten.
Die gefilterten Ergebnisse müssen erneut gefiltert werden.
Das Feld „Having“ muss abgefragt werden und das Feld „Where“ muss in der Datentabelle vorhanden sein.
Wo Feld-Aliase nicht verwendet werden können, bei have jedoch möglich ist. Denn wenn der WHERE-Code ausgeführt wird, ist der Spaltenwert möglicherweise noch nicht ermittelt.
Wo die Gesamtfunktion nicht verwendet werden kann. Im Allgemeinen wird have
nur verwendet, wenn eine Aggregationsfunktion benötigt wird. Der SQL-Standard verlangt, dass HAVING auf Spalten in der GROUP BY-Klausel verweisen oder in Spalten in der Aggregationsfunktion verwendet werden muss.

f. Reihenfolge nach Klausel, Sortierklausel

Reihenfolge nach Sortierfeld/Alias-Sortiermethode [, Sortierfeld/Alias ​​​​Sortiermethode]...
Aufsteigende Reihenfolge: ASC, absteigende Reihenfolge: DESC
Unterstützt die Sortierung mehrerer Felder.

g. Begrenzungsklausel, Begrenzung der Anzahl der Ergebnisse

begrenzt nur die Anzahl der verarbeiteten Ergebnisse. Behandeln Sie die verarbeiteten Ergebnisse als Sammlung, wobei der Index in der Reihenfolge, in der die Datensätze erscheinen, bei 0 beginnt.
Startposition begrenzen, Anzahl der Elemente ermitteln
Das Weglassen des ersten Parameters bedeutet, dass mit Index 0 begonnen wird. limit Anzahl der Datensätze abrufen

h eindeutig, alle Optionen

eindeutig doppelte Datensätze entfernen
Standard ist alle, alle Datensätze

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

Kombinieren Sie die Ergebnisse mehrerer Auswahlabfragen zu einem Ergebnissatz.
SELECT ... UNION [ALL|DISTINCT] SELECT ...
Standardmäßiger DISTINCT-Modus, d. h. alle zurückgegebenen Zeilen sind eindeutig
Es wird empfohlen, jede SELECT-Abfrage in Klammern zu setzen.
Beim Sortieren nach ORDER BY muss LIMIT zur Kombination hinzugefügt werden.
Es ist erforderlich, dass die Anzahl der von jedem Select abgefragten Felder gleich ist.
Die Feldliste (Anzahl, Typ) jeder Auswahlabfrage sollte konsistent sein, da die Feldnamen in den Ergebnissen auf der ersten Auswahlanweisung basieren.

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

- Unterabfragen müssen in Klammern eingeschlossen werden.

-- from-Typ

Die Anforderung nach from ist eine Tabelle, und das Ergebnis der Unterabfrage muss einen Alias ​​haben.
– Vereinfachen Sie die Bedingungen innerhalb jeder Abfrage.
– Der from-Typ muss aus dem Ergebnis eine temporäre Tabelle generieren, die zum Aufheben der Sperre der Originaltabelle verwendet werden kann.
– Unterabfrage gibt eine Tabelle zurück, Tabellenunterabfrage.
Wählen Sie * aus (wählen Sie * aus TB, wobei ID>0 aus) als Subfrom, wobei ID>1;

-- wo Typ

- Unterabfrage gibt einen Wert zurück, skalare Unterabfrage.
– Kein Alias ​​für die Unterabfrage erforderlich.
– Die Tabelle in der Where-Unterabfrage kann nicht direkt aktualisiert werden.
select * from tb where money = (select max(money) from tb);

-- Spaltenunterabfrage

if sub -query Das Abfrageergebnis gibt eine Spalte zurück.
Verwenden Sie „in“ oder „nicht in“, um die Abfrage abzuschließen.
„Existiert“- und „Nicht vorhanden“-Bedingungen.
Wenn die Unterabfrage Daten zurückgibt, geben Sie 1 oder 0 zurück. Wird häufig zur Bestimmung von Bedingungen verwendet.
                                                                        
                                                                                                                                                                                                                                                 

Zeilenkonstruktoren werden häufig zum Vergleich mit Unterabfragen verwendet, die zwei oder mehr Spalten zurückgeben.

– Spezialoperator
!= all() Äquivalent zu not in
= some() Äquivalent zu in. any ist ein Alias ​​von some

!= some() Es ist nicht gleich not in, nicht gleich einem von ihnen.

Alle, einige können mit anderen Operatoren verwendet werden.


/* Join-Abfrage (Join) */ ------------------



Um die Felder mehrerer Tabellen zu verbinden, können Sie die Verbindungsbedingungen festlegen.
-- Inner Join(Inner Join)
– Der Standardwert ist Inner Join, Inner kann weggelassen werden.
- Die Verbindung kann nur gesendet werden, wenn die Daten vorhanden sind. Das heißt, das Verbindungsergebnis darf keine Leerzeilen enthalten.
on stellt den Verbindungszustand dar. Sein bedingter Ausdruck ähnelt dem von where. Sie können die Bedingung auch weglassen (was anzeigt, dass die Bedingung immer wahr ist).
Sie können auch where verwenden, um die Verbindungsbedingung auszudrücken.
Es gibt auch eine Verwendung, aber die Feldnamen müssen gleich sein. using (Feldname)

-- Cross-JoinCross-Join
Das heißt, ein innerer Join ohne Bedingungen.
Wählen Sie * aus tb1 Cross Join tb2;
-- äußerer Join (äußerer Join)
- Wenn die Daten nicht vorhanden sind, werden sie auch im Verbindungsergebnis angezeigt.
-- Linker äußerer Join, linker Join
Wenn die Daten nicht vorhanden sind, werden die Datensätze der linken Tabelle angezeigt und die rechte Tabelle wird mit Nullen gefüllt
-- Rechter äußerer Join, rechter Join
Wenn die Daten sind nicht vorhanden, die rechte Tabelle Der Datensatz wird angezeigt und die linke Tabelle ist mit Null gefüllt
-- natürlicher Join (natürlicher Join)
Bestimmen Sie automatisch die Verbindungsbedingungen, um die Verbindung herzustellen.
Dies entspricht dem Weglassen der Verwendung und derselbe Feldname wird automatisch gefunden.
natürliche Verknüpfung
natürliche linke Verknüpfung
natürliche rechte Verknüpfung

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

/* Import und Export*/ ------------------

* in OutDatei Dateiadresse [Kontrollformat] aus Tabellennamen auswählen – Tabellendaten exportieren
Daten laden [lokal] Infile-Dateiadresse [ersetzen|ignorieren] into table table name [control format]; -- Daten importieren
Das Standardtrennzeichen für generierte Daten ist das Tabulatorzeichen
Wenn lokal nicht angegeben ist, muss sich die Datendatei auf dem Server befinden
Schlüsselwort ersetzen und ignorieren Kontrollpaare Doppelte Verarbeitung vorhandener eindeutiger Schlüsseldatensätze
--Kontrollformat

Felder Kontrollfeldformat
Standard: Felder, die mit „t“ abgeschlossen sind und von „ maskiert durch „\“
beendet durch „string“ – beendet
eingeschlossen durch „char“ – umschlossen
maskiert durch „char“ – maskiert
– Beispiel:
SELECT a ,b,a+b INTO OUTFILE '/tmp/result.text'
FELDER TERMINATED BY ',' OPTIONAL ENCLOSED BY '"'
LINES TERMINATED BY 'n'
FROM test_table;

Linien Steuerzeilenformat

Standard: Zeilen enden mit 'n'
enden mit 'string' -- Terminate

/* insert */ ------------------

Durch Select-Anweisung erhaltene Daten Kann sein mit Einfügung eingefügt.

Sie können die Spaltenspezifikation weglassen und Werte () in Klammern anfordern, um Werte für alle Felder bereitzustellen, die in der Spaltenreihenfolge erscheinen.
Oder verwenden Sie die Set-Syntax.
insert into tbl_name set field=value,...;

kann mehrere Werte gleichzeitig in der Form (), (), (); verwenden.
in tbl_name Werte (), (), () einfügen;

Sie können Ausdrücke verwenden, wenn Sie Spaltenwerte angeben.
in tbl_name-Werte einfügen (field_value, 10+10, now());
Sie können einen speziellen Wertstandard verwenden, was bedeutet, dass die Spalte den Standardwert verwendet.
in tbl_name-Werte einfügen (field_value, Standard);

kann das Ergebnis einer Abfrage als einzufügenden Wert verwenden.
insert into tbl_name select ...;

kann angeben, dass die Informationen anderer Nicht-Primärschlüsselspalten aktualisiert werden sollen, wenn der eingefügte Wert einen Primärschlüssel- (oder eindeutigen Index-)Konflikt aufweist.
in tbl_name-Werte einfügen/einstellen/bei Aktualisierung des doppelten Schlüssels Feld=Wert auswählen/wählen;

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

DELETE FROM tbl_name [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]

Löschen gemäß Bedingungen

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

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

unterstützt das Löschen mehrerer Tabellen unter Verwendung einer ähnlichen Verbindungssyntax.
Löschen aus erfordert das Löschen von Daten aus mehreren Tabellen 1 und 2 unter Verwendung der Bedingungen für den Tabellenverbindungsvorgang.

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

TRUNCATE [TABLE] tbl_name
Daten löschen
Tabelle löschen und neu erstellen

Unterschied:

1, Abschneiden bedeutet Löschen die Tabelle und erstellen Sie sie erneut. Löschen bedeutet,

2 Element für Element zu löschen. Durch Abschneiden wird der Wert von auto_increment zurückgesetzt. Und „Löschen“ weiß es nicht

3. „Truncate“ weiß nicht, wie viele Elemente gelöscht wurden, „Delete“ hingegen schon.

4, bei Verwendung auf einer partitionierten Tabelle behält Truncate die Partition bei


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

Sichern, Datenstruktur und Daten in der Tabelle speichern.

Verwenden Sie zum Abschluss den Befehl mysqldump.

-- Exportieren

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

Sie können Sicherungsbedingungen mit -w

-- Importieren

1 beim Anmelden übertragen mysql:
Quellsicherungsdatei

2. Wenn Sie sich nicht anmelden
mysql -u Benutzername -p Passwort Datenbankname < Sicherungsdatei


/* Ansicht */ ------------------

Was ist eine Ansicht:

Eine Ansicht ist eine virtuelle Tabelle, deren Inhalt durch eine Abfrage definiert wird. Wie eine echte Tabelle enthält eine Ansicht eine Reihe benannter Spalten und Datenzeilen. Ansichten existieren jedoch nicht als gespeicherte Sätze von Datenwerten in der Datenbank. Zeilen- und Spaltendaten stammen aus den Tabellen, auf die die Abfrage verweist, die die Ansicht definiert, und werden dynamisch generiert, wenn auf die Ansicht verwiesen wird.

Die Ansicht verfügt über eine Tabellenstrukturdatei, es ist jedoch keine Datendatei vorhanden.

Ansichten fungieren wie Filter für die zugrunde liegenden Tabellen, auf die sie verweisen. Die Filter, die eine Ansicht definieren, können aus einer oder mehreren Tabellen in der aktuellen oder anderen Datenbanken oder aus anderen Ansichten stammen. Es gibt keine Einschränkungen für die Abfrage über Ansichten und es gibt nur wenige Einschränkungen für die Datenänderung über diese Ansichten.

Ansicht ist die SQL-Anweisung der in der Datenbank gespeicherten Abfrage. Dies hat hauptsächlich zwei Gründe: SicherheitAus Gründen kann die Ansicht einige Daten verbergen, z. B.: Sozial In der Tabelle „Security Fund“ können Sie mit der Ansicht nur den Namen und die Adresse anzeigen, ohne die Sozialversicherungsnummer und die Gehaltsnummer anzuzeigen. Ein weiterer Grund besteht darin, dass dadurch komplexe Abfragen einfacher zu verstehen und zu verwenden sind.

-- Ansicht erstellen

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement
– Der Ansichtsname muss eindeutig sein und darf nicht denselben Namen wie die Tabelle haben.
– Die Ansicht kann die von der Select-Anweisung abgefragten Spaltennamen verwenden, oder Sie können die entsprechenden Spaltennamen selbst angeben.
– Sie können den von der Ansicht ausgeführten Algorithmus angeben, der durch ALGORITHMUS angegeben wird.
– Wenn „column_list“ vorhanden ist, muss die Anzahl gleich der Anzahl der von der SELECT-Anweisung abgerufenen Spalten sein

-- Struktur anzeigen

SHOW CREATE VIEW view_name

-- Ansicht löschen

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

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

-- Ändern Sie die Ansichtsstruktur

- Ändern Sie die Ansicht im Allgemeinen nicht, da dies nicht der Fall ist Alle Aktualisierungsansichten werden Tabellen zugeordnet.
ALTER VIEW view_name [(column_list)] AS select_statement

-- Ansichtsfunktion

1. Geschäftslogik vereinfachen
2. Für Kunden Blenden Sie die tatsächliche Tabellenstruktur am Ende aus

--Ansichtsalgorithmus (ALGORITHMUS)

MERGE Merge
Abfrage zusammenführen Die Anweisung der Ansicht muss vor der Ausführung mit der externen Abfrage zusammengeführt werden!
TEMPTABLE Temporäre Tabelle
Nachdem die Ansicht ausgeführt wurde, wird eine temporäre Tabelle erstellt und anschließend die äußere Abfrage ausgeführt!
UNDEFINED Undefiniert (Standard) bedeutet, dass MySQL den entsprechenden Algorithmus selbstständig auswählt.

/* Transaktion (transAktion) */ ----------------- - -

Eine Transaktion bezieht sich auf eine logische Reihe von Operationen. Jede Einheit, aus der diese Reihe von Operationen besteht, wird entweder erfolgreich sein oder fehlschlagen.
– Unterstützt den kollektiven Erfolg oder den kollektiven Widerruf von Continuous SQL.
– Transaktion ist eine Funktion der Datenbank im Daten-Selbststudium.
– Sie müssen die InnoDB- oder BDB-Speicher-Engine verwenden, um die automatische Übermittlungsfunktion zu unterstützen.
– InnoDB wird als transaktionssichere Engine bezeichnet.

--Transaktionseröffnung
START TRANSACTION; oder BEGIN;
Nach dem Öffnen der Transaktion werden alle ausgeführten SQL-Anweisungen als SQL-Anweisungen innerhalb der aktuellen Transaktion erkannt.
--Transaktionsübermittlung
COMMIT;
--Transaktions-Rollback
ROLLBACK;
Wenn bei einigen Vorgängen ein Problem auftritt, wird es zugeordnet, bevor die Transaktion gestartet wird.

-- Merkmale von Transaktionen
1. Atomizität
Eine Transaktion ist eine unteilbare Arbeitseinheit. Entweder finden alle Vorgänge in der Transaktion statt.
2. Konsistenz
Die Integrität der Daten vor und nach der Transaktion muss konsistent sein.
– Externe Daten sind zu Beginn und am Ende der Transaktion konsistent
– Vorgänge sind während der gesamten Transaktion kontinuierlich
3. Isolation (Isolation)
Wenn mehrere Benutzer gleichzeitig auf die Datenbank zugreifen, führt ein Benutzer Transaktionen durch können nicht durch Transaktionen anderer Benutzer beeinträchtigt werden und Daten zwischen mehreren gleichzeitigen Transaktionen müssen voneinander isoliert werden.
4. Haltbarkeit
Sobald eine Transaktion festgeschrieben wurde, sind ihre Änderungen an den Daten in der Datenbank dauerhaft.

--Transaktionsimplementierung
1. Die Anforderung ist der von der Transaktion unterstützte Tabellentyp
2. Starten Sie die Transaktion, bevor Sie eine Reihe verwandter Vorgänge ausführen
3. Nach dem gesamten Satz von Wenn der Vorgang abgeschlossen ist, sind alle erfolgreich. Wenn ein Fehler auftritt, wählen Sie ein Rollback aus, und Sie kehren zum Sicherungspunkt zurück, an dem die Transaktion gestartet wurde.

--Das Prinzip der Transaktion
Dies wird durch die Verwendung der Autocommit-Funktion von InnoDB vervollständigt.
Nachdem normales MySQL die Anweisung ausgeführt hat, kann der aktuelle Datenübermittlungsvorgang für andere Clients sichtbar sein.
Die Transaktion deaktiviert vorübergehend den „Auto-Commit“-Mechanismus und erfordert ein Commit, um den Vorgang für persistente Daten zu übermitteln.

-- Hinweis
1. Anweisungen in der Datendefinitionssprache (DDL) können nicht zurückgesetzt werden, z. B. Anweisungen zum Erstellen oder Abbrechen einer Datenbank und zum Erstellen, Abbrechen oder Ändern von Tabellen oder Speicheranweisung des Unterprogramms.
2. Transaktionen können nicht verschachtelt werden

--Speicherpunkt
SAVEPOINT-Speicherpunktname – Legen Sie einen Transaktionsspeicherpunkt fest
ROLLBACK TO SAVEPOINT-Speicherpunktname – Zurück zum Speicherpunkt
RELEASE SAVEPOINT Speicherpunktname – Speicherpunkt löschen

– InnoDB-Auto-Commit-Funktionseinstellung
SET autocommit = 0|1; 0 bedeutet, das automatische Commit zu deaktivieren, 1 bedeutet, einzuschalten automatisches Commit.
– Wenn es deaktiviert ist, sind die Ergebnisse normaler Vorgänge für andere Clients nicht sichtbar und es ist ein Commit erforderlich, bevor der Datenvorgang beibehalten werden kann.
– Sie können die automatische Übermittlung auch deaktivieren, um Transaktionen zu ermöglichen. Aber im Gegensatz zu START TRANSACTION ändert
SET autocommit dauerhaft die Servereinstellungen, bis die Einstellungen das nächste Mal geändert werden. (Für die aktuelle Verbindung)
Und START TRANSACTION zeichnet den Status vor dem Öffnen auf, und sobald die Transaktion festgeschrieben oder zurückgesetzt wurde, muss die Transaktion erneut geöffnet werden. (Für die aktuelle Transaktion)


/* Tabelle sperren*/
Tabellensperre wird nur verwendet, um zu verhindern, dass andere Clients unsachgemäß lesen und schreiben
MyISAM unterstützt Tabellensperre und InnoDB unterstützt sie Zeilensperre
--Lock
LOCK TABLES tbl_name [AS alias]
--Unlock
UNLOCK TABLES


/* Trigger*/ ------ - -----------
Der Auslöser ist ein benanntes Datenbankobjekt, das sich auf die Tabelle bezieht. Wenn ein bestimmtes Ereignis in der Tabelle auftritt, wird das Objekt aktiviert
Überwachung: Hinzufügen, Ändern, Löschen von Aufzeichnungen.

--Trigger erstellen
TRIGGER TRIGGER Triggername Triggerzeit Triggerereignis ON Tabellenname FÜR JEDE Zeile Triggerstmt erstellen
Parameter:
Triggerzeit ist die Aktionszeit des Triggerprogramms. Es kann davor oder danach stehen, um anzugeben, ob der Trigger vor oder nach der Anweisung ausgelöst wird, die ihn aktiviert.
trigger_event gibt den Anweisungstyp an, der den Trigger aktiviert
INSERT: aktiviert den Trigger, wenn eine neue Zeile in die Tabelle eingefügt wird
UPDATE: aktiviert den Trigger, wenn eine Zeile geändert wird
DELETE: löscht a Zeile aus der Tabelle Das Triggerprogramm wird aktiviert, wenn
tbl_name: Die überwachte Tabelle muss eine permanente Tabelle sein. Das Triggerprogramm kann nicht mit der TEMPORARY-Tabelle oder -Ansicht verknüpft werden.
trigger_stmt: Anweisung, die ausgeführt wird, wenn das Triggerprogramm aktiviert wird. Um mehrere Anweisungen auszuführen, können Sie die zusammengesetzte Anweisungsstruktur BEGIN...END

-- Löschen
DROP TRIGGER [schema_name.]trigger_name

Sie können stattdessen alt und neu verwenden alt und neu Die Daten des
Aktualisierungsvorgangs, sie sind vor dem Update alt und sie sind neu.
Nach dem Aktualisierungsvorgang sind sie nur alt.
Vorgang hinzufügen, nur neu.

-- Hinweis
1. Es kann nicht zwei Trigger für eine bestimmte Tabelle mit derselben Trigger-Aktionszeit und demselben Ereignis geben.


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

-- Verzweigungsanweisung
if Bedingung dann
Ausführungsanweisung
elseif-Bedingung then
Ausführungsanweisung
else
Ausführungsanweisung
end if;

-- Ändere das äußerste Anweisungsendzeichen
Trennzeichen Benutzerdefiniertes Endsymbol
SQL-Anweisung
Benutzerdefiniertes Endsymbol

Trennzeichen; – Zurück zum ursprünglichen Semikolon ändern

-- Anweisungsblock-Wrapper
begin
Anweisungsblock
end

-- Sonderausführung
1. Solange ein Datensatz hinzugefügt wird, wird das Programm ausgelöst.
2. Die Syntax zum Einfügen eines doppelten Schlüssels wird ausgelöst:
Wenn kein doppelter Datensatz vorhanden ist, wird er vor dem Einfügen ausgelöst.
Wenn ein doppelter Datensatz vorhanden ist und dieser aktualisiert wird Trigger vor dem Einfügen, vor dem Update, nach dem Update;
Wenn ein doppelter Datensatz vorhanden ist, aber keine Aktualisierung erfolgt, Trigger vor dem Einfügen, vor dem Update
3 Ersetzungssyntax: Wenn ein Datensatz vorhanden ist, vor dem Einfügen und vor dem Löschen ausführen , nach dem Löschen, nach dem Einfügen


/* SQLProgrammierung */ ------------------

--// Lokale Variablen---- ------
-- Variablendeklaration
declare var_name[,...] type [Standardwert]
Dies Die Anweisung wird zum Deklarieren lokaler Variablen verwendet. Um einen Standardwert für eine Variable bereitzustellen, fügen Sie eine Standardklausel ein. Der Wert kann als Ausdruck angegeben werden und muss keine Konstante sein. Wenn keine Standardklausel vorhanden ist, ist der Anfangswert null.

--Assignment
Verwenden Sie set und select into-Anweisungen, um Variablen Werte zuzuweisen.

- Hinweis: Globale Variablen (benutzerdefinierte Variablen) können innerhalb von Funktionen verwendet werden


--// Globale Variablen----------
--Definition und Zuweisung
Die Set-Anweisung kann Variablen definieren und Werte zuweisen.
set @var = value;
Sie können auch die select into-Anweisung verwenden, um eine Variable zu initialisieren und ihr einen Wert zuzuweisen. Dies erfordert, dass die SELECT-Anweisung nur eine Zeile, aber mehrere Felder zurückgeben kann, was bedeutet, dass mehreren Variablen gleichzeitig Werte zugewiesen werden. Die Anzahl der Variablen muss mit der Anzahl der Spalten in der Abfrage übereinstimmen .
Sie können die Zuweisungsanweisung auch als Ausdruck betrachten und über select ausführen. Um zu vermeiden, dass = als relationaler Operator behandelt wird, verwenden Sie zu diesem Zeitpunkt stattdessen :=. (Die set-Anweisung kann = und := verwenden).
select @var:=20;
select @v1:=id, @v2=name from t1 limit 1;
select * from tbl_name where @var:=30;

select into kann die aus der Abfrage in der Tabelle erhaltenen Daten einer Variablen zuweisen.
-|. Wählen Sie max(height) in @max_height aus tb;

-- Benutzerdefinierter Variablenname
Um benutzerdefinierte Variablen und Systembezeichner (normalerweise Felder) im Namen der Select-Anweisung zu vermeiden )-Konflikt verwenden benutzerdefinierte Variablen @ als Startsymbol vor dem Variablennamen.
@var=10;

– Nachdem die Variable definiert wurde, ist sie während der gesamten Sitzung gültig (Anmeldung bis Abmeldung)


--// Kontrollstruktur--- - ------
-- if Anweisung
if Suchbedingung dann
Anweisungsliste
[elseif Suchbedingung dann
Anweisungsliste]
...
[else
Statement_list ]
end if;

-- case-Anweisung
CASE-Wert WHEN [compare-value] THEN result
[WHEN [compare-value] THEN result ...]
[ ELSE result]
END


-- while-Schleife
[begin_label:] while search_condition do
Statement_list
end while [end_label];

- Wenn Sie die while-Schleife zu Beginn der Schleife beenden müssen, müssen Sie Labels verwenden, die paarweise erscheinen müssen.

- Schleife verlassen
Gesamte Schleife verlassen verlassen
Aktuelle Schleife iterieren verlassen
Bestimmen Sie anhand der Ausgangsbezeichnung, welche Schleife verlassen werden soll


--/ / Eingebaute Funktion ----------
-- Numerische Funktion
abs(x)      — Absolutwert abs(-10,9) = 10
format( x, d) – Formatieren Sie den Tausendstelwert format(1234567,456, 2) = 1.234.567,46
ceil(x) – Aufrunden ceil(10.1) = 11
floor(x) – Abrunden von floor (10.1) = 10
round(x) – Runden Sie auf die nächste ganze Zahl
mod(m, n) – m%n m mod n Finden Sie den Rest 10%3=1
pi() – Erhalten Sie pi
pow(m, n) -- m^n
sqrt(x) -- Arithmetische Quadratwurzel
rand() -- Zufallszahl
truncate(x, d) -- Auf d Dezimalzahl kürzen Orte

-- Zeit- und Datumsfunktionen
now(), current_timestamp(); -- Aktuelles Datum und Uhrzeit
current_date( -- Aktuelles Datum
current_time(); Aktuelle Zeit
date('yyyy-mm-dd hh:ii:ss'); -- Holen Sie sich den Datumsteil
time('yyyy-mm-dd hh:ii:ss'); Zeitteil
date_format('yyyy-mm-dd hh:ii:ss', '%d %y %a %d %m %b %j'); >unix_timestamp(); -- Unix-Zeitstempel abrufen
from_unixtime(); -- Zeit vom Zeitstempel abrufen

-- String-Funktion

length(string) -- String-Länge, Bytes
char_length(string ) – Die Anzahl der Zeichen der Zeichenfolge
Substring (STR, Position [, Länge]) – Nehmen Sie aus der Position von STR das Längenzeichen
Ersetzen (STR, Search_Str, Remove_Str) – replace_str ersetzt search_str
instr(string,substring) – Gibt die Position zurück, an der der Teilstring zum ersten Mal im String erscheint.
concat(string [,...]) – Verkettet den String.
charset(str) – Gibt den String zurück Zeichensatz
lcase(string) – In Kleinbuchstaben umwandeln
left(string, length) – Längenzeichen von links in string2 übernehmen
load_file(file_name) – Aus der Datei lesen Inhalt abrufen
locate (substring, string [,start_position]) – Wie instr, aber Sie können die Startposition angeben
lpad(string, length, pad) – Wiederholen Sie das Hinzufügen von pad am Anfang der Zeichenfolge, bis die Länge der Zeichenfolge erreicht ist
ltrim(string)  – führende Leerzeichen entfernen
repeat(string, count)    – Anzahl mehrmals wiederholen
rpad(string, length, pad)        – Pad nach str verwenden, bis die Länge length ist
rtrim( string)  –  Entfernen Sie Back-End-Leerzeichen
strcmp(string1,string2)   – Vergleichen Sie die Größe zweier Zeichenfolgen Zeichen für Zeichen

-- Prozessfunktion

case when [condition ] then result [when [when [ Bedingung] dann Ergebnis ...] [else Ergebnis] Ende Mehrfachzweig
if(expr1,expr2,expr3) Doppelzweig.

-- Aggregationsfunktion

count()
sum();
max();
min();
avg();
group_concat()

--Andere häufig verwendete Funktionen

md5();
default();

--// Speicherfunktion,
Benutzerdefinierte Funktion ------------ Neu
CREATE FUNCTION Funktionsname (Parameterliste)
RETURNS Rückgabewerttyp Funktionskörper

– Der Funktionsname sollte eine gültige Kennung sein und nicht mit vorhandenen Schlüsselwörtern in Konflikt stehen.
– Eine Funktion sollte zu einer bestimmten Datenbank gehören. Sie können die Form db_name.funciton_name verwenden, um die Datenbank auszuführen, zu der die aktuelle Funktion gehört, andernfalls ist es die aktuelle Datenbank.
– Der Parameterteil besteht aus „Parametername“ und „Parametertyp“. Mehrere Parameter werden durch Kommas getrennt.
– Der Funktionskörper besteht aus mehreren verfügbaren MySQL-Anweisungen, Prozesssteuerung, Variablendeklaration und anderen Anweisungen.
– Mehrere Anweisungen sollten mithilfe von begin...end-Anweisungsblöcken eingebunden werden.
– Es muss eine Rückgabewertanweisung vorhanden sein.

-- Löschen
DROP FUNCTION [IF EXISTS] Funktionsname;

-- Anzeigen
SHOW FUNCTION STATUS LIKE 'partten'
SHOW CREATE FUNCTION function_name;

--Ändern
ALTER FUNCTION Funktionsname Funktionsoption


--// Speicherprozedur, benutzerdefinierte Funktion----------
-- Definition
Gespeicherte gespeicherte Prozedur ist ein Codestück (Prozedur), das aus in der Datenbank gespeichertem SQL besteht.
Eine gespeicherte Prozedur wird normalerweise verwendet, um einen Teil der Geschäftslogik abzuschließen, z. B. Registrierung, Schichtzahlung, Auftragslagerung usw.
Eine Funktion konzentriert sich normalerweise auf eine bestimmte Funktion und wird als Dienst für andere Programme betrachtet. Sie muss die Funktion jedoch in anderen Anweisungen aufrufen. Eine gespeicherte Prozedur kann jedoch nicht von anderen Personen aufgerufen werden und wird von selbst ausgeführt.

--Erstellen Sie
CREATE PROCEDURE sp_name (Parameterliste)
Prozedurkörper

Parameterliste: Anders als die Parameterliste der Funktion , der Parameter Der Typ muss angegeben werden
IN, stellt den Eingabetyp dar
OUT, stellt den Ausgabetyp dar
INOUT, stellt den gemischten Typ dar

Beachten Sie, dass es keinen Rückgabewert gibt.


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

Eine gespeicherte Prozedur ist eine Sammlung ausführbarer Codes. Es bevorzugt Geschäftslogik gegenüber Funktionen.
Aufruf: CALL-Prozedurname
-- Hinweis
- Es gibt keinen Rückgabewert.
- Kann nur einzeln aufgerufen werden und kann nicht mit anderen Anweisungen gemischt werden

-- Parameter
IN|OUT|INOUT Parametername Datentyp
IN Eingabe: Geben Sie während des Aufrufvorgangs die ein Datenparameter im Prozesskörper
OUT Ausgabe: Während des aufrufenden Prozesses wird das Ergebnis des Prozesskörpers an den Client zurückgegeben
INOUT Eingabe und Ausgabe: Es kann eine Eingabe oder Ausgabe sein

-- Syntax
CREATE PROCEDURE Prozessname (Parameterliste)
BEGIN
​​​​Prozesskörper
END


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

Benutzerinformationstabelle: mysql.user
-- Berechtigungen aktualisieren
FLUSH PRIVILEGES
--Benutzer hinzufügen
BENUTZER ERSTELLEN Benutzername IDENTIFIED BY [PASSWORD] Passwort (Zeichenfolge )
– Sie müssen über die globale CREATE USER-Berechtigung der MySQL-Datenbank oder über die INSERT-Berechtigung verfügen.
– Benutzer können nur erstellt, aber keine Berechtigungen erteilt werden.
- Benutzername, achten Sie auf die Anführungszeichen: z. B. 'Benutzername'@'192.168.1.1'
- Das Passwort benötigt ebenfalls Anführungszeichen, und das reine numerische Passwort benötigt ebenfalls Anführungszeichen
- An Geben Sie das Passwort im Klartext an und ignorieren Sie das Schlüsselwort PASSWORD. Um das Passwort als den von der Funktion PASSWORD() zurückgegebenen Hash-Wert anzugeben, schließen Sie das Schlüsselwort PASSWORD ein.
-- Benutzer umbenennen
BENENNEN SIE BENUTZER alten_Benutzer IN neuen_Benutzer um
-- Passwort festlegen
SET PASSWORD = PASSWORD( 'password') -- Legen Sie ein Passwort für den aktuellen Benutzer fest
SET PASSWORD FOR username = PASSWORD('password') -- Legen Sie ein Passwort für den angegebenen Benutzer fest
-- Löschen Sie den Benutzer
DROP USER username
-- Berechtigungen zuweisen/Benutzer hinzufügen
Berechtigungsliste ON Tabellenname TO Benutzername [IDENTIFIED BY [PASSWORD] 'password'] gewähren
– alle Privilegien bedeuten alle Berechtigungen
- *.* stellt alle Tabellen in allen Bibliotheken dar
- Bibliotheksname stellt eine Tabelle unter einer bestimmten Bibliothek dar
-- Berechtigungen anzeigen
GRANTS FÜR Benutzernamen ANZEIGEN
-- Aktuelle Benutzerberechtigungen anzeigen
GRANTS ANZEIGEN; oder GRANTS FÜR CURRENT_USER ANZEIGEN (); Name – Alle Berechtigungen widerrufen
– Berechtigungsstufen
– Um GRANT oder REVOKE zu verwenden, müssen Sie über die Berechtigung GRANT OPTION verfügen und die Berechtigung verwenden, die Sie gewähren oder widerrufen.
Globale Ebene: Globale Berechtigungen gelten für alle Datenbanken in einem bestimmten Server mysql.user
GRANT ALL ON *.* und REVOKE ALL ON *.* gewähren und widerrufen nur globale Berechtigungen.
Datenbankebene: Datenbankberechtigungen gelten für alle Ziele in einer bestimmten Datenbank, mysql.db, mysql.host
GRANT ALL ON db_name.* und REVOKE ALL ON db_name.* gewähren und widerrufen nur Datenbankberechtigungen.
Tabellenebene: Tabellenberechtigungen gelten für alle Spalten in einer bestimmten Tabelle, mysql.talbes_priv
GRANT ALL ON db_name.tbl_name und REVOKE ALL ON db_name.tbl_name gewähren und widerrufen nur Tabellenberechtigungen.
Spaltenebene: Spaltenberechtigungen gelten für eine einzelne Spalte in einer bestimmten Tabelle, mysql.columns_priv
Bei Verwendung von REVOKE müssen Sie dieselbe Spalte als autorisierte Spalte angeben.
--Berechtigungsliste
ALLE [PRIVILEGES]--Legen Sie alle einfachen Berechtigungen außer GRANT OPTION fest
ALTER--Erlauben Sie die Verwendung von ALTER TABLE
ALTER ROUTINE--Ändern oder stornieren Sie die gespeicherte untergeordnete PROZEDUR
ERSTELLEN – ERSTELLEN EINER TABELLE zulassen
ROUTINE ERSTELLEN – Gespeicherte Unterroutinen erstellen
TEMPORÄRE TABELLE ERSTELLEN – TEMPORÄRE TABELLE ERSTELLEN zulassen
BENUTZER ERSTELLEN – BENUTZER ERSTELLEN, BENUTZER ENTFERNEN, BENUTZER UMBENENNEN und ALLE PRIVILEGIEN WIDERRUFEN zulassen.
CREATE VIEW – Erlaube die Verwendung von CREATE VIEW. Erlaube SELECT...INTO OUTFILE und LOAD DATA INFILE.
INDEX – Erlaube CREATE INDEX und DROP INDEX.
INSERT – Erlaube INSERT.
LOCK TABLES – Erlaube Tabellen für für die Sie SELECT-Berechtigungen haben. TABLES SPERREN
PROZESS – Erlauben, VOLLSTÄNDIGE PROZESSLISTE ANZEIGEN
REFERENZEN – Nicht implementiert
RELOAD – Erlauben FLUSH
REPLICATION CLIENT – Ermöglichen, dass der Benutzer nach der Adresse eines Slaves fragt oder Master-Server
REPLICATION SLAVE – Wird für Replikations-Slave-Server verwendet (liest binäre Protokollereignisse vom Master-Server)
SELECT – Darf verwendet werden. SELECT
SHOW DATABASES – Alle Datenbanken anzeigen
SHOW VIEW -- Darf verwendet werden: SHOW CREATE VIEW
SHUTDOWN – Erlaube
, MySQL zu verwenden
Administrator-Shutdown

SUPER
– Erlaube die Verwendung von CHANGE MASTER, KILL, PURGE MASTER LOGS und SET GLOBAL-Anweisungen, mysqladmin-Debug-Befehl ;Ermöglicht das Herstellen einer Verbindung (einmal), auch wenn max_connections erreicht wurde.
UPDATE – Verwendung zulassen UPDATE
USAGE – Synonyme für „keine Berechtigungen“
GRANT OPTION – Erteilung der Berechtigung zulassen


/* Tabellenpflege*/
- - Analyse und Schlüsselwortverteilung der Speichertabelle
ANALYSE [LOCAL |. NO_WRITE_TO_BINLOG] TABLE Tabellenname...
--Überprüfen Sie eine oder mehrere Tabellen auf Fehler
CHECK TABLE tbl_name [, tbl_name] ... [Option ] ...
option = {QUICK |. EXTENDED |. EXTENDED-- Defragmentieren Sie die Datendateien
NO_WRITE_TO_BINLOG] TABLE tbl_name] ...

/* Verschiedenes*/ ----

1. Backticks (`) können als Bezeichner (Bibliotheksnamen, Tabellennamen, Feldname, Index, Alias), um doppelte Namen mit Schlüsselwörtern zu vermeiden! Als Identifikator kann auch Chinesisch verwendet werden!

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

3. Kommentare:

Einzeiliger Kommentar# Kommentarinhalt

Mehrzeiliger Kommentar/* Kommentarinhalt*/
Einzeiliger Kommentar – Kommentarinhalt (Standard-SQL-Kommentarstil). , erfordert doppeltes Einfügen eines Leerzeichens nach dem Bindestrich (Leerzeichen, TAB, Zeilenumbruch usw.))

4. Muster

Platzhalter :

_ Jedes einzelne Zeichen

% Alle mehreren Zeichen, auch das Nullzeichen
Einfache Anführungszeichen müssen maskiert werden '

5 Das Anweisungsabschlusszeichen in der CMD-Befehlszeile kann „;“, „G“, „g“ sein. was sich nur auf die Anzeigeergebnisse auswirkt. An anderer Stelle schließen Sie mit einem Semikolon ab. Trennzeichen kann das Anweisungsabschlusszeichen der aktuellen Konversation ändern.

6. SQL unterscheidet nicht zwischen Groß- und Kleinschreibung

7. Löschen Sie vorhandene Anweisungen: c

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in eine umfassende Zusammenfassung häufig verwendeter Anweisungen in MySql. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn