ホームページ >データベース >mysql チュートリアル >mysqlで主キーを設定するのは何の役に立つのでしょうか?

mysqlで主キーを設定するのは何の役に立つのでしょうか?

coldplay.xixi
coldplay.xixiオリジナル
2020-08-25 10:04:493459ブラウズ

Mysql は主キーを次のように設定します: 1. テーブル内の各行を一意に識別し、それによってテーブルのエンティティの整合性を強制できます; 2. 主に他のテーブルとこのレコードの外部キーの関連付けに使用されます。変更と削除。

mysqlで主キーを設定するのは何の役に立つのでしょうか?

[関連する学習の推奨事項: mysql チュートリアル ]

mysql で主キーを設定する関数

1. 主キーとは何ですか?

データベースの主キーは、1 つの列または複数の列の組み合わせを指します。その値により、テーブル内の各行を一意に識別できます。また、テーブルの一貫性、エンティティの整合性を強制することができます。主キーは主に、他のテーブルの外部キーの関連付けや、このレコードの変更や削除に使用されます。

2. 主キーの役割

主キーは、レコードを決定できる一意の識別子です。主キー フィールドは一意である必要があり、空であってはなりません。テーブル内の 1 つの主キーになります。主キーには 1 つまたは複数のフィールドを含めることができます。

たとえば、レコードには ID 番号、名前、年齢、学校、国籍、性別などが含まれます。個人を特定できるのはID番号のみであり、他と重複する可能性があるため、ID番号が主キーとなります。

3. MySQL は主キーのないテーブルを作成します

[root@node110 ~]# mysql -uroot -pyinzhengjie
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.14 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 
mysql> 
mysql> CREATE DATABASE devops CHARACTER SET = utf8;
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> 
mysql> 
mysql> use devops
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> 
mysql> CREATE TABLE students(stu_id INT(11),stu_name VARCHAR(50),gender INT(11));      #首先,我们这里只是创建了一张极为普通的表。
Query OK, 0 rows affected (0.01 sec)
mysql> 
mysql> INSERT INTO students VALUES(1,'jason',10);                          #插入第一条数据
Query OK, 1 row affected (0.00 sec)
mysql> 
mysql> INSERT INTO students VALUES(2,'danny',20);                          #插入第二条数据
Query OK, 1 row affected (0.01 sec)
mysql> 
mysql> INSERT INTO students VALUES(1,'jenny',30);                           #插入第三条数据,注意!这个id和第一条插入的数据是相同的,别问我为什么这么干,我是故意这样搞的!
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> SELECT * FROM students;                                      #我们查询咱们刚刚插入的三条数据
+--------+----------+--------+
| stu_id | stu_name | gender |
+--------+----------+--------+
|      1 | jason    |     10 |
|      2 | danny    |     20 |
|      1 | jenny    |     30 |
+--------+----------+--------+
3 rows in set (0.00 sec)
mysql>

4. 主キー (student_primary) のあるテーブルを作成します

mysql> CREATE TABLE student_primary(stu_id INT(11) PRIMARY KEY AUTO_INCREMENT,stu_name VARCHAR(50),gender INT(11));        #仔细一下这个建表语句,除了和上面的表名不同,我还为stu_id字段加了主键属性,以及自动增长的属性!
Query OK, 0 rows affected (0.01 sec)
mysql> 
mysql> INSERT INTO student_primary VALUES(1,'json',10);                 #这里我们插入第一条数据
Query OK, 1 row affected (0.00 sec)
mysql> 
mysql> INSERT INTO student_primary VALUES(2,'danny',20);                #这里我们插入第二条数据
Query OK, 1 row affected (0.01 sec)
mysql> 
mysql> INSERT INTO student_primary VALUES(1,'jenny',30);                  #这里我们插入第三条数据时,报错啦!提示主键重复!
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> 
mysql> 
mysql> SELECT * FROM student_primary;                            #我们查看表中的数据,果不其然,只有两条数据!第三条数据没有被插入进来,因为它不符合我们定义的主键规则!主键必须唯一且非空!
+--------+----------+--------+
| stu_id | stu_name | gender |
+--------+----------+--------+
|      1 | json     |     10 |
|      2 | danny    |     20 |
+--------+----------+--------+
2 rows in set (0.00 sec)
mysql>

5. 主キーのあるテーブルを作成しますキーテーブル(コース)

mysql> CREATE TABLE course(id INT(11) PRIMARY KEY AUTO_INCREMENT,course_name VARCHAR(30));          
Query OK, 0 rows affected (0.02 sec)
mysql> 
mysql> INSERT INTO course VALUES(1,'Chinese');                                     #插入第一条数据
Query OK, 1 row affected (0.01 sec)
mysql> 
mysql> INSERT INTO course VALUES(2,'English'); 
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO course VALUES(3,'Mathematics'),(4,'Physics'),(5,'Chemistry'),(6,'Biology');        #咱们可以同时插入多条数据
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> 
mysql> SELECT * FROM course;
+----+-------------+
| id | course_name |
+----+-------------+
|  1 | Chinese     |
|  2 | English     |
|  3 | Mathematics |
|  4 | Physics     |
|  5 | Chemistry   |
|  6 | Biology     |
+----+-------------+
6 rows in set (0.00 sec)
mysql>

以上がmysqlで主キーを設定するのは何の役に立つのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。