Rumah > pangkalan data > tutorial mysql > Apakah kunci utama dalam mysql?

Apakah kunci utama dalam mysql?

青灯夜游
Lepaskan: 2023-04-17 10:13:51
asal
7328 orang telah melayarinya

Dalam MySQL, nama penuh kunci utama ialah "kekangan kunci utama". Nilainya boleh mengenal pasti secara unik setiap baris dalam jadual dan ia boleh menguatkuasakan entiti integriti jadual; kunci utama Fungsinya adalah untuk menentukan keunikan data, terutamanya digunakan untuk perkaitan kunci asing dengan jadual lain, serta pengubahsuaian dan pemadaman rekod ini.

Apakah kunci utama dalam mysql?

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

Apakah kunci utama dalam mysql?

KUNCI UTAMA, juga dikenali sebagai "kekangan kunci utama".

Kekangan kunci utama MySQL ialah lajur atau gabungan berbilang lajur yang nilainya secara unik mengenal pasti setiap baris dalam jadual. Lajur atau lajur sedemikian dipanggil kunci utama jadual, yang mana integriti entiti jadual dikuatkuasakan. Kunci utama digunakan terutamanya untuk perkaitan kunci asing dalam jadual lain, serta pengubahsuaian dan pemadaman rekod ini.

PRIMER KEY ialah kekangan yang paling kerap digunakan dalam MySQL. Dalam keadaan biasa, untuk memudahkan DBMS mencari rekod dalam jadual dengan lebih cepat, kunci utama akan ditetapkan dalam jadual.

Perkara berikut perlu diberi perhatian apabila menggunakan kunci utama:

  • Setiap jadual hanya boleh mentakrifkan satu kunci utama.

  • Nilai kunci utama mesti mengenal pasti secara unik setiap baris dalam jadual dan tidak boleh NULL, iaitu, tidak boleh ada dua baris data dengan nilai kunci utama yang sama dalam jadual. Ini adalah prinsip keunikan.

  • Nama medan hanya boleh muncul sekali dalam jadual medan kunci primer bersama.

  • Kunci primer bersama tidak boleh mengandungi medan berlebihan yang tidak diperlukan. Apabila medan dalam kunci utama bersama dipadamkan, jika kunci utama yang terdiri daripada medan yang tinggal masih memenuhi prinsip keunikan, maka kunci utama bersama adalah salah. Ini adalah prinsip meminimumkan.

Tetapkan kekangan kunci utama semasa membuat jadual

Tetapkan kekangan kunci utama semasa membuat jadual data, sama ada untuk jadual Tetapkan kunci utama untuk medan dalam jadual, atau tetapkan kunci utama bersama untuk berbilang medan dalam jadual. Tetapi tidak kira kaedah yang digunakan, hanya terdapat satu kunci utama dalam jadual. Yang berikut menerangkan cara untuk menetapkan kunci utama satu medan dan kunci utama gabungan berbilang medan.

1) Tetapkan kunci utama medan tunggal

Dalam penyataan CREATE TABLE, nyatakan kunci utama melalui kata kunci PRIMARY KEY.

Nyatakan kunci utama semasa mentakrifkan medan Format sintaks adalah seperti berikut:

<字段名> <数据类型> PRIMARY KEY [默认值]
Salin selepas log masuk

Contoh 1

Buat jadual data tb_emp3 dalam pangkalan data test_db, yang mana kunci utama ialah id, SQL Penyataan dan keputusan yang dijalankan adalah seperti berikut.

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)
Salin selepas log masuk

Atau tentukan kunci utama selepas mentakrifkan semua medan Format sintaks adalah seperti berikut:

[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
Salin selepas log masuk

Contoh 2

Buat jadual data tb_emp4 dalam. pangkalan data test_db, Kunci utamanya ialah id, dan penyata SQL serta keputusan yang dijalankan adalah seperti berikut.

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)
Salin selepas log masuk

2) Tetapkan kunci primer bersama semasa membuat jadual

