数据库实验五 函数

本文展示了使用SQL进行数据处理的各种函数应用,包括数值函数(四舍五入和舍去小数)、字符串函数(连接、填充、截取和格式化)以及日期和条件函数。通过不同的查询任务,如计算扣费、格式化显示员工和客户信息、日期汇总和条件判断,来阐述了数据库操作的核心技巧。
摘要由CSDN通过智能技术生成

第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; 
#代码结束

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马龙强_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值