数据备份
先退出mysql环境
数据的导出
备份表:
格式:mysqldump -uroot -p 库名 表名>表名.sql
备份库:
格式: mysqldump -uroot -p 库名>备份文件名.sql
数据的导入
数据的导入:
Mysql -uroot -p 库名 < 备份文件地址.sql
权限管理
用户:链接的账户
权限:语序用户操作的范围
组:权限的集合
修改密码
Mysql 有一个默认的mysql库 有一个user表,这个表中存放的就是咱们用户信息
切换到mysql库中,执行
update user set authentication_string=password(‘123456’) where User=’root’ and host=’localhost’;
重新启动服务
net stop mysql
net start mysql
然后在去连接数据库 此时会发现不输入密码连接会失败,使用密码登录就ok了
如果忘记密码怎么办
- 修改配置文件my.cnf 在mysqld最后一行添加
skip-grant-tables 跳过权限验证 - 重启服务
不用输入密码可以直接登录到数据库
执行修改密码操作 - 把配置文件修改回来
- 重启服务 使用新密码登录即可
创建用户
格式: create user ‘用户名’@‘ip地址’ identified by ‘密码’
创建用户名为lisi 任何位置都可以登录:
Create user ‘lisi’@’%’ identified by ‘123456’
创建用户wangwu 只能本地登录的用户
Create user ‘wangwu’@’localhost’ identified by ‘123456’;
创建用户wzy只能在ip地址为10.10.107.85的设备上链接数据库
create user ‘wzy’@‘10.10.107.85’ identified by ‘123456’;
Window:
Ipconfig 查看ip
给用户授权允许远程连接
格式:grant 权限 on 库名.表名 to 用户名@‘地址’
给lisi添加权限
给李四添加 所有库所有表的 查询权限
Grant select on . to ‘lisi’@’%’
给远程连接的zhaoliu用户添加对demo1数据库下所有表的所有权限
Grant all on demo1.* to ‘zhaoliu’@’%’
删除用户:
格式:drop user ‘用户名’@‘ip地址’
索引
一种高效获取数据的存储结构,类似于子字典的目录
(1:0f000001)
为什么要使用索引:
可以提升查询数据的效率 减少io的操作
创建索引时,数据库会额外的创建一张表,来维护索引,会占用磁盘 的资源,一般索引的空间比数据大
索引一般支持的数据结构,b+tree b-tree 哈希
B+tree的特点:
有三层 分别是 根节点,子节点和叶子节点
对称
根节点不存储数据,数据存储在叶子节点
叶子节点同时保存了写一个数据节点的地址
优缺点:
提升数据的查询速度,减少io操作
缺点维护成本高,会降低其他操作的执行速度
添加索引可以增加查询的速度,但是不是索引越多越好
添加索引一般 是给经常用作where条件的字段添加
最左原则:
Select * from user where username=’zhansgan’ and age=18;
索引分类:
普通索引:index 可以为空 可以重复 当我们使用物理外键时就默认给该字段添加了普通索引
唯一索引:unique 可以为空 不能重复
主键索引:primary key 不能为空且唯一
多列索引:将多个字段绑定到一起添加一个索引 index()
添加索引:
格式:alter table 表名 add 索引类型 【索引名】(字段名);
如果不指定索引的名字,那么索引名就以字段名为准
删除主键索引的格式:
删除主键索引要先将主建索引的自增属性删除 然后才能删除主键索引
Alter table 表名 drop primary key;
查看索引:
格式:show index from 表名;
删除索引:
Drop index 索引的名字 on 表名;
视图
定义:
当查询的复杂度很高时,指多字段,多关系查询,会导致sql语句混乱
是一张虚拟的表,有字段和数据,只存放查询语句
视图有字段有行,但是视图基于源表
特点:
简单:视图构建了一个虚拟的表,表里的数据是来源于复杂的查询语句,我们将复杂的查询语句存入视图,使用是直接调用视图
安全:数据据有对库和表的权限管理,但是没有对字段权限,可以通过视图来实现权限的功能
数据的独立性:
视图基于源表,当源表的结构发生变化时,不会对视图产生影响
使用视图时,一般存的都是复杂的查询,如果存的是简单的查询,在使用视图时,会作为复杂查询来去执行,会降低查询效率
会增加数据库的维护和管理成本,会对数据迁移造成很大影响
创建视图
CREATE VIEW 视图名 AS(查询语句);
查看视图
SHOW TABLE STATUS WHERE COMMENT=’view’;
使用视图
SELECT * FROM 视图名;
删除视图
DROP VIEW 视图名;
触发器:
Trigger
由谁触发:触发器是一个特殊的存储过程,不需要手动触发
什么时候会触发:当我们在做 添加 删除 修改操作时会自动触发触发器
修改数据的默认结束符 ;
\d ||
创建触发器
创建完触发器记得把结束符改回来
使用触发器
查看触发器
select *from information_schema.triggers\G;
删除触发器
Drop trigger 触发器名字
给user表创建一个触发器,当向user表中添加数据时 给userinfo也添加一条数据
CREATE TRIGGER
触发器名字 触发时机 触发事件
ON 表名
FOR EACH ROW
BEGIN
触发器要执行的sql语句
EDN;
CREATE TRIGGER add_user AFTER INSERT
ON user
FOR EACH ROW
BEGIN
INSERT INTO userinfo(name) values(‘沾士干’);
END;
数据备份 当我们删除user表中的数据时 将删除的数据备份的 back_user表中
Create trigger back_data before delete on user for each row
Begin
Insert into back_user values(old.id,old.name,old.age,old.gender,old.phone,old.address);
end
事物的基本操作:
Begin 开启一个事物
Commit 提交事物
Rollback 回滚
来源:https://blog.csdn.net/weixin_44228228/article/details/100085065