MySQL 的触发器、存储过程、函数、视图实验
本实验完成如下结果:
0. test数据库,userinfo 用户信息表 和 userinfolog 用户信息日志表
1. 建立一个userinfo表新增记录时的触发器,将新增日志加入到userinfolog
2. 建立一个向userinfo表新增记录的存储过程
3. 根据userinfo表的出生日期字段,我们将建立一个简单算得年龄的自定义函数
4. 创建一个userinfo的视图,调用年龄函数
0.准备相关表
mysql> use test;
mysql> create table userinfo(userid int,username varchar(10),userbirthday date);
mysql> create table userinfolog(logtime datetime,loginfo varchar(100));
mysql> describe userinfo;
1.触发器
mysql> delimiter |
mysql> create trigger beforeinsertuserinfo
-> before insert on userinfo
-> for each row begin
-> insert into userinfolog values(now(),CONCAT(new.userid,new.username));
-> end;
-> |
mysql> delimiter ;
mysql> show triggers;
2.存储过程
mysql> delimiter //
mysql> create procedure spinsertuserinfo(puserid int,pusername varchar(10),puserbirthday date)
-> begin
-> insert into userinfo values(puserid,pusername,puserbirthday);
-> end;
-> //
mysql> show procedure status like 'spinsertuserinfo';
mysql> call spinsertuserinfo(1,'zhangsan',current_date);
&n
相关文档:
fedora8 用yum来管理安装Apache+PHP+Mysql的基本安装。
1. 安装Apahce, PHP, Mysql, 以及php连接mysql库组件。
yum -y install httpd php mysql mysql-server php-mysql
2. 配置开机启动服务
/sbin/chkconfig httpd on [设置apache服务器httpd服务开机启动]
......
用特殊的MySQL运算符获得更多数据比较功能
如果你在最近进行过SELECT或UPDATE查询,那么你很可能用到过一个或者多个MySQL的比较运算符来限制查询的输出结果。比较是大多数SELECT查询不可分割的一部分,而MySQL为这一功能提供了很多函数;根据最近一次统计,它有超过20个这样的运算符和函数,从著名的=和LIKE到更加难懂的NO ......
最近,项目中用到mysql,由于数据量非常大,每天的数据量在百万级,考虑到mysql数据库处理性能以及数据属性,决定保存足够多的查询数据即可,距当前时间最久远的数据直接删除,无需进行备份。
头脑中冒出的第一个想法就是,能否利用mysql中的触发器,检查数据表大小,如果超过预设长度,则删除部分数据。
CREATE TRIGGER ......
存储引擎 支持索引 myisam b-tree,r-tree,full-text,不支持hash innodb b-tree(clustered-index) merge b-tree,r-tree memory b-tree,hash archive 无索引 ......
有时候使用MySQL(和PHP搭配之最佳组合)命令行导入备份时会出现“MySQL(和PHP搭配之最佳组合) server has gone away”错误,这可能是因为其中一些insert语句的大小超出了MySQL(和PHP搭配之最佳组合)目前设置的缓冲区大小。
解决办法
1.使用phpmyadmin 备份MySQL(和PHP搭配之最佳组合)的时候,只选择
数据:
......