`
文章列表
MySQL存储过程问题 以前没用过MySQL存储过程,第一次写有很多的不习惯,总结如下: 下面是一个最简单的MySQL存储过程,实现两个数相加 ?delimiter $$ create procedure proc_add(in a int,in b int) begin     declare c int;     if a is null then     set a = 0;     end if;     if b is null then     set b = 0;     end if;               set c = a + b;     se ...
等值连接又叫内链接 inner join 只返回两个表中连接字段相等的行 select * from A inner join B on A.id = B.id; #做法1 select * from A,B where A.id = B.id; #做法2

mysql的常用函数

mysql的常用函数 abs(-1)#绝对值 pi()#pi值 sqrt(2)#平方根 mod(-5,3)#取余-2 ceil(10.6)#进位+1 结果11 ceil(10.0)结果10 floor(10.6)#取整 10 round(2.5)#四舍五入到整数 结果3 round(2.5,2)#保留两位小数 结果2.50 truncate(2.5234,3)#取小数后3位不四舍五入 2.523 sign(-2);#符号函数 返回-1 0还是0 正数返回1 pow(2,3),exp(2);#2的3次幂 或e的2次幂 log(2),log10(2);#求对数 radians(180),degre ...
#if语句 if 条件 then 语句 elseif 条件 then 语句 else 语句 end if #case语句 case 条件 when 条件 then 语句 when 条件 then 语句 else 语句 end case #loop语句 fn:loop 语句 end loop fn; leave fn #退出循环 #while语句 fn:while 条件 do 语句 end while fn
#存储过程 #存储程序 delimiter #定义存储程序 create procedure getversion(out params varchar(20))  # params是传出参数 in传进 out传出 inout传回 begin select version() into params; #版本信息赋值 params end call getversion(@a); #调用存储过程 select @a; ---------------------------------------------------------------- delimiter #定义一个存储函数 creat ...
select tbexamineegrade.*,    row_number() over(partition by userid,TpID order by exscore desc) lev -------------------------------------------------- :查询员工的工资,按部门排序 select ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order from scott.emp; 执行结果: ENAME                  ...
select OrganLevelName,papername,      DATE_FORMAT(tp.DateCreated,'%Y-%m-%d %H:%i') as DateCreated,      tp.tpid,SavePaper,PaperSource,        CONCAT( DATE_FORMAT(ExamBegin,'%Y-%m-%d %H:%i'),              ' - ', DATE_FORMAT(ExamEnd,'%Y-%m-%d %H:%i'))     AS Exam,       SelectedMode,UserAlias      ...
Order By dbms_random.value ,为结果集的每一行计算一个随机数,dbms_random.value 是结果集的一个列(虽然这个列并不在select list 中),然后根据该列排序,得到的顺序自然就是随机的啦。 select user_id,user_name,dbms_random.value a from users order by 3; USER_ID USER_NAME   A ---------- -------------------- ----------------------- 7   Work     0.19171380001609610498 2 ...
ExercisePaperDAOImpl // 查询训练记忆试题     public List findTTMemory(int userid, int ttid, int ttgid) { String sql = "select * from tbTTrainMemory where userid=? and ttid=? and ttgid=? order by dbms_random.value"; Object[] args = { userid, ttid, ttgid }; return basedao.getJdbcTemplate().query ...
public int insertQuesGrade(QuesGrade quesGrade) { /** oracle 的一般做法         int id = baseDAO.getJdbcTemplate().queryForInt("select      SEQ_TBQUESGRADE.nextval from dual");        Object[] args = {id,quesGrade.getUserid(),quesGrade.getQid(),quesGrade.getWlgid()}; baseDAO.getJdbcTempla ...
select tree.*,   (select count(*) from treenodes where id<=tree.id) as rownum from treenodes tree; 使用相关子查询 传递参数然后计算个数
转自ystyaoshengting的专栏 在查询数据库的时候,我们有时候需要对查询出来的数据加上序列,1,2,3,……n 例如:我们根据表的某个字段排序后,要对这些数据加上序列,这个时候序号常常不是我们建表时设置好的自增的主键id,怎么办呢???? 可能我们会用变量来解决,如下 set @rownum=0; SELECT @rownum:=@rownum+1 as rownum, table_name.* FROM  table_name 如果在数据库中要用一句SQL语句来实现,这又改怎么办呢???? oracle数据库有专门的rownum来解决伪序列问题,但是mysql却到 ...
where nvl(t.parentid,0)=0 and et.userid = 1  %1$s order by et.etid desc;
原来的oracle select t.ttid,o.organname,         t.targettrain,         t.creator,         DateText(t.TTEnd) as DateRange,                               //这是自定义的函数         decode(tg.finishedMode, 1, '已达标', '未达标') as passmode,         decode(t.AllowView, 1, '允许', '不允许') as AllowView         from tbTarget ...
Oracle排序中NULL值处理的五种常用方法: 1、缺省Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前 2、使用nvl函数 nvl函数可以将输入参数为空时转换为一指定值,如 nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name 通过这个函数可以定制null的排序位置。 3、使用decode函数 decode函数比nvl函数更强大,同样它也可以将输入参数为空时转换为一指定的值,如 decode(employee_name,n ...
Global site tag (gtag.js) - Google Analytics