目录
表完整性约束
- 作用:用于保证数据的完整性和一致性
约束条件
- PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标记记录,不可以为空 UNIQUE+NOT UNLL
- FOREIGN KEY (FK) 标记该字段为表的外键,实现表与表之间的关联
- NULL 标记是否允许为空,可以修改
- NOT NULL 标记该字段不能为空,可以修改
- UNIQUE KEY (UK) 标记该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
- AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键)
- DEFAULT 为该字段设置默认值
- UNSIGNED 无符号,正数
1,主键
- 每张表里只能有一个主键,不能为空,而且唯一,主键保证记录的唯一性,主键自动为NOT NULL。
- 一个 UNIQUE KEY 又是一个NOT NULL的时候,那么它被当做PRIMARY KEY主键。
定义主键的两种方式
表存在,添加约束
mysql> alter table t7 add primary key (hostname);
创建表并指定约束
mysql> create table t9(hostname char(20),ip char(150),primary key(hostname));
示例:
mysql> insert into t9(hostname,ip) values('qfedu.com', '10.10.10.11');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t9(hostname,ip) values('qfedu.com','10.10.10.12');
ERROR 1062 (23000): Duplicate entry 'qfedu.com' for key 'PRIMARY'
mysql> insert into t9(hostname,ip) values('qfedu', '10.10.10.11');
Query OK, 1 row affected (0.01 sec)
mysql> select * from t9;
+-----------+-------------+
| hostname | ip |
+-----------+-------------+
| qfedu | 10.10.10.11 |
| qfedu.com | 10.10.10.11 |
+-----------+-------------+
2 rows in set (0.00 sec)
mysql> insert into t9(hostname,ip) values('qfjy', '10.10.10.12');
Query OK, 1 row affected (0.00 sec)
mysql> select * from t9;
+-----------+-------------+
| hostname | ip |
+-----------+-------------+
| qfedu | 10.10.10.11 |
| qfedu.com | 10.10.10.11 |
| qfjy | 10.10.10.12 |
+-----------+-------------+
3 rows in set (0.00 sec)
删除主键
mysql> alter table 库名.表名 drop primary key;