上一篇: ? function 函数
、avg等
单行函数
(tel) ;
sin(age) ;
sin(1.57);
date_add(, 2 );
addDate(,2);
curdate();
curtime();
md5();
处理函数
ifnull(birthday,) ;
(age,245) ;
isnull(birthday) ;
(isnull(birthday),,) ;
,否则就返回birthday ;类似于三目运算符
流程函数
name,
sex
1
0
;
?
组函数
组函数就是多行函数,组函数是完成一行或多行结果集的运算,最后返回一个结果,而不是每条记录返回一个结果。
(age) ;
( age) ;
记录条数统计
(*),(age),( age) ;
最大值
(age),( age) ;
最小值
(age),( age) ;
求和、聚和
(age),( age) ;
(ifnull(age,0)) ;
分组
sex;
(*) age;
* sex,age;
(*) sex sex <> 2;
?
? 多表查询和子查询
s.*,c.* student s,classes c;
s.*,classes c s.cid = c.id;
s.*,classes c s.cid <> c.id;
s.*,c.name classes classes c,student s c.id = s.classes_id s.name ;
,类似于SQL92的笛卡尔积查询,无需条件。如:
student s classes c;
join查询,无需条件,默认条件是将2个table中的相同字段作为连接条件,如果没有相同字段,查询的结果就是空。
student s classes c;
student s classes c (id);
… on连接查询,查询条件在on中完成,每个on语句只能指定一个条件。
student s classes c s.classes_id = c.id;
[] 、 [] ,连接条件都是通过用on子句来指定,条件可以等值、非等值。
student s classes c s.classes_id = c.id;
student s classes c s.classes_id = c.id;
* ( id,name classes) s s.id (1,2);
* student s s.classes_id ( id classes);
* student s s.classes_id = ( id classes);
* student s s.classes_id > ( id classes);
? 操作符和函数
1 ,0 , ;
1 ,0 , ;
(,1);
(1,1);
);
greatest(2,3);
greatest(,,);
least(2,0);
);
1 1 2 ;
1 > 2 ;
ascii();
ascii();
bin(22);
(11);
(65);
(65.4);
(65.5);
(65.6);
(65,66,67.4,68.5,69.6,,);
charset((0*65)),charset((0*65 utf8));
();
();
compress();
uncompress(compress());
concat_ws(,,,);
,);
? 事务处理
autocommit 1 | 0
;
@ := (age) temp;
temp age = @ id = 2;
* temp id = 2;
;
* temp id = 2;
, Transaction的禁用autocommit才会结束。然后就恢复到原来的autocommit模式;
、、rename 、lock 、 autocommit、 、 等等,monospace; direction: ltr; border-top-style: none; color: black; font-size: 10pt; border-left-style: none; overflow: visible; padding-top: 0px">在事务中出现这些语句也会提交事务的
pointName/ pointName
Transaction设计数据库隔离级别
[ | ]
UNCOMMITTED | COMMITTED | REPEATABLE | SERIALIZABLE }
TRANSACTION会为下一个事务(还未开始)设置隔离等级。
?
? 注释
1+1; # 单行注释
1+1;
1
? 基本数据类型操作
,,,,hello
;
? 设置数据库mode模式
sql_mode=;
t(a );
"tt"(a );
"t""t"(a );
);
? 用户变量
@num1 = 0,@num2 = 2,@ = 0;
@ := (@num1 := 5) + @num2 := 3,@num1,@num2,@;
? 存储过程
( )
(age) temp;
(@temp);
@temp;
;
;
… 可以完成单行记录的赋值:
getRecord(sid )
v_name (20) ;
v_age ;
v_sex ;
name,age,sex v_name,v_age,v_sex temp id = sid;
v_name,v_sex;
;
getRecord(1);
? 函数
(age) temp;
addAge(age )
age + 5;
addAge(age) temp;
addAge;
addAge;
addAge;
? 游标
cur_Name name temp;
cur_Name;
cur_Name @temp;
cur_Name;
cur_show()
done 0;
v_id,v_age ;
v_name (20);
cur_temp id,name,age temp;
HANDLER done = 1;
cur_temp;
cur_temp v_id,v_name,v_age;
done
isnull(v_name)
temp name = concat(,v_id) id = v_id;
temp age = 22 id = v_id;
;
;
REPEAT;
cur_temp;
? 触发器
、delete三种触发器事件类型
trg_temp_ins
insert
temp
temp_log (.id,.name);
trg_temp_ins
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|