Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie lege ich eine Nicht-Null-Einschränkung für den MySQL-Primärschlüssel fest?

青灯夜游
Freigeben: 2020-10-07 11:57:10
Original
4525 Leute haben es durchsucht

In MySQL können Sie Primärschlüsseleinschränkungen festlegen, indem Sie die Anweisung „ PRIMARY KEY [Standardwert]“ in der Anweisung „CREATE TABLE“ verwenden, indem Sie „ < ;“ verwenden. Datentyp> NOT NULL“-Anweisung zum Festlegen einer Nicht-Null-Einschränkung.

Wie lege ich eine Nicht-Null-Einschränkung für den MySQL-Primärschlüssel fest?

MySQL-Primärschlüsseleinschränkung

Der vollständige Name des Primärschlüssels (PRIMARY KEY) lautet „Primärschlüsseleinschränkung“, die in MySQL am häufigsten verwendete Einschränkung. Unter normalen Umständen wird ein Primärschlüssel in der Tabelle festgelegt, damit das DBMS Datensätze in der Tabelle schneller finden kann.

Bei der Verwendung von Primärschlüsseln sind folgende Punkte zu beachten:

  • Jede Tabelle kann nur einen Primärschlüssel definieren.

  • Der Primärschlüsselwert muss jede Zeile in der Tabelle eindeutig identifizieren und darf nicht NULL sein, d. h. die Tabelle darf nicht zwei Datenzeilen mit demselben Primärschlüsselwert enthalten. Das ist das Prinzip der Einzigartigkeit.

  • Ein Feldname kann in der gemeinsamen Primärschlüsselfeldtabelle nur einmal vorkommen.

  • Der gemeinsame Primärschlüssel darf keine unnötigen redundanten Felder enthalten. Wenn ein Feld im gemeinsamen Primärschlüssel gelöscht wird und der aus den verbleibenden Feldern zusammengesetzte Primärschlüssel immer noch das Eindeutigkeitsprinzip erfüllt, ist der gemeinsame Primärschlüssel falsch. Dies ist das Prinzip der Minimierung.

Legen Sie beim Erstellen einer Tabelle Primärschlüsseleinschränkungen fest.

Legen Sie beim Erstellen einer Datentabelle Primärschlüsseleinschränkungen fest. Sie können einen Primärschlüssel für ein Feld in der Tabelle oder einen gemeinsamen Primärschlüssel für mehrere Felder in der Tabelle festlegen. Aber egal welche Methode verwendet wird, es kann nur einen Primärschlüssel in einer Tabelle geben. Im Folgenden wird erläutert, wie ein Primärschlüssel für ein einzelnes Feld und ein gemeinsamer Primärschlüssel für mehrere Felder festgelegt werden.

1) Legen Sie einen Einzelfeld-Primärschlüssel fest.

Geben Sie in der CREATE TABLE-Anweisung den Primärschlüssel über das Schlüsselwort PRIMARY KEY an.

Geben Sie den Primärschlüssel an, während Sie das Feld definieren. Das Syntaxformat lautet wie folgt:

<字段名> <数据类型> PRIMARY KEY [默认值]
Nach dem Login kopieren

Beispiel 1

Erstellen Sie die Datentabelle tb_emp3 in der Datenbank test_db, deren Primärschlüssel id ist. Die SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt .

mysql> CREATE TABLE tb_emp3
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_emp3;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.14 sec)
Nach dem Login kopieren

Oder geben Sie den Primärschlüssel an, nachdem Sie alle Felder definiert haben. Das Syntaxformat ist wie folgt:

[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
Nach dem Login kopieren

Beispiel 2

Erstellen Sie die Datentabelle tb_emp4 in der Datenbank test_db, wobei der Primärschlüssel die SQL-Anweisung und die ausgeführten Ergebnisse ist sind wie folgt.

mysql> CREATE TABLE tb_emp4
    -> (
    -> id INT(11),
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(id)
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_emp4;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.14 sec)
Nach dem Login kopieren

2) Beim Erstellen der Tabelle den gemeinsamen Primärschlüssel festlegen

Der sogenannte gemeinsame Primärschlüssel bedeutet, dass dieser Primärschlüssel aus mehreren Feldern einer Tabelle besteht.

Sollten Sie beispielsweise beim Einrichten einer Datentabelle zur Kursauswahl für Studenten die Studentennummer als Primärschlüssel oder die Kursnummer als Primärschlüssel verwenden? Wird die Matrikelnummer als Primärschlüssel verwendet, kann ein Student nur einen Kurs wählen. Wenn die Kursnummer als Primärschlüssel verwendet wird, kann nur ein Student einen Kurs auswählen. Offensichtlich sind beide Situationen unrealistisch.

Tatsächlich besteht die Einschränkung bei der Gestaltung eines Kursauswahlplans für Studenten darin, dass ein Student denselben Kurs nur einmal wählen kann. Daher können die Matrikelnummer und die Kursnummer als Primärschlüssel zusammengesetzt werden, der ein gemeinsamer Primärschlüssel ist.

Der Primärschlüssel besteht aus mehreren Feldern. Das Syntaxformat lautet wie folgt:

PRIMARY KEY [字段1,字段2,…,字段n]
Nach dem Login kopieren

