mysql排除视图备份数据库,MySQL数据库---数据库备份、视图、触发器、事物、存储过程、函数和索引...

备份

方法:

使用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 表名;

正确使用索引:

不用使用范围条件来查询

尽量选择区分度高的字段作为索引

原文:https://www.cnblogs.com/chusiyong/p/11429467.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那我就给你简单介绍一下如何在 MySQL 中创建学生教务系统所需的索引视图函数存储过程触发器。 1. 索引MySQL 中,可以通过 CREATE INDEX 语句来创建索引。例如,如果你想为学生表的学号字段创建一个唯一索引,可以使用以下命令: ``` CREATE UNIQUE INDEX idx_student_id ON student (id); ``` 2. 视图 视图是一种虚拟表,它是由一个或多个表的查询结果组成的。在 MySQL 中,可以通过 CREATE VIEW 语句来创建视图。例如,如果你想创建一个包含学生姓名和所选课程的视图,可以使用以下命令: ``` CREATE VIEW vw_student_course AS SELECT student.name, course.name FROM student INNER JOIN course_selection ON student.id = course_selection.student_id INNER JOIN course ON course_selection.course_id = course.id; ``` 3. 函数 MySQL 支持许多内置函数,例如 COUNT、SUM、AVG 等。如果你需要自定义函数,可以使用 CREATE FUNCTION 语句来创建。例如,如果你想创建一个函数,返回指定学生的选课数量,可以使用以下命令: ``` CREATE FUNCTION get_course_count(student_id INT) RETURNS INT BEGIN DECLARE count INT; SELECT COUNT(*) INTO count FROM course_selection WHERE student_id = student_id; RETURN count; END; ``` 4. 存储过程 存储过程是一组预编译的 SQL 语句,它们可以在一起执行。在 MySQL 中,可以使用 CREATE PROCEDURE 语句来创建存储过程。例如,如果你想创建一个存储过程,用于删除指定学生的所有选课记录,可以使用以下命令: ``` CREATE PROCEDURE delete_student_courses(student_id INT) BEGIN DELETE FROM course_selection WHERE student_id = student_id; END; ``` 5. 触发器 触发器是一种特殊的存储过程,它们会在表上的 INSERT、UPDATE 或 DELETE 操作发生时触发。在 MySQL 中,可以使用 CREATE TRIGGER 语句来创建触发器。例如,如果你想创建一个触发器,用于在学生表上执行 DELETE 操作时,同时删除该学生的所有选课记录,可以使用以下命令: ``` CREATE TRIGGER delete_student_courses_trigger AFTER DELETE ON student FOR EACH ROW BEGIN DELETE FROM course_selection WHERE student_id = OLD.id; END; ``` 以上就是在 MySQL 中创建学生教务系统所需的索引视图函数存储过程触发器的简单介绍。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值