索引是什么
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
更通俗的说,数据库索引好比是字典前面的目录,能加快数据库的查询速度
索引目的
索引的目的在于提高查询效率
视图和索引的目的:方便查找
原理
通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据。
哪些情况需要创建索引
数据量很大而且这个字段经常查
查询添加索引与不添加索引的效率
-- 开启运行时间监测:
set profiling=1;
-- 查找第1万条数据ha-99999
select * from test_index where title='ha-99999';
-- 查看执行的时间:
show profiles;
为表title_index的title列创建索引:
createindextitle_indexontest_index(title(10));
执行查询语句:
select*fromtest_indexwheretitle='ha-99999';
再次查看执行的时间
showprofiles;
数据库的索引(分段查询)
B树
索引的使用
-- 查看索引
show index from 表名;
-- 创建索引
如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
字段类型如果不是字符串,可以不填写长度部分
create index索引 名称 on 表名(字段名称(长度))
-- 删除索引:
drop index 索引名称 on 表名;
账户管理
目的:保证数据库的安全性和稳定性
注意:
1)进行账户操作时,需要使用root账户登录,这个账户拥有最高的实例级权限
2)通常都使用数据库级操作权限
授予权限:
1、查看所有用户
所有用户及权限信息存储在mysql数据库的user表中
mysql不能随便使用
user表--root信息
查看user表的结构
desc user;
select user,host from user; #前面user,host字段,后面的user是表
user的一列----可以登录mysql的用户
host--可以通过哪个地方登陆
localhost---只能在本地电脑登录(想登录其他人的,知道密码也不能登录)
root-localhost---往里面添加新的用户
host一列中的%表示可以在任何地方可以登录
authentication_string表示密码,为加密后的值
2、创建账户&授权
创建的前提:必须以root管理员账户登录
在公司是被授权,尽量不直接用root用户
-- 创建账户并授予所有权限
grant select on aashford.* to 'laoweng'@'localhost' identified by 'xxxx';
只授予了查询权限,更新,删除都不可以
创建一个laoli的账号,密码为12345678,可以任意电脑进行链接访问, 并且对aashford数据库中的所有表拥有所有权限
grant all privileges on aashford.* to "laoli"@"%" identified by" 12345678";
账户操作
1. 修改权限
grant 权限名称 on 数据库 to 账户@主机 with grant option;
-- 刷新权限
flush privileges;
2、修改密码
使用root登录,修改mysql数据库的user表
使用password()函数进行密码加密
update user set authentication_string=password('新密码') where user='用户名';
注意修改完成后需要刷新权限
刷新权限:flushprivileges
3、远程登录慎用
数据库别用远程登录,用SSH链接(几乎无法破解)
4.、删除账户
语法1:使用root登录(推荐使用)
drop user '用户名'@'主机';
例:drop user 'laoweng'@'%';
语法2:使用root登录,删除mysql数据库的user表中数据
delete from user where user='用户名';
例:delete from user where user='laoweng';
-- 操作结束之后需要刷新权限
flush privileges