Hinweis: Wenn der Primärschlüssel aus mehreren Feldern besteht, kann die Primärschlüsseleinschränkung nicht direkt nach dem Feldnamen deklariert werden.

Beispiel 3

Erstellen Sie die Datentabelle tb_emp5. Um einen Mitarbeiter eindeutig zu identifizieren, können Sie Name und DeptId als Primärschlüssel kombinieren wie folgt.

mysql> CREATE TABLE tb_emp5
    -> (
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(id,deptId)
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_emp5;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(25) | NO   | PRI | NULL    |       |
| deptId | int(11)     | NO   | PRI | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.14 sec)
Nach dem Login kopieren

Primärschlüsseleinschränkungen beim Ändern der Tabelle hinzufügen

Primärschlüsseleinschränkungen können nicht nur beim Erstellen der Tabelle erstellt, sondern auch beim Ändern der Tabelle hinzugefügt werden. Es ist jedoch zu beachten, dass in Feldern, die als Primärschlüsseleinschränkungen festgelegt sind, keine Nullwerte zulässig sind.

Das Syntaxformat zum Hinzufügen von Primärschlüsseleinschränkungen beim Ändern der Datentabelle lautet wie folgt:

ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>);
Nach dem Login kopieren

Sehen Sie sich die Tabellenstruktur der tb_emp2-Datentabelle an. Die SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt.

mysql> DESC tb_emp2;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   |     | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.14 sec)
Nach dem Login kopieren

Beispiel 4

Ändern Sie die Datentabelle tb_emp2 und legen Sie die Feld-ID als Primärschlüssel fest. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt.

mysql> ALTER TABLE tb_emp2
    -> ADD PRIMARY KEY(id);
Query OK, 0 rows affected (0.94 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_emp2;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.12 sec)
Nach dem Login kopieren

Wenn Sie beim Ändern der Tabelle die Primärschlüsseleinschränkung eines Felds in der Tabelle festlegen möchten, müssen Sie normalerweise sicherstellen, dass die Werte in dem als Primärschlüsseleinschränkung festgelegten Feld keine Duplikate aufweisen dürfen und nicht vorhanden sein dürfen. null. Andernfalls kann die Primärschlüsseleinschränkung nicht festgelegt werden.

MySQL-Nicht-Null-Einschränkung

MySQL-Nicht-Null-Einschränkung (NOT NULL) bedeutet, dass der Wert des Feldes nicht Null sein darf. Wenn der Benutzer bei Feldern, die Nicht-Null-Einschränkungen verwenden, beim Hinzufügen von Daten keinen Wert angibt, meldet das Datenbanksystem einen Fehler. Dies kann mit der CREATE TABLE- oder ALTER TABLE-Anweisung erreicht werden. Fügen Sie das Schlüsselwort NOT NULL als Qualifikationsmerkmal nach der Definition einer Spalte in der Tabelle hinzu, um den Wert der Spalte darauf zu beschränken, dass er nicht leer ist.

Wenn beispielsweise in der Benutzerinformationstabelle der Benutzername nicht hinzugefügt wird, sind die Benutzerinformationen ungültig. In diesem Fall können Sie eine Nicht-Null-Einschränkung für das Benutzernamenfeld festlegen.

Legen Sie beim Erstellen einer Tabelle Nicht-Null-Einschränkungen fest.

Sie können das Schlüsselwort NOT NULL verwenden, um beim Erstellen einer Tabelle Nicht-Null-Einschränkungen festzulegen. Das spezifische Syntaxformat lautet wie folgt:

<字段名> <数据类型> NOT NULL
Nach dem Login kopieren

Beispiel 1

Daten erstellen Die Tabelle tb_dept4, in der der Abteilungsname angegeben wird, darf nicht leer sein. Die SQL-Anweisung und die Ausführungsergebnisse lauten wie folgt.

mysql> CREATE TABLE tb_dept4
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(22) NOT NULL,
    -> location VARCHAR(50)
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_dept3;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | NO   | PRI | NULL    |       |
| name     | varchar(22) | NO   |     | NULL    |       |
| location | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.06 sec)
Nach dem Login kopieren

在修改表时添加非空约束

如果在创建表时忘记了为字段设置非空约束,也可以通过修改表进行非空约束的添加。

修改表时设置非空约束的语法格式如下:

ALTER TABLE <数据表名>
CHANGE COLUMN <字段名>
<字段名> <数据类型> NOT NULL;
Nach dem Login kopieren

例 2

修改数据表 tb_dept4,指定部门位置不能为空,SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_dept4
    -> CHANGE COLUMN location
    -> location VARCHAR(50) NOT NULL;
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_dept4;
+----------+-------------+------+-----+----------+-------+
| Field    | Type        | Null | Key | Default  | Extra |
+----------+-------------+------+-----+----------+-------+
| id       | int(11)     | NO   | PRI | NULL     |       |
| name     | varchar(22) | NO   |     | NULL     |       |
| location | varchar(50) | NO   |     | NULL     |       |
+----------+-------------+------+-----+----------+-------+
3 rows in set (0.00 sec)
Nach dem Login kopieren

推荐教程:mysql视频教程

Das obige ist der detaillierte Inhalt vonWie lege ich eine Nicht-Null-Einschränkung für den MySQL-Primärschlüssel fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!