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) );
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);
Primärschlüssel löschen:
ALTER TABLE stu DROP PRIMARY KEY;
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) );
Legen Sie die automatische Inkrementierung des Primärschlüssels beim Ändern der Tabelle fest:
ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT;
Löschen Sie den Primärschlüssel Automatisches Inkrementieren des Schlüssels beim Ändern der Tabelle:
ALTER TABLE stu CHANGE sid sid INT ;
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');
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) );
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) );
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`)) */
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);
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-BeziehungCREATE 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) );
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) );
INSERT INTO stu_tea VALUES(5,1); INSERT INTO stu_tea VALUES(2,2); INSERT INTO stu_tea VALUES(3,2);
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①KlassifizierungSELECT * FROM 表1名 UNION ALL SELECT * FROM 表2名;
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;
SELECT e.ename, e.sal , d.dname FROM emp e INNER JOIN dept d ON e.deptno=d.deptno;
SELECT e.ename, e.sal , d.dname FROM emp e NATURAL JOIN dept d;
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;
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;
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!