以下命令是在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(); 查看当前用户