索引
索引的树形结构,快速找到对应的叶子节点,从硬盘全部读取到内存
添加索引:
添加主键索引(聚集索引):
创建的时候添加:添加索引的时候要注意,给字段里面数据大小比较小的字段添加,给字段里面的数据区分度高的字段添加
聚集索引的添加方式(每个表中有且只有一个,在设计数据库时添加,建表时效率高)
Create table t1( Id int primary key); Create table t2( Id int Primary key(id));
创建完表之后添加
Alter table t1 add primary key(id);
删除
Alter table t1 drop primary key;
辅助索引:查询时为用到主键索引对应的字段,为了加速查询采取辅助索引
唯一索引
Create table t1( Id int unique); Create table t2( Id int unique key(id));
创建完表之后添加
Alter table s1 add unique key u_email(email);
删除 1)alter table s1 drop index u_email;
2)drop index uni_name on t1;
普通索引
Create table t1( Id int, Index index_name(id)); Create index index_name on s1(id); Alter table s1 add index index_s1(name) --建表后增加辅助索引
删除: 1)drop index index_s1 on s1;
2)Alter table s1 drop index u_email;
保证查询速度,最好在数据上进行4则运算,不要再字段上进行运算
联合索引与覆盖索引
和普通索引享同,就是加多个索引字段(最左匹配特性)
create table t1(
Id int,
Name char(10),
Unique key index_name(id,name)
);
将数据大小小的,区别度高的字段,放到最前面
Where id=10,name=’xxx’;
Where name = ‘xxxx’;用不到联合索引
Sql优化神器explain
Explain + 查询语句 ; (预执行)
返回语句的查询情况(rows…)
有索引查询
无索引查询
数据备份(逻辑备份,物理备份)
备份: C:Usersgrace>Mysqldump -h 127.0.0.1 -P 3306 -u root -p12345 db1 > C:UsersgraceDesktoppythonfdb1.sql
恢复备份: C:Usersgrace>Mysql -h 127.0.0.1 -P 3306 -u root -p12345 db1 < C:UsersgraceDesktoppythonfdb1.sql
-B参数(直接恢复,不需要重新创建库)
多个库备份,直接空格连接即可
备份: C:Usersgrace>Mysqldump -h 127.0.0.1 -P 3306 -u root -p12345 -B db1 db2 > C:UsersgraceDesktoppythonfdb1.sql
恢复备份: C:Usersgrace>Mysql -h 127.0.0.1 -P 3306 -u root -p12345 < C:UsersgraceDesktoppythonfdb1.sql
创建用户,指定权限(权限管理)
1. 创建用户
--指定ip的用户登录 create user 'grace'@'192.168.1.1' identified by '123'; --指定ip开头的用户登录 create user 'grace'@'192.168.1.%' identified by '123'; --指定任何ip的用户登录 create user 'grace'@'%' identified by '123';
2. 删除用户
Drop user 'username'@'IP';
3. 修改用户
Rename user 'username'@'IP' to 'newname'@'newIP';
4. 修改密码
set password for 'username'@'IP'=Password('newpwd');
5. 修改权限
--查看权限 show grants for 'username'@'IP'; --授权用户仅对db1.t1文件有查询插入和更新的操作 grant select,insert,update on db1.t1 to 'username'@'%'; --表示文件所有权限 grant all privileges on db1.t1 to 'username'@'%'; --表示用户对所有数据库中文件有任何操作 grant all privileges on *.* to 'username'@'%'; --取消权限 --取消用户对db1的t1文件的任意操作 revoke all on db1.t1 from 'username'@'%'; --取消用户对db1所有表的权限 revoke all on db1.* from 'username'@'%'; --取消用户的所有表权限 revoke all privileges on *.* from 'username'@'%';
Flush privileges; # 操作完刷新生效