Kunci primer bersama yang dipanggil bermaksud kunci utama ini terdiri daripada berbilang medan dalam sebuah meja.

Contohnya, semasa menyediakan jadual data pemilihan kursus pelajar, patutkah anda menggunakan nombor pelajar sebagai kunci utama atau nombor kursus sebagai kunci utama? Jika nombor pelajar digunakan sebagai kunci utama, maka pelajar hanya boleh memilih satu kursus. Jika nombor kursus digunakan sebagai kunci utama, maka hanya seorang pelajar boleh memilih kursus. Jelas sekali, kedua-dua situasi ini tidak realistik.

Malah, apabila mereka bentuk jadual pemilihan kursus pelajar, hadnya ialah pelajar hanya boleh memilih kursus yang sama sekali sahaja. Oleh itu, nombor pelajar dan nombor kursus boleh disatukan sebagai kunci utama, yang merupakan kunci primer bersama.

Kunci primer terdiri daripada berbilang medan Format sintaks adalah seperti berikut:

PRIMARY KEY [字段1,字段2,…,字段n]
Salin selepas log masuk

Nota: Apabila kunci utama terdiri daripada berbilang medan, kekangan kunci primer tidak boleh diisytiharkan. terus selepas nama medan.

Contoh 3

Buat jadual data tb_emp5 Andaikan bahawa tiada id kunci utama dalam jadual untuk mengenal pasti pekerja secara unik, anda boleh menggabungkan nama dan deptId sebagai kunci utama . Pernyataan SQL dan keputusan berjalan adalah seperti berikut.

mysql> CREATE TABLE tb_emp5
    -> (
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(name,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)
Salin selepas log masuk

Tambahkan kekangan kunci utama apabila mengubah suai jadual

Kekangan kunci utama boleh dibuat bukan sahaja semasa mencipta jadual, tetapi juga apabila mengubah suai jadual ditambah apabila. Walau bagaimanapun, perlu diingatkan bahawa nilai nol tidak dibenarkan dalam medan yang ditetapkan sebagai kekangan utama utama.

Format sintaks untuk menambah kekangan kunci utama apabila mengubah suai jadual data adalah seperti berikut:

ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>);
Salin selepas log masuk

Lihat struktur jadual jadual data tb_emp2 Penyataan SQL dan hasil yang dijalankan adalah seperti mengikuti.

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)
Salin selepas log masuk

Contoh 4

Ubah suai jadual data tb_emp2 dan tetapkan id medan sebagai kunci utama Penyataan SQL dan hasil yang dijalankan adalah seperti berikut.

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)
Salin selepas log masuk

Biasanya, apabila anda ingin menetapkan kekangan kunci utama medan dalam jadual semasa mengubah suai jadual, anda mesti memastikan bahawa nilai dalam medan yang ditetapkan sebagai kekangan kunci utama tidak boleh mempunyai pendua, dan pastikan ia adalah benar dan salah. Jika tidak, kekangan kunci utama tidak boleh ditetapkan.

Padamkan kekangan kunci utama

Apabila kekangan kunci utama tidak diperlukan dalam jadual, ia perlu dipadamkan daripada jadual. Adalah lebih mudah untuk memadamkan kekangan kunci utama daripada menciptanya.

Format sintaks untuk memadamkan kekangan kunci utama adalah seperti berikut:

ALTER TABLE <数据表名> DROP PRIMARY KEY;
Salin selepas log masuk

Contoh 5

Padamkan kekangan kunci utama dalam jadual tb_emp2 dan penyataan SQL keputusan adalah seperti berikut.

mysql> ALTER TABLE tb_emp2
    -> DROP PRIMARY KEY;
Query OK, 0 rows affected (0.94 sec)
Records: 0  Duplicates: 0  Warnings: 0
Salin selepas log masuk

由于主键约束在一个表中只能有一个,因此不需要指定主键名就可以删除一个表中的主键约束。

【相关推荐:mysql视频教程

Atas ialah kandungan terperinci Apakah kunci utama dalam mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan