MySQL Basic Knowledge Notes 2 - [Grundlegende Grammatik]

Der heutige Inhalt

  1. DQL: Abfrageanweisung

    1. Abfrage sortieren
    2. Aggregatfunktion
    3. Gruppenabfrage
    4. Paging-Abfrage
  2. Zwang

  3. Beziehung zwischen mehreren Tabellen

  4. Paradigma

  5. Datenbanksicherung und -wiederherstellung

DQL: Abfrageanweisung

Abfrage sortieren

Syntax: order by-Klausel

  • Reihenfolge nach Sortierfeld 1 Sortiermethode 1, Sortierfeld 2 Sortiermethode 2 ...

Sortieren nach:

  • ASC: Aufsteigende Reihenfolge, die Standardeinstellung.
  • DESC: absteigende Reihenfolge.

Hinweis:

Wenn mehrere Sortierbedingungen vorliegen, wird die zweite Bedingung beurteilt, wenn der Bedingungswert der aktuellen Seite gleich ist.

Aggregatfunktion: Nehmen Sie eine Datenspalte als Ganzes und führen Sie vertikale Berechnungen durch.

count: Zähle die Nummer

  1. Wählen Sie im Allgemeinen nicht leere Spalten aus: Primärschlüssel
  2. 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. Nicht leere Spalten für die Berechnung
    2 einbeziehen. IFNULL-Funktion

Gruppenabfrage:

Syntax: Gruppe für Gruppe Feld;

Hinweis:

  1. Felder, die nach dem Gruppieren abgefragt werden sollen: Gruppieren von Feldern, Aggregatfunktionen
  2. Der Unterschied zwischen wo und haben?
    1. 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
    2. 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;

Paging-Abfrage

Grammatik

Index ab Limit, Anzahl der Abfragen pro Seite;

offiziell

Startindex = (aktuelle Seitenzahl-1) * Die Anzahl der pro Seite angezeigten Elemente

-- 每页显示3条记录 
SELECT * FROM student LIMIT 0,3; -- 第1页
SELECT * FROM student LIMIT 3,3; -- 第2页
SELECT * FROM student LIMIT 6,3; -- 第3页

limit ist ein MySQL "Dialekt", der nur in MySQL vorkommt

Zwang

Konzept

Begrenzen Sie die Daten in der Tabelle, um die Richtigkeit, Gültigkeit und Vollständigkeit der Daten sicherzustellen.

Einstufung

  1. Primärschlüsseleinschränkung: Primärschlüssel
  2. Nicht leere Einschränkung: nicht null
  3. Die einzige Einschränkung: einzigartig
  4. Fremdschlüsseleinschränkung: Fremdschlüssel

Nicht-Null-Einschränkung: Nicht Null, der Wert einer Spalte darf nicht Null sein

  1. Fügen Sie beim Erstellen einer Tabelle Einschränkungen hinzu.
    CREATE TABLE stu (
    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) NOT NULL;

  3. Löschen Sie die nicht leere Einschränkung des Namens
    ALTER TABLE stu MODIFY NAME VARCHAR (20);

Die einzige Einschränkung:

eindeutig, der Wert einer Spalte kann nicht wiederholt werden

Hinweis:

  • Die eindeutige Einschränkung kann einen NULL-Wert haben, aber nur ein Datensatz kann null sein, und der durch die eindeutige Einschränkung begrenzte Wert der Spalte kann mehrere Nullen haben

Fügen Sie beim Erstellen einer Tabelle eine eindeutige Einschränkung hinzu

CREATE TABLE stu(
	id INT,
	phone_number VARCHAR(20) UNIQUE -- 手机号
);

Löschen Sie die eindeutige Einschränkung

ALTER TABLE stu DROP INDEX phone_number;

Fügen Sie nach dem Erstellen der Tabelle eine eindeutige Einschränkung hinzu

ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

Primärschlüsseleinschränkung: Primärschlüssel

Hinweis

  1. Bedeutung: nicht leer und einzigartig
  2. Eine Tabelle kann nur ein Feld als Primärschlüssel haben
  3. Der Primärschlüssel ist die eindeutige Identifizierung der Datensätze in der Tabelle

Fügen Sie beim Erstellen einer Tabelle eine Primärschlüsseleinschränkung hinzu

create table stu(
	id int primary key,-- 给id添加主键约束
	name varchar(20)
);

Primärschlüssel löschen

-- 错误 alter table stu modify id int ;
ALTER TABLE stu DROP PRIMARY KEY;

Fügen Sie nach dem Erstellen der Tabelle den Primärschlüssel hinzu

ALTER TABLE stu MODIFY id INT PRIMARY KEY;

Automatisches Wachstum

