Es liegt ein Problem mit dem Dokumentformat vor. Sie können das PDF herunterladen:
Link: https://pan.baidu.com/s/1R8qSPt2cMnzJqjCmox9h0A?pwd=WHY6
Extraktionscode: WHY6Oder springen Sie zum folgenden Link: Zusammenfassung der MySQL-Operationsanweisung – Nuggets
Inhaltsverzeichnis
DDL (Data Definition Language) Grundoperationen
DML (Data Manipulation Language) Grundoperationen
Grundlegende DQL-Operationen (Data Query Language).
2. Allgemeine Spaltenwertoperationen
DDL (Data Definition Language) Grundoperationen
Datenbankbetrieb
- Stellen Sie eine Verbindung zur Datenbank her:
mysql -uroot -p;
Geben Sie dann das Passwort ein - Sehen Sie sich die Liste der Datenbanken an:
show databases;
- Erstellen Sie eine Datenbank:
create databases 数据库名称;
- Löschen Sie die Datenbank:
drop database 数据库名称;
- Ändern Sie die Datenbank:
alter database 数据库名称 charset=编码格式;
- Sehen Sie sich die Tabellen in der Datenbank an:
show tables;
Tischbetrieb
- TABELLE ERSTELLEN::
create table if not exists 表名(列名,列类型,[约束])
Tabelle erstellen, wenn sie nicht existiert
-
- Allgemeine Einschränkungen:
-
-
- Nicht leere Einschränkung: NICHT NULL, der Inhalt einer Spalte darf nicht leer sein;
- Legen Sie den Standardwert der Spalte fest: DEFAULT;
- Eindeutige Einschränkung: UNIQUE. In dieser Tabelle muss der Inhalt dieser Spalte eindeutig sein.
- Primärschlüsseleinschränkung: PRIMARY KEY, nicht leer und eindeutig;
- Selbstwachstum des Primärschlüssels: AUTO_INCREMENT, beginnend bei 1, die Schrittgröße beträgt 1;,
- Fremdschlüsseleinschränkung: FOREIGN KEY, die Fremdschlüsselspalte in Tabelle A. Der Wert der Fremdschlüsselspalte in Tabelle A muss sich auf eine Spalte in Tabelle B (Primärschlüssel von Tabelle B) beziehen.
-
- Drop-Tabelle:
drop table 表名;
- Beschreiben Sie die Tabellenstruktur:
desc table 表名;
- Ändern Sie die Tabellenstruktur:
alter table <表名> add|drop <列名><列类型>
DML (Data Manipulation Language) Grundoperationen
- Überarbeiten:
update 表名 set col1=value1,col2=value2...... where[条件]
-
- Einschränkungen der Entitätsintegrität: Beim Ändern des Primärschlüsselwerts, bei der kaskadierenden Aktualisierung des Fremdschlüsselwerts oder beim Ablehnen des Vorgangs zum Ändern des Primärschlüsselwerts
- Einschränkungen der referenziellen Integrität: Die Fremdschlüsselinformationen in der Fremdschlüsseltabelle dürfen nicht geändert werden:
- einfügen:
insert into 表名 (col1,col2,......) value (value11,value12,......),(value21,value22,......);
-
- Fügen Sie nach der Abfrage aus einer anderen Tabelle Folgendes in diese Tabelle ein:
insert into 表1(col1,col2,......) select col1,col2,...... from 表2 where[条件];
- Integritätsbeschränkungen beim Einfügen:
- Fügen Sie nach der Abfrage aus einer anderen Tabelle Folgendes in diese Tabelle ein:
-
-
- Entitätsintegrität: Es werden Tupel mit demselben Primärschlüssel eingefügt
- Referenzielle Integrität: Wenn ein neues Tupel in die Fremdschlüsseltabelle eingefügt wird, ist der Fremdschlüsselwert des neuen Tupels in der Primärschlüsseltabelle vorhanden?
- Benutzerdefinierte Integrität, z. B.
not null
Einschränkungen von ;unique
Einschränkungen von usw.;
-
- löschen:
delete from 表名 where [条件];
Grundlegende DQL-Operationen (Data Query Language).
1. Deutliche Deduplizierung
Funktion: Spaltenwerte deduplizieren
SQL-Beispiel:select distinct col1,col2 from 表名;
- Der Geltungsbereich von „distinct“ umfasst alle Zielspalten, wie oben. Nur wenn die Kombination von col1 und col2 wiederholt wird, wird sie dedupliziert
- „distinct“ kann nicht nach der ersten Spalte platziert werden
2. Allgemeine Spaltenwertoperationen
- Arithmetische Operationen - (+,-,*,/):
select col1 operator col2 from 表名;
-
- Gleiche Priorität wie bei mathematischen Operationen
- Legen Sie einen Alias -as für einen Spaltenausdruck fest:
select col1 as 别名 from 表名;
-
- wie lässt sich auch nicht schreiben:
select col1 别名 from 表名;
- wie lässt sich auch nicht schreiben:
- unten/oben/Trim:
select lower(col1) as 别名 from 表名;
-
- niedriger: Wandeln Sie den Spaltenwert in Kleinbuchstaben um
- Upper: Konvertieren Sie den Spaltenwert in Großbuchstaben
- trimmen: Filtern Sie die angegebene Zeichenfolge:
-
-
- trim: Entfernen Sie die Anfangs- und Endzeichenfolgen:
select trim(col1) from 表名;
- ltrim: Entfernen Sie die Zeichenfolge links
- rtrim: Entfernen Sie die Zeichenfolge rechts
- trim: Entfernen Sie die Anfangs- und Endzeichenfolgen:
-
3. Gemeinsame Operatoren
- Vergleichsoperatoren:
=, >, >=, <, <=, !=,<>
-
- was
<>
gleichbedeutend mit ist!=
- was
- Logische Operatoren:
and,or,not
4. Wo bedingte Abfrage
between...and...
:Zwischenlike
: Zeichenübereinstimmung; Platzhalter%
ersetzt 0 oder mehr Zeichen und Platzhalter_
ersetzt nur ein Zeichenescape
: Wird zum Escapen verwendet. Wenn die vom Benutzer abzufragende Zeichenfolge sich selbst enthält%或者_
, mussescape '<换码字符>'
eine Phrase verwendet werden, um den Platzhalter zu maskieren.
-
- Beispiel: Die Bedeutung besteht darin , alle Zeilen
select * from 表名 where col1 like 'AB_%C_' escape ''
in der Tabelle abzufragen, die den Wert von col1 erfüllen, beginnend mitAB_
und das vorletzte Zeichen ist ;C
- Beispiel: Die Bedeutung besteht darin , alle Zeilen
in (not in)
: Wird verwendet, um Tupel zu finden, deren Attributwerte zur angegebenen Sammlung gehören (nicht dazu gehören).
-
- Beispiel:
select * from 表名 where col1 in (value1,value2);
- Das entspricht:
select * from 表名 where col1 = value1 or col1 = value2;
- Beispiel:
is null(is not null)
: Bestimmen Sie, ob der Wert der Spalte ein Nullwert ist
-
- Beispiel:
select * from 表名 where col1 is null;
Fragen Sie die Informationen aller Zeilen ab, deren Spaltenwert von col1 null ist. - Verwenden Sie diese Option, um
is null
zu beurteilen, ob der Spaltenwert ein Nullwert ist, und nicht, um zu beurteilen, ob es sich um eine leere Zeichenfolge handelt. Wenn Sie beurteilen möchten, ob es sich um eine leere Zeichenfolge handelt, verwenden Sie== ""
;
- Beispiel:
5. Ordnen Sie durch Sortieren
- aufsteigende Reihenfolge:
order by col1 asc;
- absteigende Reihenfolge:
order by col1 desc;
order by
Es erscheint normalerweise am select
Ende der Anweisung. Wenn keine Sortierung angegeben ist, ist die Standardeinstellung aufsteigend;
6. Aggregatfunktionen
count
:zählen
-
count(*)
: Zählt die Anzahl der Tupel in der Beziehung, die durch die Abfrageaggregat-From-Klausel und die Where-Klausel erstellt wurdecount([distinct|all] col1)
: Zählen Sie die Anzahl der Werte in einer Spalte (Nullwerte werden nicht gezählt)
sum([distinct|all] col1)
: Berechnet die Summe einer Wertespalteavg([distinct|all] col1)
: Berechnet den Durchschnitt einer Wertespaltemax([distinct|all] col1)
: Berechnen Sie den Maximalwert einer Wertelistemin([distinct|all] col1)
: Berechnen Sie den Mindestwert einer Werteliste
7.Gruppenweiser Betrieb
Rolle: Verfeinern Sie das Aktionsobjekt der Aggregatfunktion
Wenn das Abfrageergebnis nicht gruppiert ist, wirkt die Aggregatfunktion auf das gesamte Abfrageergebnis; nach der Gruppierung wirkt die Aggregatfunktion auf jede Gruppe separat
SQL-Beispiel:select count(*),col1 from 表名 group by col1;
- Gruppieren Sie nach den Spaltenwerten der Spalte col1, und die Werte entsprechen einer Gruppe
- Nachdem die Klausel verwendet wurde
group by
,select
können nur noch Gruppierungsattribute und Aggregatfunktionen in der Spaltennamenliste der Klausel angezeigt werden group by
Das Objekt der Klausel ist die Zwischenergebnistabelle der Abfrage
mit Bedingungsfilter
Funktion: Filtern Sie die Endergebnisse heraus, die die Bedingungen nach der Gruppierung erfüllen
SQL-Beispiel:select max(col1),col1 from 表名 group by col1 having max(col1) > 1000;
Nach der Gruppierung werden nur die Spalten herausgefiltert, deren Maximalwert größer als 1000 ist;
Der Unterschied zwischen Haben und Wo: verschiedene Objekte
- Die where-Klausel wirkt auf die Basistabelle oder -ansicht, um Tupel auszuwählen, die die Bedingung erfüllen
- Die have-Phrase wirkt auf die Gruppe und wählt die Gruppe aus, die die Bedingung erfüllt
Komplexere Abfragevorgänge
1. Verbindungsabfrage
join on
: Operation beitreten,R join S on <连接条件>
-
- Beispiel:
select col1 from table1 join table2 on table1.col1 = table2.col1;
- Beispiel:
natural join
: natürliche Verbindung
-
- Beispiel:
select col1 from table1 natural join table2 ;
- Funktion: Doppelte Spaltenattribute durch natürliche Verknüpfungen entfernen. Wie im obigen Beispiel
col1
ist dieses Attribut sowohl in Tabelle 1 als auch in Tabelle 2 vorhanden, und nur eincol1
Attribut bleibt in der neuen Tabelle erhalten, die durch natürliche Verknüpfungen erhalten wird.
- Beispiel:
outer join
: Äußerer Join, behält die Tupel in der angegebenen Beziehung bei, die nicht mit dem Join übereinstimmen;
-
- Beispiel:
select * from table1 outer join table2 on table1.col1 = table2.col
- Linker äußerer Join:
left outer join
Behält die Datensätze in der linken Tabelle, der Standardwert wird mit Null gefüllt - Rechter äußerer Join:
right outer join
Behält die Datensätze in der rechten Tabelle, der Standardwert wird mit Null gefüllt
- Beispiel:
inner join
: Innere Verbindung, innere kann weggelassen werden;
Erklärung des Unterschieds zwischen Outer-Join und Inner-Join:
Formular für Studenteninformationen:
Ausweis | Name |
---|---|
001 | Zhang San |
002 | Li Si |
003 | Wang Wu |
004 | Zhao Liu |
Stundenplan für Studenten
Ausweis | Kurs |
---|---|
001 | Mathematik |
002 | Sprache |
003 | Englisch |
005 | Physik |
Führen Sie einen Inner Join durch:
Ausweis | Name | Kurs |
---|---|---|
001 | Zhang San | Mathematik |
002 | Li Si | Sprache |
003 | Wang Wu | Englisch |
Führen Sie einen äußeren Join durch
Ausweis | Name | Kurs |
---|---|---|
001 | Zhang San | Mathematik |
002 | Li Si | Sprache |
003 | Wang Wu | Englisch |
004 | Zhao Liu | |
005 | Physik |
Führen Sie einen Left Outer Join durch:
Ausweis | Name | Kurs |
---|---|---|
001 | Zhang San | Mathematik |
002 | Li Si | Sprache |
003 | Wang Wu | Englisch |
004 | Zhao Liu |
Führen Sie einen Right Outer Join durch:
Ausweis | Name | Kurs |
---|---|---|
001 | Zhang San | Mathematik |
002 | Li Si | Sprache |
003 | Wang Wu | Englisch |
005 | Physik |
2. Verschachtelte Abfrage
Abfrageblock: Eine SELECT-FROM-WHERE
Anweisung wird als Abfrageblock bezeichnet
Verschachtelte Abfrage: Eine Abfrage, die einen Abfrageblock in der WHERE-Klausel oder HAVING-Phrase eines anderen Abfrageblocks verschachtelt, wird als verschachtelte Abfrage bezeichnet
SQL-Beispiel:select col1 from table1 where col2 in (select col2 from table2 where col3=value);
In verschachtelten Abfragen gibt es einige häufig verwendete Unterabfragen:
in
Unterabfragen mit Prädikaten (im Beispiel bereits vorhanden)- Unterabfragen mit Vergleichsoperatoren:
<,>,=,......
-
- Beispiel:
select col1 from table1 where col2 = (select col2 from table2 where col3=value);
- Beachten Sie, dass die Unterabfrage dem Vergleichsoperator folgen muss
- Beispiel:
- Unterabfrage mit
any
OR-all
Prädikat:
-
- Beispiel:
select col1 from table1 where col2 > any (select col2 from table2 where col3=value);
- Bedeutung:
- Beispiel:
- Unterabfragen mit
exists
Prädikaten: Existenzquantoren;
-
- Beispiel:
select col1 from table1 where exists (select * from table2 where col2=value);
- Wenn nach Verwendung des Existenzquantifizierers das innere Abfrageergebnis nicht leer ist, gibt die äußere where-Klausel einen wahren Wert zurück, andernfalls gibt sie einen falschen Wert zurück.
- Beispiel:
from
Unterabfragen in Klauseln:
-
- Beispiel:
select col1,avg_col2 from (select col1,avg(col3) as avg_col2) as temp_table;
- Hinweis: Jede abgeleitete Tabelle muss über einen eigenen Alias verfügen. Daher muss für das Ergebnis der Unterabfrage ein
as
Alias festgelegt sein, bevor es in der übergeordneten Abfrage verwendet werden kann. Andernfalls wird ein Fehler gemeldet: Fehlercode: 1248. Jede abgeleitete Tabelle muss über einen eigenen Alias verfügen eigener Alias
- Beispiel:
- Unterabfragen mit
with
Klauseln: Definieren Sie temporäre Beziehungen zur Verwendung in verschachtelten Abfragen
-
- Beispiel:
with temp_table as (select col1,avg(col2)_as avg_col2) select col1,avg_col2 from table1,temp_table;
- Beispiel:
3. Abfrage festlegen
- und UNION:
select * from table1 where col1=value1 union select * from table1 where col2=value2;
-
- Entspricht Operationen
where
in der Klauselor
- Entspricht Operationen
- Zahlen Sie INTERSECT:
select * from table1 where col1=value1 intersect select * from table1 where col2=value2;
-
- Entspricht Operationen
where
in der Klauseland
- Entspricht Operationen
- Unterschied AUSSER:
select * from table1 where col1=value1 except select * from table1 where col2=value2;
-
- Bedingung 1 ist erfüllt und Bedingung 2 ist nicht erfüllt
Hinweis: Die Anzahl der Spalten jeder Ergebnistabelle, die an der Set-Operation beteiligt ist, muss gleich sein, und die entsprechenden Datentypen müssen ebenfalls gleich sein. Das System entfernt automatisch die doppelten Eingabezeilen vor den Zusammenführungs-, Schnitt- und Differenzoperationen. Da der Deduplizierungsvorgang sehr zeitaufwändig ist, übersteigt die Deduplizierungszeit häufig die Abfragezeit