主键
This commit is contained in:
@@ -15,3 +15,59 @@
|
|||||||
```sql
|
```sql
|
||||||
insert into class(name,sex,age) value("李四","男",21);
|
insert into class(name,sex,age) value("李四","男",21);
|
||||||
```
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
现在添加进去了,但是如果我想让10岁的李四的年龄改成11,那么我们应该怎么改呢?现在只有他的年龄是10,我们可以直接使用年龄来修改
|
||||||
|
|
||||||
|
```sql
|
||||||
|
updaet class set age = 11 where age = 10;
|
||||||
|
```
|
||||||
|
|
||||||
|
但是如果又来了一个同学年龄又是10,是不是更难确定到一行的数据了。
|
||||||
|
|
||||||
|
再极端一点 名字性别年龄都是一样的,那么是不是就无法区分这两行数据了。
|
||||||
|
|
||||||
|
所以有个很重要的约束,就是任意两条记录不能重复。不能重复不是指两条记录不完全相同,而是指能够通过某个字段唯一区分出不同的记录,这个字段被称为主键。
|
||||||
|
|
||||||
|
例如,假设我们把name字段作为主键,那么通过名字小明或小红就能唯一确定一条记录。但是,这么设定,就没法存储同名的同学了,因为插入相同主键的两条记录是不被允许的。
|
||||||
|
|
||||||
|
对主键的要求,最关键的一点是:记录一旦插入到表中,主键最好不要再修改,因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响。
|
||||||
|
|
||||||
|
所以,选取主键的一个基本原则是:不使用任何业务相关的字段作为主键。
|
||||||
|
|
||||||
|
因此,身份证号、手机号、邮箱地址这些看上去可以唯一的字段,均不可用作主键。
|
||||||
|
|
||||||
|
作为主键最好是完全业务无关的字段,我们一般把这个字段命名为id。
|
||||||
|
|
||||||
|
而且主键一般都是自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键
|
||||||
|
|
||||||
|
所以下面将看一下如何定一一个带有主键的表,和什么叫自增。
|
||||||
|
|
||||||
|
## 定义一个含有主键的表
|
||||||
|
|
||||||
|
前面我们创建的class表并没有主键,那么我们如何创建一个带有主键的表呢?
|
||||||
|
|
||||||
|
比如要创建一个名字叫 `articles` 的表,表的结构像下面一样
|
||||||
|
|
||||||
|
| id | name | author |
|
||||||
|
|----|-----|-----|
|
||||||
|
|
||||||
|
- id 作为主键
|
||||||
|
- name 放文章的名字
|
||||||
|
- author 放作者的名字
|
||||||
|
|
||||||
|
```sql
|
||||||
|
create table articles(
|
||||||
|
id int auto_increment,
|
||||||
|
name varchar(100),
|
||||||
|
author varchar(10),
|
||||||
|
primary key(id)
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
创建成功了,查看一下
|
||||||
|
|
||||||
|

|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
Reference in New Issue
Block a user