Konzept: Wenn eine Spalte vom numerischen Typ ist, verwenden Sie auto_increment, um den Wert des automatischen Wachstums zu vervollständigen

Fügen Sie beim Erstellen einer Tabelle Primärschlüsseleinschränkungen hinzu und schließen Sie das Selbstwachstum des Primärschlüssels ab

create table stu(
id int primary key auto_increment,-- 给id添加主键约束
name varchar(20)
);--自动增长的值只跟上一条记录有关系

Automatisches Wachstum löschen

ALTER TABLE stu MODIFY id INT;

Fügen Sie automatisches Wachstum hinzu

ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

Fremdschlüsseleinschränkung: Fremdschlüssel

Lassen Sie die Tabelle und die Tabelle eine Beziehung haben, um die Richtigkeit der Daten sicherzustellen.

Beim Erstellen einer Tabelle können Sie Fremdschlüssel hinzufügen

Grammatik:

create table 表名(
	....
	外键列
	constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);

Fremdschlüssel löschen

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

Fügen Sie nach dem Erstellen der Tabelle den Fremdschlüssel hinzu

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

Kaskadenbetrieb

  1. Kaskadenoperation hinzufügen

    语法:
    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 
    FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE  ;
    
  2. Einstufung:

    1. Kaskaden-Update:ON UPDATE CASCADE
    2. Kaskadenlöschung:ON DELETE CASCADE

Datenbank Design

Beziehung zwischen mehreren Tabellen

Einstufung:

Eins-zu-eins (Verständnis):

  • Wie zum Beispiel: Person und Personalausweis
  • Analyse: Eine Person hat nur eine ID und eine ID kann nur einer Person entsprechen

Eins zu viele (viele zu eins):

  • Wie zum Beispiel: Abteilungen und Mitarbeiter
  • Analyse: In einer Abteilung gibt es mehrere Mitarbeiter, und ein Mitarbeiter kann nur einer Abteilung entsprechen

Viel zu viel:

  • Wie zum Beispiel: Studenten und Kurse
  • Analyse: Ein Student kann viele Kurse auswählen, und ein Kurs kann von vielen Studenten ausgewählt werden

Realisierungsbeziehung:

Eins zu viele (viele zu eins):

  • Wie zum Beispiel: Abteilungen und Mitarbeiter
  • Implementierungsmethode: Richten Sie auf der anderen Seite einen Fremdschlüssel ein, der auf der einen Seite auf den Primärschlüssel zeigt.

Viel zu viel:

  • Wie zum Beispiel: Studenten und Kurse
  • Realisierungsmethode: Die Realisierung einer Viele-zu-Viele-Beziehung erfordert die Hilfe der dritten Zwischentabelle. Die Zwischentabelle enthält mindestens zwei Felder. Diese beiden Felder werden als Fremdschlüssel der dritten Tabelle verwendet und zeigen auf die Primärschlüssel der beiden Tabellen

Eins-zu-eins (Verständnis):

  • Wie zum Beispiel: Person und Personalausweis
  • Implementierung: Eine Eins-zu-Eins-Beziehung wird erreicht, und auf beiden Seiten kann ein eindeutiger Fremdschlüssel hinzugefügt werden, der auf den Primärschlüssel der anderen Seite verweist.

Fall

-- 创建旅游线路分类表 tab_category
-- cid 旅游线路分类主键,自动增长
-- cname 旅游线路分类名称非空,唯一,字符串 100
CREATE TABLE tab_category (
	cid INT PRIMARY KEY AUTO_INCREMENT,
	cname VARCHAR(100) NOT NULL UNIQUE
);

-- 创建旅游线路表 tab_route
/*
rid 旅游线路主键,自动增长
rname 旅游线路名称非空,唯一,字符串 100
price 价格
rdate 上架时间,日期类型
cid 外键,所属分类
*/
CREATE TABLE tab_route(
	rid INT PRIMARY KEY AUTO_INCREMENT,
	rname VARCHAR(100) NOT NULL UNIQUE,
	price DOUBLE,
	rdate DATE,
	cid INT,
	FOREIGN KEY (cid) REFERENCES tab_category(cid)
);

/*创建用户表 tab_user
uid 用户主键,自增长
username 用户名长度 100,唯一,非空
password 密码长度 30,非空
name 真实姓名长度 100
birthday 生日
sex 性别,定长字符串 1
telephone 手机号,字符串 11
email 邮箱,字符串长度 100
*/
CREATE TABLE tab_user (
	uid INT PRIMARY KEY AUTO_INCREMENT,
	username VARCHAR(100) UNIQUE NOT NULL,
	PASSWORD VARCHAR(30) NOT NULL,
	NAME VARCHAR(100),
	birthday DATE,
	sex CHAR(1) DEFAULT '男',
	telephone VARCHAR(11),
	email VARCHAR(100)
);

