mysql知识

1,字符串拼接函数CONCAT('%','','%');
2,日期区间一定要有空格between ''+' 00:00:00' and ''+' 23:59:59';
3,decimal看小数点多少位,多于位数时,则不显示.
5,触发器的语法
create trigger<触发器名称>
{before |after}
{insert|update|delete}
on<表名>
for each row
<触发器sql语句>
6,触发器中如何引用行的值?
<1>对于insert ,新增的行用new来表示,行中的每一列的值,用new.列名来表示
<2>对于delete,删去的行用old来表示,行中的每一列的值,用old.列名来表示
<3>对于update,更新前的行用old来表示,old.列名表示更新前的引用,更新后的行,用new.列名来表示更新后的引用.
7,触发器删除?清空表单?
drop trigger 触发器的名称
truncate 表名.
8,触发器里的after和before区别?
after是先完成数据的操作,再触发事件,不能对前面的增删除改做出影响
before可以对数据库进行审查,是先于触发再完成增删改,可以审查、判断、即将发生的增删改操作.
9,存储过程和函数区别:
<1>名称不同,一个procedure,一个function
<2>返回值,存储过程没有返回值,函数可以有,也可以没有.
10,delimiter $改变执行符号,直到mysql碰到$开始执行语句命令,call 存储过程名字()调用存储过程.
11,left join是以左表为准的,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,不满足条件的地方均为null
12,right join是以右表为准的,刚好与left join相反,左表不满足条件的将置为Null.
13,inner join是显示符合条件的记录,并不以谁为基础.只显示多表之间与关联条件相匹配的列。
14,case when grouby 案例.
SELECT rq 日期,SUM(CASE WHEN sf="胜"THEN 1ELSE 0END) 胜,
SUM(CASE WHEN sf="负"THEN 1ELSE 0 END) 负
from sf
GROUP BYrq
15,表创建
a,即复制表结构也复制表内容sql:create table a_new as select * from a;
b,只复制表结构,不复制内容sql: create table b_new as select * from b where 1=2;
c,不复制表结构,只复制内容sql: insert into b_new select * from a_new;
d,union会去重。
16,日期和时间函数
a,to_days(),dayofweek()是一周的星期几;weekday(date);
b,dayofmonth();一个月中的第几天.dayofyear(); month() ;dayname();monthname();
17,in,not in
a,后面的子句返回的结果必须是一列,这一列的结果会作为查询条件对应前面的条件.
18,any,all
a,any关键字,必须接在一个比较操作符的后面,表示与子查询的任何值比较为true,则为true,特殊情况,
如果子查询为Null值,则any结果为false;
b,all关键字,必须接在一个比较操作符后面,表示与子查询返回的所有值比较为true,则返回true.如果为空表,
则all结果为true.
19,union union all
a,union对两个结果集进行并集操作,重复数据只显示一次
b,union all对两个结果集进行并集操作,重复数据全部显示。

posted @ 2015-07-25 14:32  java高级技术汇  阅读(67)  评论(0编辑  收藏  举报