mysql如何添加主键?
主键约束即在表中定义一个主键来唯一确定表中每一行数据的标识符。主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则:
● 每个表只能定义一个主键。
● 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在两行数据有相同的主键值。这是唯一性原则。
● 一个列名只能在复合主键列表中出现一次。
● 复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则。
1、在创建表时添加主键约束
在 CREATE TABLE 语句中,主键是通过 PRIMARY KEY 关键字来指定的。
在定义列的同时指定主键,语法规则如下:
<字段名> <数据类型> PRIMARY KEY [默认值]
例:在 test_db 数据库中创建 tb_emp 1 数据表,其主键为 id
mysql> CREATE TABLE tb_emp1 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp1; +--------+-------------+------+-----+---------+-------+ | 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 [字段名]
示例:在 test_db 数据库中创建 tb_emp 2 数据表,其主键为 id
mysql> CREATE TABLE tb_emp2 -> ( -> 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_emp2; +--------+-------------+------+-----+---------+-------+ | 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、在创建表后添加主键约束
创建表后,可以在修改数据表时添加主键约束,语法规则为:
ALTER TABLE <数据表名> ADD PRIMARY KEY(<列名>);
示例:修改数据表 tb_emp3,将字段 id 设置为主键
mysql> ALTER TABLE tb_emp3 -> ADD PRIMARY KEY(id); Query OK, 0 rows affected (0.94 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC tb_emp3; +--------+-------------+------+-----+---------+-------+ | 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)
3、设置复合主键
也可以在创建表时添加复合主键,此时主键由多个字段联合组成,语法规则如下:
PRIMARY KEY [字段1,字段2,…,字段n]
示例:创建数据表 tb_emp4,假设表中没有主键 id,为了唯一确定一个员工,可以把 name、deptId 联合起来作为主键
mysql> CREATE TABLE tb_emp4 -> ( -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> PRIMARY KEY(id,deptId) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp4; +--------+-------------+------+-----+---------+-------+ | 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)
以上就是mysql如何添加主键?的详细内容,更多请关注其它相关文章!
上一篇: js中怎么写ajax
下一篇: Sysbench多线程性能测试工具
推荐阅读
-
解决方案-如何关闭mysql访问权限?
-
PHP+MYSQL插入数据 检查是否重复,该如何解决
-
如何直接在浏览器内运行SQL命令_MySQL
-
这条简单的mysql的排序如何提高效率? [
-
mysql_fetch_row(): supplied argument is not a valid MySQL result resource,何人能解?该如何解决
-
获得的数据如何存不数据库(mysql)里,与数据库端口?请高人指点,多谢
-
在Ubuntu下的MySQL数据库如何更改存储位置_MySQL
-
如何找出消耗cup的进程信息和执行的语句_MySQL
-
mysql根据俩个字段,时间范围和精确时间,我想在添加精确时间后,时间范围自动添加上。
-
安装MySQL时如何选择安装软件包_MySQL