/*
创建收藏表 tab_favorite
rid 旅游线路 id,外键
date 收藏时间
uid 用户 id,外键
rid 和 uid 不能重复,设置复合主键,同一个用户不能收藏同一个线路两次
*/
CREATE TABLE tab_favorite (
	rid INT, -- 线路id
	DATE DATETIME,
	uid INT, -- 用户id
	-- 创建复合主键
	PRIMARY KEY(rid,uid), -- 联合主键
	FOREIGN KEY (rid) REFERENCES tab_route(rid),
	FOREIGN KEY(uid) REFERENCES tab_user(uid)
);

Das Paradigma des Datenbankdesigns

Konzept

Beim Entwerfen einer Datenbank müssen einige Spezifikationen beachtet werden. Um den Anforderungen des letzteren Paradigmas zu folgen, müssen Sie zuerst alle Anforderungen des vorherigen Paradigmas befolgen. Wenn Sie
eine relationale Datenbank entwerfen, befolgen Sie verschiedene Spezifikationen und entwerfen Sie eine vernünftige relationale Datenbank. Diese verschiedenen Spezifikationen werden als verschiedene Paradigmen und verschiedene Paradigmen bezeichnet. Unterspezifikation: Je höher das Paradigma, desto geringer die Redundanz der Datenbank.
Derzeit gibt es sechs Paradigmen für relationale Datenbanken: Erste Normalform (1NF), Zweite Normalform (2NF), Dritte Normalform (3NF), Badschnur-Normalform (BCNF), Vierte Normalform (4NF) und Fünfte Normalform (5NF, auch als perfektes Paradigma bekannt).

Einstufung

Erste Normalform (1NF): Jede Spalte ist ein unteilbares atomares Datenelement

Zweite Normalform (2NF): Auf der Basis von 1NF müssen Nicht-Code-Attribute vollständig vom Code abhängig sein (auf der Basis von 1NF wird die teilweise funktionale Abhängigkeit von Nicht-Primär-Attributen vom Hauptcode beseitigt).

  1. Funktionsabhängigkeit: A-> B Wenn der Wert des A-Attributs (Attributgruppe) verwendet wird, kann der Wert des eindeutigen B-Attributs bestimmt werden. Es wird gesagt, dass B von A abhängt,
    zum Beispiel: Studentenausweis -> Name. (Schülernummer, Kursname) -> Punktzahl

  2. Volle Funktionsabhängigkeit: A-> B. Wenn A eine Attributgruppe ist, muss die Bestimmung des Attributwerts von B von allen Attributwerten in der Attributgruppe A abhängen.
    Zum Beispiel: (Studentenausweis, Kursname) -> Punktzahl

  3. Teil der funktionalen Abhängigkeit: A–> B. Wenn A eine Attributgruppe ist, muss die Bestimmung des Attributwerts von B nur von einigen Werten in der Attributgruppe A abhängen.
    Zum Beispiel: (Studentenausweis, Kursname) -> Name

  4. Die Übertragungsfunktion hängt ab von: A–> B, B -> C. Wenn der Wert des A-Attributs (Attributgruppe) verwendet wird, kann der Wert des eindeutigen B-Attributs bestimmt werden, und der Wert des einzigen C-Attributs kann durch den Wert des B-Attributs (Attributgruppe) bestimmt werden. Es wird gesagt, dass die Übertragungsfunktion von C von A abhängt.
    Zum Beispiel: Schülernummer -> Abteilungsname, Abteilungsname -> Abteilungsleiter

  5. Code: Wenn ein Attribut oder eine Attributgruppe vollständig von allen anderen Attributen in einer Tabelle abhängig ist, wird dieses Attribut (Attributgruppe) als Code der Tabelle bezeichnet.
    Beispiel: Der Code in der Tabelle lautet: (Studenten-ID, Kursname)

    • Primäres Attribut: Alle Attribute in der Code-Attributgruppe

    • Nicht primäre Attribute: Die Attribute der codierten Attributgruppe

Dritte Normalform (3NF): Auf der Basis von 2NF hängt jedes nicht-primäre Attribut nicht von anderen nicht-primären Attributen ab (Eliminierung der transitiven Abhängigkeit auf der Basis von 2NF)

Datenbanksicherung und -wiederherstellung

Befehlszeile:

Backup:

mysqldump -u Benutzername -p Passwort Datenbankname> gespeicherter Pfad

die Ermäßigung:

  1. Melden Sie sich bei der Datenbank an
  2. Datenbank erstellen
  3. Datenbank verwenden
  4. ausführbare Datei. Quelldateipfad.

Ich denke du magst

Origin blog.csdn.net/weixin_43215322/article/details/109084442
Empfohlen
Rangfolge