主键使用规则
- 表头值不允许重复,不允许赋NULL值
- 一个表中只能有一个primary key 表头
- 多个表头做主键,称为复合主键,必须一起创建和删除
- 主键标志PRI
- 主键通常与auto_increment连用
- 通常把表中唯一标识记录的表头设置为主键[行号表]
步骤一:练习主键的创建、查看、删除、添加、
验证主键
语法格式1
create table 库.表(
表头名 数据类型 primary key ,
表头名 数据类型 ,
..... );
//建表
//查看表头
语法格式2
create table 库.表(
表头名 数据类型 ,
primary key(字段名)
);
//建表
//查看表头
删除主键命令格式
alter table 库.表 drop primary key ;
//例子
//查看表头
添加主键命令格式
alter table 库.表 add primary key(表头名);
//例子
查看表头
//使用t35表 验证主键约束
步骤二:练习复合主键的使用
//创建复合主键 表头依次是客户端ip 、服务端口号、访问状态
//插入记录验证
//查看记录
//删除复合主键
//查看表头
//没有复合主键约束后 ,插入记录不受限制了
//查看表记录
//添加复合主键时 字段下的数据与主键约束冲突 不允许添加
//删除重复的数据
//添加复合主键
//查看表头
步骤三:练习与auto_increment连用的效果
表头设置了auto_increment属性后,
插入记录时,如果不给表头赋值表头通过自加1的计算结果赋值
要想让表头有自增长 表头必须有主键设置才可以
查看表结构时 在 Extra (额外设置) 位置显示
建表时 创建有auto_increment 属性的表头。实现的效果如下:
行号 姓名 班级 住址
1 bob nsd2107 bj
2 bob nsd2107 bj
3 bob nsd2107 bj
4 bob nsd2107 bj
//建表
//查看表头
//插入表记录 不给自增长表头赋值
//查看表记录
自增长使用注意事项
//给自增长表头赋值
//不赋值后 用最后1条件记录表头的值+1结果赋值
//查看记录
//删除所有行
//再添加行 继续行号 而不是从 1 开始
//查看记录
//truncate删除行 再添加行 从1开始
//插入记录
//查看记录
外键使用规则:
- 表存储引擎必须是innodb
- 表头数据类型要一致
- 被参照表头必须要是索引类型的一种(primary key)
作用:
- 插入记录时,表头值在另一个表的表头值范围内选择。
步骤一:练习外键的创建、查看、删除、添加
//创建外键命令
需求: 仅给公司已有的员工发工资
创建员工表
表名 yg
员工编号 yg_id
姓名 name
创建工资表
表名 gz
员工编号 gz_id
工资 pay
//查看工资表外键
//删除外键
//查看不到外键
//添加外键
//查看外键
步骤二:验证外键功能
- 外键字段的值必须在参考表字段值范围内
- 验证同步更新( on update cascade)
- 验证同步删除( on delete cascade)
1)、外键字段的值必须在参考表字段值范围内
员工表插入记录
工资表插入记录
没有的3号员工 工资表插入记录报错
员工表 插入编号3的员工
可以给3号员工 发工资了
2)、验证同步更新( on update cascade)
查看员工表记录
把yg表里编号是3的改成9
工资表里编号是3的自动变成 9
3)、验证同步删除( on delete cascade)
删除前查看员工表记录
删除编号2的员工
删除后查看
查看工资表也没有编号2的工资了
4)、外键使用注意事项
#被参考的表不能删除
给gz表的gz_id表头 加主键标签
保证每个员工只能发1遍工资 且有员工编号的员工才能发工资