备份

方法:
使用mysqldump实现逻辑备份 语法:
mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql 单库备份:
mysqldump -uroot -p123456 db1 > db1.sql
mysqldump -uroot -p123456 db1 table1 table2 > db1-table1-table2.sql 多库备份:
mysqldump -uroot -p123456 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql 备份所有库:
mysqldump -uroot -p123456 --all-databases > all.sql 恢复逻辑备份:
mysql -uroot -p123456 < all.sql

视图

视图
  作用:简化sql语句
  本质:保存的就是sql语句
  不足:视图表示强耦合,少用,且不要对视图做修改   创建视图格式:create view 视图名称 as select语句;
  修改视图格式:alter view 视图名称 as select语句;
  删除视图格式:drop view 视图名称;   创建视图
  create view test as select name,age from employee where age > 30;   修改视图
  alter view test as select name,age from employee where age > 40;   使用视图
  select * from test;   删除视图
  drop view test;   

触发器

触发器
作用:使用触发器可以定制用户对表进行增、删、改操作时前后的行为,注意:没有查询 创建触发器:
插入前
create trigger 触发器名称 before insert on tb1 FOR EACH ROW
begin
...
end 插入后
create trigger 触发器名称 after insert on tb1 for each row
begin
...
end 删除前
create trigger 触发器名称 before delete on tb1 for each row
begin
...
end 删除后
create trigger 触发器名称 after delete on tb1 for each row
begin
...
end 更新前
create trigger 触发器名称 before update on tb1 for each row
begin
...
end 更新后
create trigger 触发器名称 after update on tb1 for each row
begin
...
end 删除触发器:
drop trigger 触发器名称; 注意:NEW表示即将插入的数据行,OLD表示即将删除的数据行 create table t1(
id int primary key,
name char(10)
); create table t2(
id int primary key,
info char(10)
); delimiter //
create trigger t1_t2 after insert on t1 for each row
begin
insert into t2 values(new.id, 'ok');
end //
delimiter ; insert into t1 values(1, 'aaa');

事务  

事物
定义:事务用于将某些操作的多个sql作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性
注意:回滚不是数据库自动触发的,需要写明rollback语句才会回滚 格式:
start transaction; #开始
rollback; #回滚
commit; #提交(结束) #效果等同于没插入
start transation;
insert into t1 values(2, 'bbb');
rollback;
commit;   

存储过程  

存储过程
定义:存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql
优点:用于替代程序写的SQL语句,实现程序与sql解耦
基于网络传输,传别名的数据量小,而直接传sql数据量大 创建存储过程:
无参:
delimiter //
create procedure p1()
begin
select * from t1;
select * from t1;
end //
delimiter ; 调用:
call p(); 有参:
in 仅用于传入参数用
out 仅用于返回值用
inout 既可以传入又可以当作返回值 delimiter //
create procedure p2(
in n1 int,
in n2 int
)
begin
select * from t1 where id > n1;
end //
delimiter ; 调用:
set @res=0; #0代表假(执行失败),1代表真(执行成功)
call p3(3,@res);
select @res; delimiter //
create procedure p4(
inout n1 int
)
BEGIN
select * from blog where id > n1;
set n1 = 1;
END //
delimiter ; 调用:
set @x=3;
call p4(@x);
select @x; 删除存储过程:
drop procedure 存储过程名称  

函数  

函数
内置函数(常用)
round(x,y) 返回参数x的四舍五入的有y位小数的值
rand() 返回0到1内的随机值 avg(col)返回指定列的平均值
count(col)返回指定列中非NULL值的个数
min(col)返回指定列的最小值
max(col)返回指定列的最大值
sum(col)返回指定列的所有值之和 group_concat(col) 返回由属于一组的列值连接组合而成的结果
char_length(str) 返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符
concart(str1, str2,...) 字符串拼接
concart_as(separator, str1, str2,...) 字符串拼接(自定义连接符),不会忽略任何空字符串
conv(N, from_base, to_base)进制转换.例如:SELECT CONV('a',16,2); 表示将a由16进制转换为2进制字符串表示
lower(str)变小写
upper(str)变大写
reverse(str)返回字符串str,顺序和字符顺序相反。 now()返回当前的日期和时间
year(date) 返回日期date的年份(1000~9999)
month(date) 返回date的月份值(1~12)
dayofmonth(date) 返回date是一个月的第几天(1~31)
hour(time) 返回time的小时值(0~23)
minute(time) 返回time的分钟值(0~59) md5() 计算字符串str的MD5校验和
password(str) 返回字符串str的加密版本,这个加密过程是不可逆转的,和UNIX密码加密过程使用不同的算法。 自定义函数
注意:函数中不要写sql语句(否则会报错),函数仅仅只是一个功能,是一个在sql中被应用的功能
说明:若要想在begin...end...中写sql,请用存储过程sql语句中调用函数 定义函数
delimiter //
create function f1(
i1 int,
i2 int)
returns int
BEGIN
declare num int; #声明变量
set num = i1 + i2; #设置变量
return(num);
END //
delimiter ; 调用函数:
select f5(); 删除函数:
drop fucnion f5; 

流程控制  

条件语句

delimiter //
create procedure proc_if ()
begin
declare i int default 0;
if i = 1 then
SELECT 1;
elseif i = 2 then
SELECT 2;
else
SELECT 7;
end if;
end //
delimiter ;
循环语句

