索引的相关概念:
数据结构,设置在表头上,给表头下存储的数据生成排队信息,保存在表对应的文件里(/var/lib/mysql/库名/表名.ibd),类似于书的目录
给表头? 加索引的目的 为了加快 查找数据的速度!!!!
排队信息占物理硬盘,insert update delete 变慢
```
书的目录(新华字典)
笔画? 10画? 起始页 ------结束页
部首
拼音
```
表头下有MUL时是可以实现排序,算法,支持的排序算法,
索引算法:
有三种哦.:hash,Btree(二杈树),B+tree
show index from 库.表;?? 该命令查看表是否具有MUL;生成排队信息的适合.用的是那种算法;
索引类型:
??????? 唯一索引???? unique
??????? 主键?????? ? ?? primary? key
??????? 外键??????????? foreign key
??????? 普通索引???? index
??????? 全文索引???? fulltext??? (char,varchar)
??????? 单列索引???? 一个表头生成独立的索引信息
??????? 多列索引???? 多个表头一起生成排队信息
使用普通索引:
??????? 创建? create
????????查看 MUL?? show index from **;? desc? 库.表. Table:表名? Colum_name:表头名? Key_name:索引名 (默认索引名和表头名相同)? Index_type:索引算法
? ????? 删除?? drop index? 表头 on 库.表;
?????? 添加? create index 索引名 on on 库.表(表头名);
验证索引: explian
explian select 表头名 from 库.表 where 筛选条件;
建表三范式:衡量表创建的是否合理的标准
三范式是关系数据库设计的一种规范化范式,主要是为了避免数据冗余和数据插入、删除、更新异常。
第一范式(1NF):确保每个列都是原子的,即每个列都不能再分解成其他列。每个表中的每个字段都应该只包含一个值。
第二范式(2NF):确保非主键列完全依赖于主键,并且没有部分依赖。也就是说,每个非主键列必须完全依赖于主键,而不是仅依赖于主键的一部分。
第三范式(3NF):确保非主键列之间没有传递依赖。也就是说,一个非主键列不能依赖于另一个非主键列。
1NF:表头要满足原子性
2NF: 1NF+2NF表里一定要有主键
3NF: 1NF+2NF+3NF 表头下的数据不能有传递依赖
用户管理:
在数据库服务器里 添加用户? 并授予权限
添加的用户是给网站使用
创建用户?? create user
create user 用户名@"客户端地址"? identified by "密码";
授予权限? grant
grant 权限列表? on 库名 to 用户名@"客户端地址";
select insert drop create uodate
grant all on 表名
客户端使用添加的用户连接数据库服务器的命令
mysql -h数据库服务器ip? 地址 [-P端口号]? -u用户名? -p密码;
grant all? on *.* to admin@"%";
show grants;查看权限select user();查看登录的用户
给已有的用户追加权限
create user webuser@"192.168.88.51" identified by "123456";
grant select on 库名.* to webuser@"192.168.88.51"
创建的用户?? 和? 授予权限? 存放在 默认的库mysql
tables_priv
查看已有用户的权限
select host,user from mysql.user;
show grants for admin@"%";
show grants for webuser@"192.168.88.51";
修改用户登录密码:
撤销权限: revoke? 权限列表 on 库名 from 用户名@"客户端地址";
删除用户 drop user 用户名@"客户端地址";