拓展

1、数据备份
--备份方式:俩种备份方式
1、通过客户端工具,直接导入,导出
2、通过mysqldump -uroot -proot 数据库名称>数据库的导出路径(c:mydb.sql)
2、跨数据库查询:
select * from database1.talbe union all
select * from database2.table
select ename,case when dno=20 then '财务部' when dno=30 then '市场部' end from emp
3、索引
》》索引类型:NORMAL(常规)、unique(唯一)、full text(全文)
** normal:普通索引,没有任何约束的索引
** 主键索引:有不可重复和不能为空约束
** 唯一索引:具有唯一性
** 组合索引:多个字段联合索引
** 全文索引:文本全文搜索,类似于一个搜索引擎,模糊检索,用于文本类型的字段
注意事项:
--每个表不可以建太多索引,最好不超过5条
--不能建立在可以为空的字段上
--索引使用的时候,不能出现,<> != is null 模糊查询的时候不可以必须存在索引的第一个字段等;

》》索引方法:btree、HASH
btree:适用于范围查找
hash:基于hash的存储方式,所以不适合范围查找,适用于 = in <= >=等精确查找

MySQL外键设置中的的 Cascade、NO ACTION、Restrict、SET NULL:
. cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录

. set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能为not null

. No action方式
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

. Restrict方式
同no action, 都是立即检查外键约束

. Set default方式
父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

4、视图:是一种虚拟存在的表其内容与真实的表相似,包含一系列带有名称的列和行数据。
但是视图并不在数据库中以存储的数据的形式存在。行和列的数据来自定义视图时查询所引用的基本表,
并且在具体引用视图时动态生成。
**特点:
视图的特点如下:
<1> 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系;
<2> 视图是由基本表(实表)产生的表(虚表);
<3> 视图的建立和删除不影响基本表;
<4> 对视图内容的更新(增改)直接影响基本表;
<5> 当视图来自多个基本表时,不允许添加和删除数据。
**创建视图用法:
(1).第一类:create view vv as select * from table;
(2).第二类:create view vv as select id,name,age from table;
(3).第三类:create view vv(vid,vname,vage) as select id,name,age from table;
**查询视图:
select * from test_view1 写法和正常的查询语句一致;
**应用场景:通常用在报表查询

5、存储过程(函数):存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,
经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数
(如果该存储过程带有参数)来调用执行它。
一.存储过程的优点:
1、存储过程增强了mysql语句的功能和灵活性,因为存储过程是一个编程过程,不局限在只执行一段语句
2、存储过程执行效率较快,因为存储过程是一堆编译好的预处理命令,可以直接运行
3、安全性高
二.创建存储过程
create procedure sp_name()
begin
.........
end
示例1:不带参数的存储过程
create PROCEDURE sp()
begin
select * from emp;
end
示例二:带输入参数的
create PROCEDURE sp1(in p1 INT)
begin
select * from emp where empno=p1;
end
CALL sp1(123)
示例三:带输出参数的
create PROCEDURE sp2(out p2 INT)
begin
set p2=(select count(*) from emp);
end
CALL sp2(@aa);
select @aa;
示例四:多个输出参数的
create PROCEDURE sp3(out p1 INT,out p2 DECIMAL)
begin
select count(*),sum(sal) into p1,p2 from emp;
end
CALL sp3(@a,@b);
select @a,@b;
示例五:流程控制语句 if elseif
create PROCEDURE sp4(in num1 int ,out num3 int)
begin
declare num int;
declare v1,v2,v3 int;
set num=10;
set v1=20;
if num1=1 then
select count(*) into num3 from emp;
elseif num1=2 then
select sum(sal) into num3 from emp;
else
select avg(sal) into num3 from emp;
end if;
end

CALL sp4(2,@b);
select @b;
示例六:循环控制语句
create PROCEDURE sp5()
begin
declare id int default 0;
set id=0;
while id<10 do
insert into depart values(id,'aa','bb');
set id=id+1;
end while;
end

CALL sp5();

三.调用存储过程
1.基本语法:call sp_name()
2.如果需要接收参数,括号里定义@参数名
3、然后用select @参数名 查询存储过程返回的结果;
注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

四.删除存储过程
1.基本语法:
drop procedure sp_name;


五;创建计划任务
show variables like '%sche%'; 先查看定时任务的是否开启
set global event_scheduler =1

6、常用函数库:

https://blog.csdn.net/sinat_38899493/article/details/78710482

原文地址:https://www.cnblogs.com/0307lmy/p/11510029.html