delimiter //
create procedure proc_while()
begin
declare num int;
set num = 0;
while num < 10 do
select num ;
set num = num + 1 ;
end while ;
end //
delimiter ; delimiter //
create procedure proc_repeat()
begin
declare num int;
set i = 0;
repeat
select i;
set i = i + 1;
until i >= 5
end repeat;
end //
delimiter ; delimiter //
create procedure proc_loop()
begin
declare i int default 0;
loop_label: loop
set i=i+1;
if i<8 then
iterate loop_label;
end if;
if i>=10 then
leave loop_label;
end if;
select i;
end loop loop_label;
end //
delimiter ;

索引

索引
作用:加速查找 创建
create index 索引名称 on 表名(字段) 删除
drop index 索引名称 on 表名; 正确使用索引:
不用使用范围条件来查询
尽量选择区分度高的字段作为索引

MySQL数据库---数据库备份、视图、触发器、事物、存储过程、函数和索引的更多相关文章

  1. mysql 视图 触发器 事物 存储过程 函数 流程控制

    1.视图 *** 视图是有一条sql语句的查询结果构成的虚拟表 其不是物理存在的 使用方式与普通表相同 视图的作用1.简化sql语句的编写 2.限制可以查看的数据 可以使用权限来完成 权限某一个库 的 ...

  2. python mysql 视图 触发器 事物 存储过程 用户授权 数据备份还原

    ###################总结########### 视图是一个虚拟表(非真实存在) 是跑在内存中的表,真实表是在硬盘上的表 使用视图我们可以把查询过程中的临时表摘出来,保存下来,用视图去 ...

  3. MySQL——视图/触发器/事务/存储过程/函数/流程控制

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  4. MySQL_视图/触发器/事务/存储过程/函数

    视图.触发器.事务.存储过程.函数 视图 视图是一个虚拟表(非真实存在),其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集,可以将该结果集当作表来使用 #创建视 ...

  5. MySQL 视图触发器事务存储过程函数

    事务  致命三问 什么是事务:开启了一个包含多条SQL语句的事务,这些SQL语句要么都执行成功,要么有别想成功:例如A向B转账,二人账户并不属于一家银行,在转账过程中由于网络问题,导致A显示转账 成功 ...

  6. MySQL 视图 触发器 事务 存储过程 函数 流程控制 索引与慢查询优化

    视图 1.什么是视图? 视图就是通过查询得到的一张虚拟表,然后保存下来,下次可直接使用 2.为什么要使用视图? 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图? create view ...

  7. MySQL视图,触发器,事务,存储过程,函数

    create triggr triafterinsertcmdlog after insert on cmd_log FOR EACH ROW trigger_body .#NEW : 代表新的记录 ...

  8. mysql 视图 触发器 存储过程 函数事务 索引

    mysql 视图 触发器 存储过程 函数事务 索引 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当 ...

  9. mysql视图 触发器 事物 函数 存储过程

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  10. MySQL拓展 视图,触发器,事务,存储过程,内置函数,流程控制,索引,慢查询优化,数据库三大设计范式

    视图: 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view tea ...

随机推荐

  1. Day10-微信小程序实战-交友小程序-自定义callPhone 和copyText组件

    ---为了方便用户可以拨打电话和复制微信号(下面就要实现这样的两个功能) 注意:在小程序中是没办法直接的添加用户的微信的,所以就只能是复制微信号 (这种东西的话可以直接去做,也可以做成组件,做出组件的 ...

  2. 如何用 React 构建前端架构

    早期的前端是由后端开发的,最开始的时候仅仅做展示,点一下链接跳转到另外一个页面去,渲染表单,再用Ajax的方式请求网络和后端交互,数据返回来还需要把数据渲染到DOM上.写这样的代码的确是很简单.在We ...

  3. 马士兵老师Java虚拟机调优

    该视频主要讲解的内容如下所示: 1.虚拟机的内存结构 1.每一个线程都有一个虚拟机栈,线程中每调用一个方法都会开启一个栈帧,栈帧里面保存方法中的局部变量. 2.方法区在java8以后改名为永久区域pe ...

  4. 如何下载 Ubuntu 镜像文件?

    Ubuntu,是一款基于 Debian Linux 的以桌面应用为主的操作系统,内容涵盖文字处理.电子邮件.软件开发工具和 Web 服务等,可供用户免费下载.使用和分享. 但是对于国内的用户来说如果直 ...

  5. 个人项目-Wc-Java

    一.Github项目地址: https://github.com/Heiofungfming/xiaoming01 二.PSP表格 PSP2.1 任务内容 计划完成需要的时间(min) 实际完成需要的 ...

  6. pick靶场-sql注入

    甲.数字型注入 数字型注入一般提交值没有引号,所以直接在后面构造语句就可以了. 抓包查看 构造语句 提交后 该数据库表内容被爆出来了. 乙.字符型注入 首先我们要知道一点,字符串在数据库中提交是需要用 ...

  7. 【秒懂Java】【第1章_初识Java】02_软件开发

    通过上一篇文章<01_编程语言>,我们了解到 Java是众多编程语言中的其中一种 编程语言可以用来开发软件 因此,我们即将要学习的Java技术,是属于软件开发的范畴.那软件开发的前景如何呢 ...

  8. JsPlumb在react的使用方法及介绍

    JsPlumb在react的使用方法及介绍 一.相关资料来源: 1.https://bitqiang.gitbooks.io/jsplumb/content/Chapter1_IMPORTS_AND_ ...

  9. cat快速查找文件内指定信息

    cat log.txt | grep "ERROR" | more 查找 log.txt 文件内 包含 “ERROR”  的信息,分屏显示

  10. EOS基础全家桶(十四)智能合约进阶

    简介 通过上一期的学习,大家应该能写一些简单的功能了,但是在实际生产中的功能需求往往要复杂很多,今天我就继续和大家分享下智能合约中的一些高级用法和功能. 使用docker编译 如果你需要使用不同版本的 ...