Heim Datenbank MySQL-Tutorial Detaillierte Erläuterung von Einschränkungen, Mehrtabellenabfragen und Unterabfragen in MySQL

Detaillierte Erläuterung von Einschränkungen, Mehrtabellenabfragen und Unterabfragen in MySQL

Sep 07, 2017 am 10:58 AM
mysql 查询

1. Primärschlüsseleinschränkungen von Einschränkungen

Einschränkungen: Einschränkungen werden zu Spalten hinzugefügt, um Spalten einzuschränken.

1. Primärschlüsseleinschränkung (eindeutige Identifikation): ungleich Null, eindeutig, referenziert

Wenn eine Spalte der Tabelle als Primärschlüssel festgelegt ist, darf die Klasse nicht leer sein oder ein Duplikat haben Werte. Es gibt

zwei Möglichkeiten, den Primärschlüssel beim Erstellen einer Tabelle anzugeben:

CREATE TABLE stu(
    sid  CHAR(6) PRIMARY KEY,
    sname  VARCHAR(20),
    age  INT,
    sex  VARCHEAR(10)
);

CREATE TABLE stu(
    sid  CHAR(6) ,
    sname  VARCHAR(20),
    age  INT,
    sex  VARCHEAR(10),
    PRIMARY KEY(sid)
);
Nach dem Login kopieren

Geben Sie die SID-Spalte als Primärschlüsselspalte an, d. h. fügen Sie eine Primärschlüsseleinschränkung hinzu die Sid-Spalte

Beim Ändern des Tabellenprimärschlüssels angeben:

ALTER TABLE stu ADD PRIMARY KEY(sid);
Nach dem Login kopieren

Primärschlüssel löschen:

ALTER TABLE stu DROP PRIMARY KEY;
Nach dem Login kopieren

2. Primärschlüssel automatisch inkrementieren

Weil die Eigenschaften der Primärschlüsselspalte sind: Sie muss eindeutig sein und darf nicht leer sein. Daher wird der Primärschlüssel normalerweise als Ganzzahl angegeben und dann wird sein automatisches Wachstum festgelegt. Dadurch wird sichergestellt, dass die Primärschlüsselspalte vorhanden ist eindeutig und ungleich Null beim Einfügen von Daten.

Geben Sie die automatische Inkrementierung des Primärschlüssels beim Erstellen einer Tabelle an.

CREATE TABLE stu(
    sid  INT PRIMARY KEY AUTO_INCREMENT,
    sname  VARCHAR(20),
    age  INT,
    sex  VARCHEAR(10)
);
Nach dem Login kopieren

Legen Sie die automatische Inkrementierung des Primärschlüssels beim Ändern der Tabelle fest:

ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;
Nach dem Login kopieren

Löschen Sie den Primärschlüssel Automatisches Inkrementieren des Schlüssels beim Ändern der Tabelle:

ALTER TABLE stu CHANGE sid sid INT ;
Nach dem Login kopieren

Automatisches Inkrementieren des Primärschlüssels testen:

INSERT INTO stu VALUES(NULL,'zhangsan',23,'man');
INSERT INTO stu(sname,age,sex) VALUES(NULL,'zhangsan',23,'man');
Nach dem Login kopieren

3. Nicht-Null-Einschränkungen

Da einige Spalten dies nicht können auf Nullwerte gesetzt werden, können Sie Nicht-Null-Einschränkungen hinzufügen.

Zum Beispiel:

CREATE TABLE stu (
   sid INT PRIMARY KEY AUTO_INCREMENT,
   sname  VARCHAR(20) NOT NULL,
   age   INT,
   sex  VARCHAR(10)
);
Nach dem Login kopieren

Für die Sname-Spalte wird eine Nicht-Null-Einschränkung festgelegt.

4. Eindeutige Einschränkungen

Einige Spalten in der Garage können keine wiederholten Werte haben, daher können Sie den Spalten eindeutige Einschränkungen hinzufügen.

Zum Beispiel:

CREATE TABLE stu (
   sid INT PRIMARY KEY AUTO_INCREMENT,
   sname  VARCHAR(20) NOT NULL UNIQUE,
   age   INT,
   sex  VARCHAR(10)
);
Nach dem Login kopieren

2. Konzeptmodell

1. Objektmodell: In Java ist es Domäne, zum Beispiel: Benutzer, Student.

2. Relationales Modell: Tabellen in der Datenbank sind 1-zu-viele, 1-zu-1 und viele-zu-viele.

3. Fremdschlüsseleinschränkungen

Der Fremdschlüssel muss der Wert des Primärschlüssels einer anderen Tabelle sein (der Fremdschlüssel muss auf den Primärschlüssel verweisen).

Fremdschlüssel kann wiederholt werden

Fremdschlüssel können leer sein

1. Fremdschlüsseleinschränkungen beim Erstellen hinzufügen

CREATE TABLE dept (
    deptno INT PRIMARY KEY AUTO_INCREMENT,
    dname VARCHAR(50)
);
insert into dept values(10,'研发部');
insert into dept values(20,'人力部');
insert into dept values(30,'财务部');

