MySQL的备份与还原与索引、视图、存储过程与权限
2017-02-23 23:40
507 查看
以下命令是在cmd中进行
1、MySQL的备份与还原
1.1备份数据库
mysqldump --no-defaults -u 用户名 -p --databases 要备份的数据库 > 备份路径
--no-defaults 有些版本需要,有些不要,备份路径一定要在本地磁盘有该路径,注意路径的书写
1. 2还原数据库
mysql -u 用户名 -p < 当时的备份文件路径
-p后面可以直接跟上密码
1. 3备份数据表
mysqldump --no-defaults -u 用户名 -p 数据库 要备份的表 > 备份路径
1.4还原数据表
mysql -u 用户名 -p 还原表所属的数据库 < 备份路径
//在数据库中的 mysql数据库下操作
2、用户与权限(DCL)
1.创建用户
create user '用户名'@'主机IP' identified by '密码';
注意:如果要让该用户在每台机器上都能登录,则主机IP为'%'。
2.1.授予用户权限
grant update|insert|alter... on 数据库名.数据表名 to '用户名'@'主机IP';
2.2.收回用户权限
revoke 权限 on 数据库名.数据表名 from '用户名'@'主机IP';
2.3.删除用户
delete from user where user='用户名';
3索引(index)
分析查询语句:explain select * from 表 [where ...];
索引主要用来提高检索(select)效率。
创建普通索引的语法:
create index 索引名称 on 表名称(字段名列表);
注意:创建索引字段时,应该选择那些查询条件经常会使用到的字段。
查看索引:
show index from 表名称 \G;
删除索引:
drop index 索引名称 on 表名称;
以下情况不会使用到索引:
1.模糊查询时,%出现在第一个匹配位置时索引不会被用到。
2.当使用多个字段共同创建索引时,只有第一个字段被使用时会用到索引,其它
字段不会使用到索引。
补充:唯一索引(也叫唯一约束)unique
create table stu(
id int primary key auto_increment,
name varchar(10) unique,
score double unique
);
主键约束与唯一约束的共同点与不同点:
共同点:值不能重复。
不同点:主键值不能为null,且每个表最多只能有一个主键。
唯一约束的列值可以为null,且每个表可以有多个唯一索引(约束)。
4视图(view)
视图是一个查询结果集。方便多次使用该结果集。可以将视图作为一张逻辑表。
create view 视图名称
as
(select查询语句);
举例:
create view emp_view
as
(
select emp.e_name, emp.e_job,dept.d_name from employee as emp
inner join dept on emp.dept_no=dept.d_no
);
5存储过程(Storage Procedure)
一些简单的存储过程
delimiter //
mysql默认的结束是;,用delimiter修改
create procedure 存储过程名(参数类型 参数名称 参数数据类型)
begin
存储过程体
end //
参数类型:
in(输入参数类型,默认参数类型)
out(输出参数类型)
inout(输入输出参数类型)
eg: in(输入参数类型,默认参数类型)
delimiter //
create procedure proc_select(stuid int)
begin
select id as 学号,name as 姓名,age as 年龄,score as 成绩,remark as 备注
from student where id=stuid;
end //
eg: out(输出参数类型)
delimiter //
create procedure proc_out(out count int)
begin
select count(*) into count from student;
end //
call proc_out(@x) //
select @x //
eg:inout(输入输出参数类型)
delimiter //
create procedure proc_inout(inout info varchar(20))
begin
select remark into info from student where name=info;
end //
set @y='熊大' //
call proc_inout(@y) //
select @y //
eg: if...then...end if结构
delimiter //
create procedure proc_update(in a int)
begin
if (a is not null) then
update student set remark='你的武功已经很高了!' where score>=95;
end if;
end //
delimiter //
create procedure proc_case(in stuid int)
begin
declare vscore double;
declare vremark varchar(20);
declare info varchar(20);
select score,remark into vscore,vremark from student where id=stuid;
case vscore
when 60 then
set info='刚好及格';
when 95 then
set info='我考了95分!';
else
set info='不知道,没查出来';
end case;
select info;
end //
6.MySQL系统函数
时间数据类型: date (2017-02-23)
time (16:40:35)
datetime (2017-02-23 16:40:35)
timestamp
日期时间函数:
1.返回当前日期时间 now()或者sysdate()
2.增加时间函数:
adddate('date类型或datetime类型',interval 要增加的时间 year|month|day|hour|minute|second);
eg:六天以后的时间
select adddate(now(),interval 6 day);
3.减去时间函数:
subdate('date类型或datetime类型',interval 要减去的时间 year|month|day|hour|minute|second);
eg:六天以前的时间
select subdate(now(),interval 6 day);
4.时间间隔函数:
datediff('第一个时间date或datetime类型','第二个时间date或datetime类型');
注意:使用第一个时间减去第二个时间的日期部分。
其他函数:
select md5('要进行MD5加密的字符串');
select database(); 查看当前所在的数据库
select session_user(); 查看当前用户
1、MySQL的备份与还原
1.1备份数据库
mysqldump --no-defaults -u 用户名 -p --databases 要备份的数据库 > 备份路径
--no-defaults 有些版本需要,有些不要,备份路径一定要在本地磁盘有该路径,注意路径的书写
1. 2还原数据库
mysql -u 用户名 -p < 当时的备份文件路径
-p后面可以直接跟上密码
1. 3备份数据表
mysqldump --no-defaults -u 用户名 -p 数据库 要备份的表 > 备份路径
1.4还原数据表
mysql -u 用户名 -p 还原表所属的数据库 < 备份路径
//在数据库中的 mysql数据库下操作
2、用户与权限(DCL)
1.创建用户
create user '用户名'@'主机IP' identified by '密码';
注意:如果要让该用户在每台机器上都能登录,则主机IP为'%'。
2.1.授予用户权限
grant update|insert|alter... on 数据库名.数据表名 to '用户名'@'主机IP';
2.2.收回用户权限
revoke 权限 on 数据库名.数据表名 from '用户名'@'主机IP';
2.3.删除用户
delete from user where user='用户名';
3索引(index)
分析查询语句:explain select * from 表 [where ...];
索引主要用来提高检索(select)效率。
创建普通索引的语法:
create index 索引名称 on 表名称(字段名列表);
注意:创建索引字段时,应该选择那些查询条件经常会使用到的字段。
查看索引:
show index from 表名称 \G;
删除索引:
drop index 索引名称 on 表名称;
以下情况不会使用到索引:
1.模糊查询时,%出现在第一个匹配位置时索引不会被用到。
2.当使用多个字段共同创建索引时,只有第一个字段被使用时会用到索引,其它
字段不会使用到索引。
补充:唯一索引(也叫唯一约束)unique
create table stu(
id int primary key auto_increment,
name varchar(10) unique,
score double unique
);
主键约束与唯一约束的共同点与不同点:
共同点:值不能重复。
不同点:主键值不能为null,且每个表最多只能有一个主键。
唯一约束的列值可以为null,且每个表可以有多个唯一索引(约束)。
4视图(view)
视图是一个查询结果集。方便多次使用该结果集。可以将视图作为一张逻辑表。
create view 视图名称
as
(select查询语句);
举例:
create view emp_view
as
(
select emp.e_name, emp.e_job,dept.d_name from employee as emp
inner join dept on emp.dept_no=dept.d_no
);
5存储过程(Storage Procedure)
一些简单的存储过程
delimiter //
mysql默认的结束是;,用delimiter修改
create procedure 存储过程名(参数类型 参数名称 参数数据类型)
begin
存储过程体
end //
参数类型:
in(输入参数类型,默认参数类型)
out(输出参数类型)
inout(输入输出参数类型)
eg: in(输入参数类型,默认参数类型)
delimiter //
create procedure proc_select(stuid int)
begin
select id as 学号,name as 姓名,age as 年龄,score as 成绩,remark as 备注
from student where id=stuid;
end //
eg: out(输出参数类型)
delimiter //
create procedure proc_out(out count int)
begin
select count(*) into count from student;
end //
call proc_out(@x) //
select @x //
eg:inout(输入输出参数类型)
delimiter //
create procedure proc_inout(inout info varchar(20))
begin
select remark into info from student where name=info;
end //
set @y='熊大' //
call proc_inout(@y) //
select @y //
eg: if...then...end if结构
delimiter //
create procedure proc_update(in a int)
begin
if (a is not null) then
update student set remark='你的武功已经很高了!' where score>=95;
end if;
end //
delimiter //
create procedure proc_case(in stuid int)
begin
declare vscore double;
declare vremark varchar(20);
declare info varchar(20);
select score,remark into vscore,vremark from student where id=stuid;
case vscore
when 60 then
set info='刚好及格';
when 95 then
set info='我考了95分!';
else
set info='不知道,没查出来';
end case;
select info;
end //
6.MySQL系统函数
时间数据类型: date (2017-02-23)
time (16:40:35)
datetime (2017-02-23 16:40:35)
timestamp
日期时间函数:
1.返回当前日期时间 now()或者sysdate()
2.增加时间函数:
adddate('date类型或datetime类型',interval 要增加的时间 year|month|day|hour|minute|second);
eg:六天以后的时间
select adddate(now(),interval 6 day);
3.减去时间函数:
subdate('date类型或datetime类型',interval 要减去的时间 year|month|day|hour|minute|second);
eg:六天以前的时间
select subdate(now(),interval 6 day);
4.时间间隔函数:
datediff('第一个时间date或datetime类型','第二个时间date或datetime类型');
注意:使用第一个时间减去第二个时间的日期部分。
其他函数:
select md5('要进行MD5加密的字符串');
select database(); 查看当前所在的数据库
select session_user(); 查看当前用户
相关文章推荐
- mysql的视图、存储过程在还原备份功能上,噩梦暂时醒来。
- MYSQL基础(视图、索引、存储过程与函数、流程控制语句)
- mysql+asp.net开发注意大全:mysql创建数据库的时候,创建新用户,并且付给权限。mysql存储过程的编写,mysql数据库引擎的区别,mysql数据库文件夹备份
- mysql索引,视图,游标,触发器,事物,存储过程
- 用于SQL2000数据库备份还原的存储过程
- 40 用户权限管理及查询缓存、索引和explain、MariaDB存储引擎及编译安装、MySQL中的事务
- MySQL存储过程权限
- 【整理】SQLServer查询各种数据库对象(表,索引,视图,图表,存储过程等)
- JDBC连接执行 MySQL 存储过程报权限错误
- Mysql视图, 存储过程, 触发器, 事务
- mysql基础三(视图、触发器、函数、存储过程、事务、防注入)
- mysql学习笔记(五)索引、视图,导入和导出,备份和恢复
- 通过代码备份存储过程,package body 和表数据 并还原
- mysql查看所有存储过程,函数,视图,触发器,表,分页
- SQL数据库备份与还原的四个存储过程与一个函数
- (原)mysql存储过程的权限 definer invoker
- mysql 存储过程权限问题
- mysql 存储过程权限问题
- mysql简单存储过程范例之遍历数据库生成视图
- 索引、视图、游标、存储过程和触发器理解总结