mysql建表中的约束
1.主键约束:
它能够唯一确定一张表中的一条记录,增加主键约束之后,就可以使得字段不重复而且不为空
create table user(
id int PRIMARY KEY,
name VARCHAR(20)
);
INSERT INTO user VALUES (1,'张三');
+----+------+
| id | name |
+----+------+
| 1 | 张三 |
+----+------+
运行DESCRIBE user;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
- 发现 id是不可以为null 而且 key的值 也变为:PRI(primary)
2.复合主键:
CREATE TABLE user2(
id INT,
name VARCHAR(20),
password VARCHAR(20),
PRIMARY key(id,name)
);
运行DESCRIBE user2;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | PRI | NULL | |
| password | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
INSERT INTO user2 VALUES (1,'老王','123456');
INSERT INTO user2 VALUES (2,'老王','123456');
+----+------+----------+
| id | name | password |
+----+------+----------+
| 1 | 老王 | 123456 |
| 2 | 老王 | 123456 |
+----+------+----------+
- 说明了复合主键只要所有的字段都不是相同的情况下可以允许其中的字段重复:
INSERT INTO user2 VALUES (1,‘老李’,‘123456’);
SELECT * FROM user2;
+----+------+----------+
| id | name | password |
+----+------+----------+
| 1 | 老李 | 123456 |
| 1 | 老王 | 123456 |
| 2 | 老王 | 123456 |
+----+------+----------+
- 场景:表中有班级号以及学生座位号,我们可以用班级号+学生的座位号可以准确的定位一个学生,如:(1班5号可以准确的确定一个学生)
3.自增约束:
CREATE TABLE user3(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);
运行DESCRIBE user3;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
INSERT INTO user3(name) VALUES('张三');
INSERT INTO user3(name) VALUES('李四');
+----+------+
| id | name |
+----+------+
| 1 | 张三 |
| 2 | 李四 |
+----+------+
没有自定义id值 但是自动生成了id
4.唯一约束:
CREATE TABLE user5(
id INT PRIMARY KEY AUTO_INCREMENT,
name