第1关:数值函数
任务要求
工作人员gzry数据表如图所示
第一题 显示雇员姓名gyxm和扣费kf(工资gz的0.5%),要求四舍五入到个位。 第二题 显示雇员姓名gyxm和扣费kf(工资的0.5%),要求舍去小数部分(不是四舍五入)
use sale;
#代码开始
#第一题答案
SELECT gyxm, ROUND(gz*0.05, 0) AS kf FROM gzry;
#第二题答案
SELECT gyxm, FLOOR(gz*0.05) AS kf FROM gzry;
#代码结束
第2关:字符串函数一
任务要求
第一题 查询员工信息(命名为ygxx),使用字符串函数连接部门(不足4位宽度的部分右边填充全角空格)、姓名(不足4位宽度的部分右边填充全角空格)、电话,按部门升序排列。
第二题 查询gzry数据表中姓王且名字为双字的员工的姓名和电话 (即王某某)
use sale
#代码开始
#答案一
select concat(rpad(bm,4," "),rpad(gyxm,4," "),dh) as ygxx from gzry order by bm;
#答案二
SELECT gyxm,dh
FROM gzry
WHERE gyxm LIKE '王__';
#代码结束
第3关:字符串函数二
任务要求
顾客数据表gk如图所示
第一问 显示每位顾客的姓名,两个字的中间插入两个空格,三个字的直接显示,列名为xm
第二问 显示每位顾客的姓名和电话(dh),电话按照999-9999-9999的格式显示
第三问 将顾客数据表中单位(dept)中的新一佳用佳惠替换
use sale;
#第一问
-- select insert(name,2,0,space(2*(3-char_length(name))) as xm from gk;
SELECT INSERT(name, 2, 0, SPACE(2 * (3 - CHAR_LENGTH(name)))) AS xm FROM gk;
#第二问
select name,concat(left(tel,3),"-",mid(tel,4,4),"-",right(tel,4)) as dh from gk;
#第三问
update gk set dept=replace(dept,"新一佳","佳惠");
select name,dept from gk;
#代码结束
第4关:日期函数
任务要求
xsd数据表部分数据如图所示
第一问 查询2015年各月份(列名yf)的实际付款的和(列名sjje) 提示:按照xsrq的月份对sjfk汇总
第二问 library数据库的borrow数据表如图所示 book数据表的条形码、书名、售价字段如图所示 根据图书馆规定,借阅期限是30天,超过30天需要按书籍售价的1%每天收取罚款. 查询dzzh和罚款(fk列) (提示:该查询涉及到两个数据表borrow和book)
use sale;
#代码开始
#答案1
select month(xsrq) as yf,sum(sjfk) as sjje from xsd where year(xsrq)=2015 group by month(xsrq);
use library;
#答案2
select dzzh,(datediff(hsrq,jyrq)-30)*sj*0.01 as fk from borrow,book where book.txm=borrow.txm and datediff(hsrq,jyrq)>30;
#代码结束
第5关:条件函数
第一题 显示员工的姓名和费用(fy列),其中工资(gz)在2000以下的交50元,否则交100元。
第二题 显示员工的姓名和津贴(jt),其中部门(bm)是销售部津贴1000,办公室津贴800,采购部津贴500,仓库津贴300。
use sale;
#代码开始
#答案1
SELECT gyxm, CASE WHEN gz < 2000 THEN 50 ELSE 100 END AS fy
FROM gzry;
#答案2
SELECT gyxm,
CASE bm
WHEN '销售部' THEN 1000
WHEN '办公室' THEN 800
WHEN '采购部' THEN 500
WHEN '仓库' THEN 300
ELSE 0
END AS jt
FROM gzry;
#代码结束