数据库实验五 函数

第1关:数值函数

任务要求

工作人员gzry数据表如图所示

数据库实验五 函数_第1张图片

第一题 显示雇员姓名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位宽度的部分右边填充全角空格)、电话,按部门升序排列。

数据库实验五 函数_第2张图片

第二题 查询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如图所示

数据库实验五 函数_第3张图片

第一问 显示每位顾客的姓名,两个字的中间插入两个空格,三个字的直接显示,列名为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数据表部分数据如图所示

数据库实验五 函数_第4张图片

第一问 查询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; 
#代码结束

你可能感兴趣的:(数据库)