数据库学习笔记触发器和常用函数
来源:互联网 发布:域名模糊查询 编辑:程序博客网 时间:2024/06/12 18:13
- 触发器:是一个特殊的存储过程,不需要通过call调用,不需要手动启动,只要当预定义的事件发生的时候会自动调用。
格式:
create trigger trigger_name trigger_time trigger_event on table_name for each row tirgger_body//trigger_name:触发器名称//trigger_time:brfore/after,表示在事件之前或之后触发//trigger_event:insert|update|delete,触发该触发器的具体事件//table_name:该触发器所作用的表//trigger_body:当触发器被激活时执行的语句,如果执行多条语句,则用begin....end复合语句结构.//注意:对于相同触发程序动作时间和事件给定表,不能有2个触发程序
example:
创建一个简单的触发器
//创建学生信息表create table student_info(stu_no int not null auto_increnemt,stu_name varchar(20) default null,primary key(stu_no))default charset=utf8;//学生总数表create table student_count{student_count int default 0)default charset=utf8;//创建一个触发器,当插入一个新的学生时,数量自动加1create trigger trigger_student_count_insertafter inserton stu_info for each rowupdate stu_count set student_count=student_count+1;//当删除一个学生时数量自动减一create trigger trigger_student_count_deleteafter deleteon stu_info for each rowupdate stu_count set student_count=student_count-1;//创建之前需要在stu_count表中插入一个数据insert into stu_count values(0);//复合语句create tigger trigger_name trigger_time trigger_event on table_name begin bodyend$$exmaple:create table stu_info1(stu_no int not null primary key auto_increment,stu_name varchar(30) default null,stu_class int)default charset=utf8;create table stu_count1(student_count int default 0,student_class int default 0)default charset=utf9;//0->全年级学生 其他数据表示年级的学生数量//创建触发器after insert//NEW.stu_class:取得正在插入的学生信息中的年级的值delimiter $$create trigger trigger_student_count_insert after insert on stu_info1 for each rowbeginupdate stu_count1 set student_count=student_count+1 where student_class=0;update stu_count1 set student_count=student_count+1 where student_class=NEW.stu_class;end$$//删除触发器delimiter $$create trigger trigger_student_count_delete after delete on stu_info1 for each rowbeginupdate stu_count1 set student_count=student_count-1 where student_class=0;update stu_count1 set student_count=student_count-1 where student_class=OLO.stu_class;end$$//查看触发器show triggers;//删除触发器drop trigger trigger_name;
- mysql函数
- 包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数等
//绝对值函数 select abs(x); //返回圆周率 select pi(); //求x的平方根 select sqrt(x); //x对y求余 select mod(x,y); //返回0-1之间的随机数 select rand(); //返回离x最近的整数(四舍五入) select round(x); //返回x保留小数点后y位的值,对最后的值四舍五入 select round(x,y); //返回x的符号(-1,0,1) select sign(x); //求x的y次幂 select pow(x,y)/power(x,y); //e的y次幂 e^y select exp(y); //计算x的自然对数 select log(x); //计算以10为底的y的对数 select log10(y);
- 字符串函数
字符串函数:char_length(s):计算字符串s的字符数。length(s);concat(s1,s2,...):将多个字符串合并成一个字符串concat_ws(x,s1,s2,...):将s1,s2等多个字符串合并成一个字符串,各字符串用x隔开upper(s)/ucase(s):将字符串s的所有字母变成大写字母;例: select upper("asd"),ucase("asd");lower(s)/lcase(s):将字符串s的所有字母变成小写例:select lower("ASD"),lcase("ASD");repeat(s,n):将字符串s重复n次例:select repeat("xxx_",3);strcmp(s1,s2):比较字符串s1和s2s1>s2 ,返回1. 如果s1==s2 返回0;如果s1<s2,返回-1substring(s,n,len)/mid(s,n,len):从字符串s的第n个位置开始获取长度为len的字符串。例:select substring("qwertyuidfgh",3,5),mid("zxcvbnghjk",3,5);reverse(s):将字符串s的顺序反过来例:select reverse("big");日期和时间函数:curdate()/current_date();获取当前日期curtime()/current_time():获取当前时间例:select curdate(),current_date(),curtime(),current_time();now()/current_timestamp()/localtime()/sysdate():获取当前的日期和时间例:select now(),current_timestamp(),localtime(),sysdate();条件判断函数:if(expr,v1,v2):如果表达式expr成立,返回结果v1,否则,返回结果v2.例:select code,name,if(score>=90,"good","so-so") from student3;ifnull(v1,v2):如果v1不为空,就显示v1的值,否则就显示v2的值select code,ifnull(score,"no score") from student3;version:返回数据库的版本号。database():返回当前数据库名加密函数:password(str):函数对字符串str进行加密。一般情况下password(str)函数主要用来给用户密码加密例:select password('abcd'); select md5("acdef");decode(crypt_str,pswd_str):可以使用字符串pswd_str来为crypt_str解密。crypt_str是通过encode(str,pswd_str)加密后的而进制数据。字符串pswd_str是相同的例:select decode(encode('abcd','aa'),'aa');自定义函数语法:create function function_name(参数列表)returns 返回值类型func_body注;1.返回值类型,一定要有return语句2.关于函数体 函数体是由合法的sql语句组成 如果是复合语句则使用begin...end语句 复合结构可以包含声明,循环,判断等控制结构 delimiter $$create function addUser(username varchar(20),userage int)returns intbegininsert into stu(name,age) values(username,userage);return (select max(age) from stu);end$$ mysql>delimiter ;mysql>select addUser("awayken",26);查看自定义函数:show function status;删除函数的语句:drop function function_name; 流控制结构:1.if语句格式:if condition1 then statement1 [elseif condition then statement] ... [else statement]end if注:如果condition1为真,则执行statement1.否则,可以继续往下判断或执行else对应的语句。2.case语句case case_value when when_value then statement [when when_value then statement] [else statement]end case3.while语句while condition do statementend whilecreate function dowhile()returns intbegin declare v1 int default 5 while v1>0 do set v1=v1-1; end while;return v1;end;
阅读全文
1 0
- 数据库学习笔记触发器和常用函数
- 数据库学习笔记-触发器
- MySQL存储过程和触发器的实现--数据库学习笔记
- 数据库学习笔记和小练习(10)触发器
- 数据库学习笔记 --- 触发器原理学习
- Java学习笔记之数据库(触发器、事物、索引、投影和除、视图、存储过程和函数 )含各种链)___ 一直补充
- Oracle数据库中的函数,包和触发器
- 使用函数与触发器 【数据库高效编程 - 学习笔记 第十章】
- oracle过程、函数、触发器、程序包学习笔记
- MYSQL数据库学习----索引和触发器
- PHP数据库与PHP常用函数学习笔记
- ORACLE数据库常用函数学习笔记(持续更新...)
- MySQL笔记-常用数据库函数
- 数据库学习四:触发器
- 数据库学习之触发器
- oracle数据库触发器学习
- 数据库学习之触发器
- 数据库学习13-触发器
- 关于牛客刷题笔记
- Oil Deposits
- Java学习 --- 继承
- JAVA中的线程池-Executor框架
- [PAT乙级]1059. C语言竞赛(20)
- 数据库学习笔记触发器和常用函数
- ssh复习资料
- golang program exceeds 10000-thread limit
- Android使用ApachePOI组件读写Worddoc和docx文件
- 扩展C#中对话框
- java引入Config文件参数
- AOP
- 正向代理和反向代理的区别
- CSDN博主KrisFei基于【RK3288】【Android6.0】平台的WiFi相关经验知识