mysql的常用语句

查询各个组中的关键字查询:

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;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值