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;
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;
相关文章推荐
- debian安装Mysql
- 免安装Mysql配置过程
- mysql数据库delete数据时不支持表别名
- MySQLdb模块用法实例
- MySQL客户端输出窗口显示中文乱码问题解决办法
- MySQL的数据类型
- MySQL的基础操作
- 如何添加".Net Framework Data Provider for MySQL"配置信息到目标主机中?
- mysql数据库yum安装后默认装到 /var/lib/mysql下,手动换存储目录。
- MySql技术内幕-读书笔记1
- 配置mysql5.5主从服务器(转)
- MySQL安装与问题
- Hive无法使用DDL/return code 1错误/MetaStore错误/
- mysql 慢查询表记录开启
- mysql 并行数据库与分区(Partition)
- 从MySql中查出来的时间数据后面多了.0的问题
- MySQL windows集群(转)
- mysql查询安装目录与安装mysql时候如果遇到什么public key not installed 问题解决方案。
- mysql触发器的作用及语法
- MySQL max_allowed_packet设置及问题