CREATE TABLE emp (
    empno INT PRIMARY KEY AUTO_INCREMENT,
    ename VARCHAR(50),
    deptno INT,
    CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCES dept(deptno) 
);

CREATE TABLE dept (
    deptno INT PRIMARY KEY AUTO_INCREMENT,
    dname VARCHAR(50)
);
INSERT INTO dept VALUES(10,'研发部');
INSERT INTO dept VALUES(20,'人力部');
INSERT INTO dept VALUES(30,'财务部');

INSERT INTO emp(empno,ename) VALUES(null,'zhangsan');
INSERT INTO emp(empno,ename,deptno) VALUES(null,'lisi',10);


INSERT INTO emp(empno,ename,deptno) VALUES(null,'zhangsan',80);
/* Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails 
(`mydb2`.`emp`, CONSTRAINT `fk_emp_dept` FOREIGN KEY (`deptno`) REFERENCES `dept` (`deptno`))
*/
Nach dem Login kopieren

2. Fremdschlüsseleinschränkungen hinzufügen, wenn die Tabelle geändert wird:

ALTER TABLE emp ADD CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERNCES dept(deptno);
Nach dem Login kopieren

IV, Datenbankrelationales Modell

1. Eine Eins-zu-Eins-Beziehung in einer Tabelle herzustellen Es ist notwendig, den Primärschlüssel einer der Tabellen sowohl zu einem Primärschlüssel als auch zu einem Fremdschlüssel zu machen.

2. Viele-zu-viele-Beziehung
CREATE TABLE hasband (
    hid INT PRIMARY KEY AUTO_INCREMENT,
    hname VARCHAR(50)
);

CREATE TABLE wife (
    wid INT PRIMARY KEY AUTO_INCREMENT,
    wname VARCHAR(50),
    CONSTRAINT fk_wife_hasband FOREIGN KEY (wid)  REFERENCES hasband(hid) 
);
Nach dem Login kopieren

Um eine Viele-zu-viele-Beziehung in einer Tabelle herzustellen, müssen Sie eine Zwischentabelle verwenden, das heißt, Sie benötigen drei Tabellen und zwei Fremdschlüssel in der Zwischentabelle verweisen jeweils auf die Primärschlüssel der anderen beiden Tabellen.

Stellen Sie eine Beziehung in der Zwischentabelle her, wie zum Beispiel:
CREATE TABLE student (
    sid INT PRIMARY KEY ,
    ......
);

CREATE TABLE teacher(
    tid INT PRIMARY KEY ,
    ......
);

CREATE TABLE stu_tea (
    sid INT,
    tid INT,
    ADD CONSTRAINT fk_stu_tea_sid FOREIGN KEY (sid)  REFERENCES student(sid) ,
    ADD CONSTRAINT fk_stu_tea_tid FOREIGN KEY (tid)  REFERENCES teacher(tid) 
);
Nach dem Login kopieren

5. Klassifizierung
INSERT INTO stu_tea VALUES(5,1);
INSERT INTO stu_tea VALUES(2,2);
INSERT INTO stu_tea VALUES(3,2);
Nach dem Login kopieren

Ergebnismenge zusammenführen

Abfrage zusammenführen

Unterabfrage

2. Ergebnisabfrage zusammenführen

Erfordert den Typ und die Anzahl der Spalten in der Ergebnismenge in der zusammengeführten Tabelle sind gleich

UNION, doppelte Zeilen entfernen

UNION ALL, keine doppelten Zeilen entfernen

3. Verbindungsabfrage

①Klassifizierung
SELECT * FROM 表1名
UNION ALL
SELECT * FROM 表2名;
Nach dem Login kopieren

Verbindung

Äußerer Join

Linker äußerer Join

Rechter äußerer Join

Vollständiger äußerer Join (MySQL wird nicht unterstützt)

Natürlicher Join (gehört zu einer vereinfachten Methode)

②Inner Join

Dialekt: SELECT * FROM Tabelle 1 Alias ​​1, Tabelle 2 Alias ​​2 WHERE Alias ​​1.xx = Alias ​​2.xx ;

Verwenden Sie bedingte Filterung, um nutzlose Informationen aus dem kartesischen Produkt zu entfernen.

Standard: SELECT * FROM Tabelle 1 Alias ​​1 INNER JOIN Tabelle 2 Alias ​​2 ON Alias ​​1.xx = Alias ​​2.xx;
SELECT * FROM emp,dept WHERE emp.deptno=dept.deptno;
SELECT e.ename, e.sal, d.dname FROM emp e, dept d WHERE e.deptno=d.deptno;
Nach dem Login kopieren

Natürlich: SELECT * FROM Tabelle 1 Alias ​​1 NATURAL JOIN Tabelle 2 Alias ​​​​2;

SELECT e.ename, e.sal , d.dname  FROM emp e INNER JOIN dept d ON  e.deptno=d.deptno;
Nach dem Login kopieren
Alle vom Inner Join abgefragten Datensätze erfüllen die Bedingungen

