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
|