高级表头制约
主键
- 表头值不允许重复,不允许赋NULL值
- 一个表中只能有一个primary key 表头
- 多个表头做主键,称为复合主键,必须一起创建和删除
- 主键标志PRI
- 主键通常与auto_increment连用
- 通常把表中唯一标识记录的表头设置为主键[行号表]
create table 库.表(
表头名 数据类型 primary key ,
表头名 数据类型 ,
..... );
删除主键命令格式 alter table 库.表 drop primary key ;
添加主键命令格式 alter table 库.表 add primary key(表头名);
复合主键
多个表头一起做主键,符合主键值不同时重复即可
必须一起创建 添加,删除
添加复合主键命令格式 alter table 库.表 add primary key(表头名,表头名);
与auto_increment连用
要想让表头有自增长 表头必须有主键设置才可以
primary key auto_increment
/truncate删除行 再添加行 从1开始
外健 foreign key
- 表存储引擎必须是innodb
- 表头数据类型要一致
- 被参照表头必须要是索引类型的一种(primary key)
- create table 库.表(表头列表 数据类型,
- foreign key(表头名) #指定外键
- references 库.表(表头名) #指定参考的表头名
- on update cascade #同步更新
- on delete cascade #同步删除
- )engine=innodb;
mysql 索引
普通索引的使用 index
创建索引: CREATE TABLE 库.表 (
字段列表,
index(表头),);
desc 库.表 ; 查看是否有索引
show index from 库.表 \G ; 查看索引详细信息
已有表添加索引命令 create index mingzi on db1.t2(name)
建表三范式
设计存储学生信息表
要几张表: 每张仅存储一类数据信息
用户管理(用户授权)
1 创建用户
create user 用户名@“客户端地址” identified by "密码";
2授予权限 grant
grant 权限 on 库.表 to 用户名@“客户端地址”;
show grants for yaya@"192.168.88.51"; 已有用户的访问权限
追加权限: grant delete,update on tarena.* to yaya@"localhost";
撤销权限: revoke 权限 on 库名 from yaya@"localhost";
删除用户: drop user 用户名@“客户端地址”
修改客户密码:set password for admin2@"%"="654321";
update mysql.db set insert_priv="y",Update_priv="y" where user="admin2";
修改授权库下表里记录 改变用户权限
flush privileges; 更新权限
show grants for admin2@"%"; 查看权限