③Outer Join
SELECT e.ename, e.sal , d.dname  FROM emp e NATURAL JOIN dept d;
Nach dem Login kopieren

Links außen: SELECT * FROM Table 1 Alias ​​1 LEFT OUTER JOIN Tabelle 2 Alias ​​2 ON Alias ​​1.xx = Alias ​​2.xx

Die Datensätze in der linken Tabelle werden abgefragt, unabhängig davon, ob sie die Bedingungen erfüllen Die Datensätze in der rechten Tabelle können nur abgerufen werden, wenn sie die Bedingungen erfüllen. Datensätze in der linken Tabelle, die die Bedingungen nicht erfüllen, sind in der rechten Tabelle null.

Linker äußerer natürlicher: SELECT * FROM Tabelle 1 Alias ​​​​1 NATURAL LEFT OUTER JOIN Tabelle 2 Alias ​​​​2 ON Alias ​​​​1.xx = Alias ​​​​2.xx;

Rechts außen: SELECT * FROM Tabelle 1 Alias ​​​​1 RIGHT OUTER JOIN Tabelle 2 Alias ​​​​2 ON Alias ​​​​1.xx = Alias ​​​​2.xx; Die Datensätze auf der rechten Seite In der Tabelle wird abgefragt, ob sie die Bedingungen erfüllen oder nicht, während die Datensätze in der linken Tabelle nur abgerufen werden können, wenn sie die Bedingungen erfüllen. Datensätze in der rechten Tabelle, die die Bedingungen nicht erfüllen, sind in der linken Tabelle null.

SELECT e.ename, e.sal , IFNULL(d.dname,'无部门') AS dname  FROM emp e LEFT OUTER JOIN dept d ON  e.deptno=d.deptno;
Nach dem Login kopieren
Right Outer Natural: SELECT * FROM Table 1 Alias ​​​​1 NATURAL RIGHT OUTER JOIN Table 2 Alias ​​​​2 ON Alias ​​​​1.xx = Alias ​​​​2.xx; Vollständiger Link: Sie können UNION verwenden, um „Vollständig verbunden“ abzuschließen.

4. Unterabfrage

Es gibt eine Abfrage in der Abfrage (überprüfen Sie die Anzahl der ausgewählten Schlüsselwörter)

①Die Position, an der sie erscheint

Nach WHERE Existiert als Bedingung

SELECT e.ename, e.sal , d.dname 
FROM emp e LEFT OUTER JOIN dept d 
ON e.deptno=d.deptno
UNION
SELECT e.ename, e.sal , d.dname 
FROM emp e RIGHT OUTER JOIN dept d 
ON e.deptno=d.deptno;
Nach dem Login kopieren
Existiert als Tabelle nach FROM (mehrere Zeilen und mehrere Spalten)

②Bedingung

Einzelne Zeile und einzelne Spalte: SELECT * FROM Tabelle 1 Alias 1 WHERE Spalte 1 [=, >, <, >=, <=, !=] (SELECT Spalte FROM Tabelle 2 Alias ​​2 WHERE Bedingung);

Mehrere Zeilen und einzelne Spalte : SELECT * FROM Tabelle 1 Alias ​​1 WHERE Spalte 1 [IN,ALL,ANY] (SELECT Spalte FROM Tabelle 2 Alias ​​2 WHERE Bedingung);

Einzelne Zeile und mehrere Spalten: SELECT * FROM Tabelle 1 Alias ​​1 WHERE (Spalte 1, Spalte 2) IN (SELECT Spalte 1, Spalte 2 FROM Tabelle 2 Alias ​​2 WHERE Bedingung);

Mehrere Zeilen und Spalten: SELECT * FROM Tabelle 1 Alias ​​1, ( SELECT...) Tabelle 2 Alias ​​2 WHERE-Bedingung;

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von Einschränkungen, Mehrtabellenabfragen und Unterabfragen in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So stellen Sie eine Verbindung zur Datenbank von Apache her So stellen Sie eine Verbindung zur Datenbank von Apache her Apr 13, 2025 pm 01:03 PM

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

So starten Sie MySQL von Docker So starten Sie MySQL von Docker Apr 15, 2025 pm 12:09 PM

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

CentOS installieren MySQL CentOS installieren MySQL Apr 14, 2025 pm 08:09 PM

Die Installation von MySQL auf CentOS umfasst die folgenden Schritte: Hinzufügen der entsprechenden MySQL Yum -Quelle. Führen Sie den Befehl mySQL-server aus, um den MySQL-Server zu installieren. Verwenden Sie den Befehl mySQL_SECURE_INSTALLATION, um Sicherheitseinstellungen vorzunehmen, z. B. das Festlegen des Stammbenutzerkennworts. Passen Sie die MySQL -Konfigurationsdatei nach Bedarf an. Tune MySQL -Parameter und optimieren Sie Datenbanken für die Leistung.

See all articles