day61
参考:http://www.cnblogs.com/wupeiqi/articles/5713323.html
视图
视图:给某个查询语句设置别名,日后方便使用
- 创建
create view 视图名称 as SQLs语句
PS: 视图是虚拟的 不存在insert
- 修改
alter view 视图名称 as SQL语句
- 删除
drop view 视图名称;
触发器
当对某张表做:增删改操作时,可以使用触发器自定义关联行为
create trigger 触发器名称 before insert on tb1 for each row
begin
.......
end
每在插入一行前,先执行begin~end中内容。
查询时用不到触发器
#遇到;不能完整执行需要将中止符修改 -- delimiter// -- create trigger t1 before INSERT on student for each row -- BEGIN -- INSERT INTO teacher(tname) values('触发器'); #表示写完了 -- -- END// -- delimiter; -- insert into student(gender, class_id, sname) values("女",1,'触发');#插入两行则触发两次
执行触发器后,触发器一直存在。
触发器运行过之后,一直存在,不需要时,需要删除。
drop trigger t1;
插入学生的数据同样插入老师的表中 NEW
#插入学生的数据再插入老师的表中 -- delimiter// -- create trigger t1 before INSERT on student for each row -- BEGIN -- INSERT INTO teacher(tname) values(NEW.sname); #表示写完了 -- -- END// -- delimiter; insert into student(gender, class_id, sname) values("女",1,'啦啦');#插入两行则触发两次
先执行触发器,结束后注释(触发器已存在),再执行insert语句,数据插入student和teacher表中。
NEW,表示新数据,insert, update(既有新数据,更新为的数据)
OLD,表示老数据,delete, update(又有老数据,被更新数据)
函数
内置函数
select CURDATE();#执行函数 select CHAR_LENGTH('vdsv');#计算字符长度 select CONCAT('ccd','csc','FF');#拼接
执行结果:
等等函数。
关于时间的函数https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
执行函数 select CURDATE();
blog
id title ctime
1 asdf 2019-11
2 asdf 2019-11
3 asdf 2019-10
4 asdf 2019-10
select ctime,count(1) from blog group ctime
select DATE_FORMAT(ctime, "%Y-%m"),count(1) from blog group DATE_FORMAT(ctime, "%Y-%m")
2019-11 2
2019-10 2
以上按月份进行分组,比如cnblogs中按月份分组的文章。
自定义函数:
delimiter \ create function f1( i1 int, i2 int) returns int
BEGIN declare num int; set num = i1 + i2; return(num); END \ delimiter ;
SELECT f1(1,100); #函数有返回值。