您的位置:首页 > 数据库 > MySQL

mysql的常用语句

2015-06-06 10:27 671 查看
查询各个组中的关键字查询:

SELECT e1.empno FROM emp e1,emp e2 WHERE e1.empno=e2.empno AND e2.hiredate in (SELECT max(hiredate)from emp GROUP BY deptno)and e1.deptno=30

mysql存储过程的例句:

CREATE get3(IN p_count INT,OUT s_avg  INT)

BEGIN

    DECLARE i int DEFAULT 0;

    DECLARE sum int DEFAULT 0;

   DEClARE  temp int ;  

    WHILE i<p_count 

DO 

   set temp=LPAD(RAND()*10000,4,0);

INSERT  TScore() VALUES (LPAD(RAND()*1000,4,0),NuLL,NULL,NULL,NULL,temp,NULL,NULL);

    SET sum=sum+temp;

    SET i=i+1;

    END WHILE;

   set s_avg=sum/p_count;

    

    END;

mysql创建函数的例句

CREATE get2(deptno INT)

 RETURNS int(11)

BEGIN

    DECLARE lateempno INT;

    SELECT e1.empno into lateempno FROM emp e1,emp e2 WHERE e1.empno=e2.empno AND e2.hiredate in (SELECT max(hiredate)from emp GROUP BY deptno)and e1.deptno=30;

    

    RETURN lateempno;

    END;

要求表环境为emp,dept。

--使用if else 或case when语句完成

1.创建一个函数,返回类型为varchar(50),函数名任意。

功能要求:

根据员工的薪资数(sal为薪资列),为员工薪资水平标记层次;

薪资小于1000:民工;

大于1000并且小于2000:基层;

大于2000小于3500:白领;

大于3500:高富帅;

其他:不稳定人员

调用函数,要求显示员工姓名(ename),薪资水平。

提示:员工薪资为参数

  

CREATE FUNCTION getCengci(sal INT)

RETURNS VARCHAR(50)

BEGIN

    DECLARE cengci VARCHAR(50);

      IF sal>3500 THEN

          SET cengci='高富帅';

      ELSE IF sal>2000 THEN

           SET cengci='白领';

      ELSE IF  sal>1000 THEN

          SET cengci='基层';

      ELSE

          SET cengci='不稳定人员';

          END IF;

          END IF;

          END IF;

   RETURN cengci;

    END

2.创建一个函数,返回类型为int,函数名任意。

功能要求:

输入部门编号emp表中deptno为部门编号,返回该部门入职(hiredate)最晚的员工的员工编号;

提示:用到聚合函数来判断入职时间

CREATE  FUNCTION get2(deptno INT)

    RETURNS INT

    

    BEGIN

    DECLARE lateempno INT;

     SELECT empno INTO lateempno FROM emp WHERE  hiredate=(SELECT MAX(hiredate) FROM emp);

     RETURN lateempno;

    END

3.创建一个存储过程,循环向表emp插入员工及员工编号、薪资2项信息

要求:

员工编号采用随机生成机制(随机数4位,不满4位向左补0)  4

员工薪资采用随机生成机制(随机数5位及以下)   int  

1个入参,输入要插入的员工个数;

1个出参,输出插入的员工的薪资平均数; avg

CREATE

   

    PROCEDURE get3(IN p_count INT,OUT s_avg  INT)

   

    BEGIN

    DECLARE i int DEFAULT 0;

    DECLARE sum int DEFAULT 0;

   DEClARE  temp int;  

    WHILE i<p_count 

DO 

   set temp=LPAD(RAND()*10000,4,0);

INSERT  TScore() VALUES (LPAD(RAND()*1000,4,0),NuLL,NULL,NULL,NULL,temp,NULL,NULL);

    SET sum=sum+temp;

    SET i=i+1;

    END WHILE;

   set s_avg=sum/p_count;

    

    END

SELECT e1.empno INTO lateempno FROM emp e1,emp e2 WHERE e1.empno=e2.empno AND e2.sal in (SELECT max(sal)from emp GROUP BY deptno ) and e1.deptno=30;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: