7.索引
MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构。提取句子主干就可以得到索引的本质:索引是数据结构。
7.1索引的分类
在一个表中,主键的列只能有一个,唯一索引可以有多个
主键索引(PRIMARY KEY)
唯一标识,主键不可重复,只能有一个列作为主键
唯一索引(UNIQUE KEY)
避免重复的列出现,唯一索引可以重复,多个列都可以标识位 唯一索引
常规索引(KEY/INDEX)
默认的,index。key关键字来设置
全文索引(FullText)
在特定的数据库引擎下才有,MulSAM
快速定位数据
-- ========================7.1索引分类=============================
-- 索引的使用
-- 1、在创建表的时候给字段增加索引
-- 2、创建完毕后,增加索引
-- 显示所有的索引信息
SHOW INDEX FROM student
-- 增加一个全文索引索引名(列名)
ALTER TABLE school.`student` ADD FULLTEXT INDEX (`studentname`);
-- EXPLAIN 分析sql执行的状况,查看查了多少条数据出的结果
EXPLAIN SELECT * FROM student; -- 非全文索引
EXPLAIN SELECT * FROM student WHERE MATCH(studentname) AGAINST('李');
7.2测试索引
索引在小数据量的时候,用处不大,但是在大数据量的时候,区别十分明显
– 增加一个常规索引
– CREATE INDEX 索引名(格式:id_表名_字段名) on 表名(字段);
CREATE INDEX id_app_user_name ON app_user(name
);
EXPLAIN SELECT * FROM app_user_ WHERE name
= ‘用户9999’; – 分析查询这个数据用了多少行
7.3索引原则
· 索引不是越多越好
· 不要对经常变动的数据加索引
· 小数据量的表不需要加索引
· 索引一般加在常用来查询的字段上
索引的数据结构
Hash 类型的索引
Btree:InnoDB 的默认数据结构
阅读:http://blog.codinglabs.org/articles/theory-of-mysql-index.html
8、权限管理和备份
8.1、用户管理
SQL yog可视化管理
SQL 命令操作
用户表:mysql.user
本质:对这张表增删改查
-- ==================8.权限管理和备份=======================
-- 创建用户:CREATE USER 用户名 IDENTIFIED BY '密码'
CREATE USER mai IDENTIFIED BY '123456'
-- 修改密码(修改当前用户密码)
SET PASSWORD = PASSWORD('123456')
-- 修改密码(修改指定用户密码)
SET PASSWORD FOR mai = PASSWORD('111111')
-- 重命名 RENAME USER 原来名字 TO 新的名字
RENAME USER mai TO maishuzhou
-- 用户授权 ALL PRIVILEGES 全部的权限,除了(GRANT)给别人授权其他都能干
-- *.*针对所有的表
GRANT ALL PRIVILEGES ON *.* TO maishuzhou
-- 查询权限
SHOW GRANTS FOR maishuzhou
-- 撤销权限 REVOKE
REVOKE ALL PRIVILEGES ON *.* FROM maishuzhou
-- 删除用户
DROP USER maishuzhou
8.2、MySQL备份
为什么要备份:
保证重要数据不丢失
数据转移
MySQL数据库备份的方式:
直接拷贝物理文件
在SQLyog这种可视化工具中手动导出
右键数据库/表,选择备份
使用命令行:mysqldump 导出
导出一张表:
#mysqldump -h主机 -u用户名 -p密码 数据库 表名 > 物理磁盘位置/文件名
mysqldump -hlocalhost -uroot -p123456 school student >G:/a.sql
导出多张表:
#mysqldump -h主机 -u用户名 -p密码 数据库 表1 表2 表3 > 物理磁盘位置/文件名
mysqldump -hlocalhost -uroot -p123456 school student result subject >G:/b.sql
导出一个数据库:
#mysqldump -h主机 -u用户名 -p密码 数据库 > 物理磁盘位置/文件名
mysqldump -hlocalhost -uroot -p123456 school >G:/c.sql
导入一张表:
mysql -uroot -p123465
use school;
source g:/a.sql
或
musql -u用户名 -p密码 库名 < 备份文件