- MySQL Document-Dark Horse-Programmierer (Tencent Weiyun): https://share.weiyun.com/RaCdIwas
- 1-MySQL Foundation.pdf, 2-MySQL-Einschränkungen und Design.pdf, 3-MySQL-Abfrage mit mehreren Tabellen und Transaktionsoperation.pdf
- MySQL- Studiennotizen 01 [Datenbankkonzept, Installation und Verwendung von MySQL] [Tag01]
- MySQL- Studiennotizen 02 [SQL-Grundkonzepte und allgemeine Grammatik, Datenbank-CRUD-Operationen] [Tag01]
MySQL- Studiennotizen 04 [Datenbankabfrageoperationen, Tabelleneinschränkungen] [Tag01, Tag02]
MySQL- Studiennotizen 05 [Multi-Table-Operation, drei Paradigmen, Datenbanksicherung und -wiederherstellung] [Tag02]
MySQL- Studiennotizen 06 [Übungen für Abfragen mit mehreren Tabellen, Unterabfragen und Abfragen mit mehreren Tabellen] [Tag03]
Anmerkungen zur MySQL-Studie 07 [Transaktions-, Benutzer- und Berechtigungsverwaltung] [Tag 03]
Inhaltsverzeichnis
Fehler beim Betrieb des Datenbankterminals
Entfernen Sie doppelte Ergebnismengen
Berechnen Sie die Summe der Punkte
Constraint_non-empty-Einschränkung
Constraint_primary-Schlüsseleinschränkung
Constraint_Primary Key Constraint_Auto Wachstum
Constraints_Foreign Key Constraints
Fremdschlüsseleinschränkungen - Beispiele für Mängel
Konzepte im Zusammenhang mit Fremdschlüsseleinschränkungen
Constraint_Foreign Key Constraint_Cascade Operation
Fehler beim Betrieb des Datenbankterminals
Der Befehl, der den Fehler gemeldet hat: FEHLER 1366 (HY000): Falscher Zeichenfolgenwert: '\ xC3 \ xFB \ xD7 \ xD6' für Spalte'n
Lösung (Link zum Originaltext): https://blog.csdn.net/u013317172/article/details/82778785
Viele Menschen erhalten diesen Fehler, wenn sie nach der Installation der MySQL-Datenbank chinesische Daten in die Tabelle einfügen.
FEHLER 1366 (HY000): Falscher Zeichenfolgenwert: '\ xD5 \ xC5 \ xD0 \ xA1 \ xC3 \ xF7' für Spalte 'NAME' in Zeile 1Lösung:
1. Suchen Sie zuerst den Installationspfad der MySQL-Datenbank, wie unten gezeigt:
2. Suchen Sie die Datei my.ini in diesem Ordner, suchen Sie darin "default-character-set = utf8" und ändern Sie uft8 in gbk.
Melden Sie sich erneut bei der MySQL-Datenbank an, um chinesische Daten hinzuzufügen.
07 Datenbankabfrageoperation
DQL_Basic-Abfrage
1. Abfrage mehrerer Felder
- Wählen Sie Feldname 1, Feldname 2 ... aus Tabellenname;
- Hinweis: Wenn Sie alle Felder abfragen, können Sie die Feldliste mit * ersetzen.
2. Entfernen Sie die Duplizierung:
- deutlich
3. Berechnete Spalte
- Im Allgemeinen können Sie die vier arithmetischen Berechnungen verwenden, um eine Reihe von Werten zu berechnen (normalerweise nur numerische Berechnungen).
- ifnull (Ausdruck1, Ausdruck2): Das Berechnungsergebnis der Nullbeteiligung ist null.
- Ausdruck 1: Welches Feld muss beurteilt werden, ob es null ist
- Wenn das Feld null ist, der Ersatzwert.
4. Erstellen Sie einen Alias:
- as: as kann weggelassen werden.
CREATE TABLE student (
id INT,
-- 编号
NAME VARCHAR (20),
-- 姓名
age INT,
-- 年龄
sex VARCHAR (5),
-- 性别
address VARCHAR (100),
-- 地址
math INT,
-- 数学
english INT-- 英语
) ;
INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);
SELECT * FROM student;
Entfernen Sie doppelte Ergebnismengen
Berechnen Sie die Summe der Punkte
Alias
DQL_condition-Abfrage
1. wo Klausel gefolgt von Bedingungen
2. Betreiber
- > 、 <、 <= 、> = 、 = 、 <>
- ZWISCHEN UND
- IN (Sammlung)
- WIE: Fuzzy-Abfrage
- Platzhalter:
- _: ein beliebiges einzelnes Zeichen
- %: mehrere beliebige Zeichen
- IST NULL
- und 或 &&
- oder 或 ||
- nicht oder!
-- 查询年龄大于20岁
SELECT
*
FROM
student
WHERE age > 20 ;
SELECT * FROM student WHERE age >= 20;
-- 查询年龄等于20岁
SELECT * FROM student WHERE age = 20;
-- 查询年龄不等于20岁
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;
-- 查询年龄大于等于20 小于等于30
SELECT * FROM student WHERE age >= 20 && age <=30;
SELECT * FROM student WHERE age >= 20 AND age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30; -- 闭区间[20, 30]
-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);
-- 查询英语成绩为null
SELECT * FROM student WHERE english = NULL; -- 错误!null值不能使用 = (!=) 判断
SELECT * FROM student WHERE english IS NULL;
-- 查询英语成绩不为null
SELECT * FROM student WHERE english IS NOT NULL;
DQL_Basic query_Fuzzy-Abfrage
WIE: Fuzzy-Abfrage
- Platzhalter:
- _: ein beliebiges einzelnes Zeichen
- %: mehrere beliebige Zeichen
-- 查询姓马的有哪些? like
SELECT
*
FROM
student
WHERE NAME LIKE '马%' ;
-- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE "_化%";
-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';
-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';
Der heutige Inhalt
- DQL: Abfrageanweisung
- Abfrage sortieren
- Aggregatfunktion
- Gruppenabfrage
- Paging-Abfrage
- Zwang
- Beziehung zwischen mehreren Tabellen
- Paradigma
- Datenbanksicherung und -wiederherstellung
DQL_sort-Abfrage
1. Abfrage sortieren
- Syntax: order by-Klausel
- Reihenfolge nach Sortierfeld 1 Sortiermethode 1, Sortierfeld 2 Sortiermethode 2 ...
- Sortieren nach:
- ASC: Aufsteigende Reihenfolge (Standard).
- DESC: absteigende Reihenfolge.
- Hinweis:
- Wenn mehrere Sortierbedingungen vorliegen, wird die zweite Bedingung beurteilt, wenn der Bedingungswert der aktuellen Seite gleich ist.
DQL_aggregate-Funktion
2. Aggregatfunktion: Nehmen Sie eine Datenspalte als Ganzes und führen Sie vertikale Berechnungen durch.
- count: Zähle die Nummer
- Wählen Sie im Allgemeinen nicht leere Spalten aus: Primärschlüssel
- Anzahl(*)
- max: Berechnen Sie den Maximalwert
- min: Berechnen Sie den Mindestwert
- Summe: Berechnen Sie die Summe
- Durchschnitt: Berechnen Sie den Durchschnitt
Hinweis: Bei der Berechnung von Aggregatfunktionen werden Nullwerte ausgeschlossen.
Lösung: 1. Wählen Sie Spalten aus, die für die Berechnung keine nicht leeren Spalten enthalten. 2. IFNULL-Funktion.
DQL_Group-Abfrage
3. Gruppenabfrage:
- Syntax: Gruppe für Gruppe Feld;
- Hinweis:
- Felder, die nach dem Gruppieren abgefragt werden sollen: Gruppieren von Feldern, Aggregatfunktionen
- Der Unterschied zwischen wo und haben?
- Wenn dies vor der Gruppierung definiert ist und die Bedingungen nicht erfüllt sind, wird es nicht an der Gruppierung teilnehmen. Wenn das Ergebnis nach der Gruppierung eingeschränkt ist und nicht zufrieden ist, wird es nicht abgefragt
- Aggregatfunktionen können nicht nach wo verfolgt werden, und Aggregatfunktionen können beurteilt werden.
-- 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;
-- 按照性别分组。分别查询男、女同学的平均分,人数
SELECT sex , AVG(math), COUNT(id) FROM student GROUP BY sex;
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
SELECT sex , AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex , AVG(math), COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;
DQL_Paging-Abfrage
4. Paging-Abfrage
- Syntax: Index beginnend mit limit, Anzahl der Abfragen pro Seite;
- Formel: Startindex = (aktuelle Seitenzahl-1) * Anzahl der auf jeder Seite angezeigten Elemente
- 3 Datensätze pro Seite
- SELECT * FROM student LIMIT 0,3; - Seite 1: Von 0 prüfen, 3 Datensätze prüfen
- SELECT * FROM student LIMIT 3,3; - Seite 2: Von 3 prüfen, 3 Datensätze prüfen
- SELECT * FROM student LIMIT 6,3; - Seite 3:
- Limit ist ein MySQL "Dialekt"
08 Tabelleneinschränkungen
Constraints_Overview
Konzept: Begrenzen Sie die Daten in der Tabelle, um die Richtigkeit, Gültigkeit und Vollständigkeit der Daten sicherzustellen.
Einstufung:
- Primärschlüsseleinschränkung: Primärschlüssel
- Nicht leere Einschränkung: nicht null
- Die einzige Einschränkung: einzigartig
- Fremdschlüsseleinschränkung: Fremdschlüssel
Constraint_non-empty-Einschränkung
Nicht leere Einschränkung: nicht null, der Wert kann nicht null sein
1. Fügen Sie beim Erstellen einer Tabelle die Einschränkung
CREATE TABLE stu hinzu (
ID INT,
NAME VARCHAR (20) NOT NULL - Name ist nicht leer
).
2. Fügen Sie nach dem Erstellen der Tabelle eine nicht leere Einschränkung hinzu: ALTER TABLE stu MODIFY NAME VARCHAR (20) NICHT NULL ;3. Löschen Sie die nicht leere Namensbeschränkung: ALTER TABLE stu MODIFY NAME VARCHAR (20);
Constraint_Unique Constraint
Eindeutige Einschränkung: Eindeutig, der Wert kann nicht wiederholt werden.
1. Fügen Sie beim Erstellen einer Tabelle eine eindeutige Einschränkung hinzu.
CREATE TABLE stu (
ID INT,
Telefonnummer VARCHAR (20) UNIQUE - eine eindeutige Einschränkung wird hinzugefügt
);
* Beachten Sie, dass in MySQL der Wert einer durch eine eindeutige Einschränkung begrenzten Spalte gelten kann mehrere Nullen.2. Löschen Sie die eindeutige Einschränkung: ALTER TABLE stu DROP INDEX phone_number;
3. Fügen Sie nach dem Erstellen der Tabelle eine eindeutige Einschränkung hinzu: ALTER TABLE stu MODIFY phone_number VARCHAR (20) UNIQUE;
Constraint_primary-Schlüsseleinschränkung
Primärschlüsseleinschränkung: Primärschlüssel
1. Hinweis:
1. Bedeutung: nicht leer und eindeutig
2. Eine Tabelle kann nur ein Feld als Primärschlüssel haben.
3. Der Primärschlüssel ist die eindeutige Kennung des Datensatzes in der Tabelle2. Fügen Sie beim Erstellen einer Tabelle eine Primärschlüsseleinschränkung hinzu.
Erstellen Sie eine Tabelle stu (
id int Primärschlüssel, - fügen Sie einen Primärschlüsseleinschränkungsnamen
varchar (20)
) zu id hinzu .3. Löschen Sie den Primärschlüssel
- Fehler Änderungstabelle stu Änderungs-ID int;
ALTER TABLE stu DROP PRIMARY KEY;4.
Fügen Sie nach dem Erstellen der Tabelle den Primärschlüssel hinzu. ALTER TABLE stu MODIFY id INT PRIMARY KEY;
Constraint_Primary Key Constraint_Auto Wachstum
5. Automatisches Wachstum:
1. Konzept: Wenn eine Spalte vom numerischen Typ ist, verwenden Sie auto_increment, um das automatische Wachstum abzuschließen2. Fügen Sie beim Erstellen der Tabelle die Primärschlüsseleinschränkung hinzu und vervollständigen Sie das Selbstwachstum des Primärschlüssels.
Erstellen Sie eine Tabelle stu (
id int Primärschlüssel auto_increment, - fügen Sie den
Namen varchar (20) der Primärschlüsseleinschränkung varchar hinzu
).3. Automatisches Wachstum löschen: ALTER TABLE stu MODIFY id INT;
4. Automatisches Wachstum hinzufügen: ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
Constraints_Foreign Key Constraints
Fremdschlüsseleinschränkungen - Beispiele für Mängel
CREATE TABLE emp ( -- 创建employe表
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30),
age INT,
dep_name VARCHAR(30), -- 部门名称
dep_location VARCHAR(30) -- 部门地址
);
-- 添加数据
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('张三', 20, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('李四', 21, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('王五', 20, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('老王', 20, '销售部', '深圳');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('大王', 22, '销售部', '深圳');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('小王', 18, '销售部', '深圳');
-- 解决方案:分成 2 张表
-- 创建部门表(id,dep_name,dep_location)
-- 一方,主表
CREATE TABLE department(
id INT PRIMARY KEY AUTO_INCREMENT,
dep_name VARCHAR(20),
dep_location VARCHAR(20)
);
-- 创建员工表(id,name,age,dep_id)
-- 多方,从表
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
age INT,
dep_id INT -- 外键对应主表的主键
);
-- 添加 2 个部门
INSERT INTO department VALUES(NULL, '研发部','广州'),(NULL, '销售部', '深圳');
SELECT * FROM department;
-- 添加员工,dep_id 表示员工所在的部门
INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1);
INSERT INTO employee (NAME, age, dep_id) VALUES ('李四', 21, 1);
INSERT INTO employee (NAME, age, dep_id) VALUES ('王五', 20, 1);
INSERT INTO employee (NAME, age, dep_id) VALUES ('老王', 20, 2);
INSERT INTO employee (NAME, age, dep_id) VALUES ('大王', 22, 2);
INSERT INTO employee (NAME, age, dep_id) VALUES ('小王', 18, 2);
SELECT * FROM employee;
SELECT * FROM department;
Konzepte im Zusammenhang mit Fremdschlüsseleinschränkungen
* Fremdschlüsseleinschränkungen: Fremdschlüssel, lassen Sie die Tabelle und die Tabelle eine Beziehung haben, um die Richtigkeit der Daten sicherzustellen.
1. Beim Erstellen einer Tabelle können Sie einen Fremdschlüssel hinzufügen.
* Syntax:
Tabelle erstellen Tabellenname (
...
Fremdschlüsselspaltenbeschränkung
Fremdschlüsselname Fremdschlüssel (Fremdschlüsselspaltenname) verweist auf Haupttabellennamen (Haupttabellenspaltenname)
) ;;2. Löschen Sie den Fremdschlüssel
ALTER TABLE Tabellenname DROP FOREIGN KEY Fremdschlüsselname;3.
Fügen Sie nach dem Erstellen der Tabelle den Fremdschlüssel hinzu. ALTER TABLE Tabellenname ADD CONSTRAINT Fremdschlüsselname FOREIGN KEY (Fremdschlüsselfeldname) REFERENZEN Haupttabellenname (Haupttabellenspaltenname); // Primärschlüsselspalte, eindeutige Einschränkungsspalte
CREATE TABLE Mitarbeiter (
ID INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR (20),
Alter INT,
dep_id INT, - Der Fremdschlüssel entspricht dem Primärschlüssel der
Primärtabelle CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES Abteilung (ID) - Fremdschlüssel Einschränkung
);
![]()
Constraint_Foreign Key Constraint_Cascade Operation
4. Kaskadenoperation
1. Fügen Sie die
Syntax der Kaskadenoperation hinzu : ALTER TABLE Tabellenname ADD CONSTRAINT Fremdschlüsselname
FOREIGN KEY (Fremdschlüsselfeldname) REFERENZEN Haupttabellenname (Haupttabellenspaltenname) ON UPDATE CASCADE ON DELETE CASCADE;
2. Klassifizierung:
1 Kaskadenaktualisierung: ON UPDATE CASCADE
2. Kaskadenlöschung: ON DELETE CASCADE
Kaskaden-Update
Kaskade löschen
Was ist der Beginn des Frühlings? Öffne deinen Horizont, öffne deinen Geist, öffne deine Weisheit, öffne das Muster!
Lichun, was ist das? Verlassen Sie sich auf Menschlichkeit, Gerechtigkeit, Loyalität, Aufrichtigkeit und Geist!