ホームページ >データベース >mysql チュートリアル >mysqlの主キーの非null制約を設定するにはどうすればよいですか?
mysql では、「CREATE TABLE」ステートメント内の「1c251b90ec225afbdd1a30b33733cad2 d917f957b009fa8ea73db043073ffd0e PRIMARY KEY [デフォルト値]」ステートメントを使用し、「5e10dbd5c5222727175cb91fe4f7be55 7b1ad39c9b8f271c99f3eef7d5fa35ab NOT NULL」ステートメントを使用して、非 null 制約を設定します。
##mysql 主キー制約 PRIMARY KEY の正式名称は「主キー制約」で、MySQL で最もよく使われる制約です。通常の状況では、DBMS がテーブル内のレコードをより速く検索できるようにするために、テーブルに主キーが設定されます。
主キーを使用する場合は、次の点に注意する必要があります。
データ テーブルの作成時に主キー制約を設定します。主キー制約も設定できます。テーブル内のフィールドのキー。テーブル内の複数のフィールドに共通の主キーを設定することもできます。ただし、どの方法を使用する場合でも、テーブル内に存在できる主キーは 1 つだけです。単一フィールドの主キーと複数フィールドの結合主キーの設定方法を説明します。
1) 単一フィールドの主キーを設定するCREATE TABLE ステートメントで、PRIMARY KEY キーワードを使用して主キーを指定します。 フィールドを定義するときに主キーを指定します。構文形式は次のとおりです:<字段名> <数据类型> PRIMARY KEY [默认值]例 1test_db データベースに tb_emp3 データ テーブルを作成します。 is id、SQL文、実行結果は以下の通りです。
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)または、すべてのフィールドを定義した後に主キーを指定します。構文形式は次のとおりです:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]例 2test_db データベースに tb_emp4 データ テーブルを作成し、主キーは id で、SQL ステートメントと実行結果は次のとおりです。
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)2) テーブル作成時に結合主キーを設定するいわゆる結合主キーとは、主キーがテーブル内の複数のフィールドで構成されることを意味します。 たとえば、学生のコース選択データ テーブルを設定する場合、学生番号を主キーとして使用する必要がありますか、それともコース番号を主キーとして使用する必要がありますか?学生番号を主キーとして使用する場合、学生は 1 つのコースのみを選択できます。コース番号を主キーとして使用する場合、コースを選択できるのは 1 人の学生だけです。明らかに、これらの状況はどちらも非現実的です。 実際、学生のコース選択スケジュールを設計する際、学生は同じコースを 1 回しか選択できないという制限があります。したがって、学生番号とコース番号を主キーとしてまとめることができ、これが結合主キーになります。 主キーは複数のフィールドで構成されています。構文形式は次のとおりです:
PRIMARY KEY [字段1,字段2,…,字段n]注: 主キーが複数のフィールドで構成されている場合、主キー制約を直後に宣言することはできません。フィールド名。 例 3データ テーブル tb_emp5 を作成します。テーブルに主キー ID がないと仮定します。従業員を一意に識別するために、主キーとして name と deptId を組み合わせることができます。 . SQL文と実行結果は以下の通りです。
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)
テーブル変更時に主キー制約を追加する
主キー制約は、テーブルの作成時に作成できるだけでなく、テーブルの作成時にも追加できます。変更されました。ただし、主キー制約として設定されたフィールドでは null 値は許可されないことに注意してください。
データ テーブルを変更するときに主キー制約を追加するための構文形式は次のとおりです:ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>);tb_emp2 データ テーブルのテーブル構造を表示します。SQL ステートメントと実行結果は次のとおりです。
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)例 4データ テーブル tb_emp2 を変更し、フィールド ID を主キーとして設定する SQL ステートメントと実行結果は次のとおりです。
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)通常、テーブルを変更するときにテーブル内のフィールドの主キー制約を設定する場合は、主キー制約として設定されたフィールドの値が重複できないことを確認する必要があります。空であってはなりません。そうしないと、主キー制約を設定できません。 mysql 非 null 制約
MySQL の非 null 制約 (NOT NULL) は、フィールドの値を null にすることができないことを意味します。非 NULL 制約を使用するフィールドの場合、データを追加するときにユーザーが値を指定しないと、データベース システムはエラーを報告します。これは、CREATE TABLE または ALTER TABLE ステートメントを使用して実現できます。テーブル内の列の定義の後に修飾子としてキーワード NOT NULL を追加して、列の値が空にならないように制限します。
たとえば、ユーザー情報テーブルでユーザー名が追加されていない場合、このユーザー情報は無効になりますが、このとき、ユーザー名フィールドに非null制約を設定できます。
テーブルの作成時に非 null 制約を設定する
テーブルの作成時に NOT NULL キーワードを使用して、非 null 制約を設定できます。具体的な構文形式は次のとおりです。
<字段名> <数据类型> NOT NULL例 1データ テーブル tb_dept4 を作成します。指定された部門名は空にすることはできません。SQL 文と実行結果は次のとおりです。
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)
在修改表时添加非空约束
如果在创建表时忘记了为字段设置非空约束,也可以通过修改表进行非空约束的添加。
修改表时设置非空约束的语法格式如下:
ALTER TABLE <数据表名> CHANGE COLUMN <字段名> <字段名> <数据类型> NOT NULL;
例 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)
推荐教程:mysql视频教程
以上がmysqlの主キーの非null制約を設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。