• 数据库实验五 函数


    任务描述

    本关任务:对表达式取整

    相关知识

    四舍五入的函数 ROUND(X,D) 返回X,其值保留到小数点后D位,而第D位的保留方式为四舍五入。 若D的值为0,则对小数部分四舍五入。 若将D设为负值,保留X值小数点左边的D位

    TRUNCATE(X,D) 返回被舍去至小数点后D位的数字X。 若D的值为0,则不带有小数部分。 将D设为负数,则截X小数点左起第D位开始后面所有低位的值

    任务要求

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

    第一题 显示雇员姓名gyxm和扣费kf(工资gz的0.5%),要求四舍五入到个位。 第二题 显示雇员姓名gyxm和扣费kf(工资的0.5%),要求舍去小数部分(不是四舍五入)


    开始你的任务吧,祝你成功!

    1. use sale;
    2. #代码开始
    3. #第一题答案
    4. select gyxm,round(gz*0.05,0) as kf from gzry;
    5. #第二题答案
    6. select gyxm,truncate(gz*0.05,0) as kf from gzry;
    7. #代码结束

     

    任务描述

    本关任务:工作人员gzry数据表如图所示,使用字符串函数完成下列查询

    相关知识

    为了完成本关任务,你需要掌握: concat rpad char_length left

    concat

    concat(<字符串1>,<字符串2>,<字符串3>) 将各个字符串连接起来

    rpad

    rpad(<字符串>,<长度>,<填充字符>) 返回字符串,右面用填充字符填补,直到指定长度的字符串

    left

    LEFT(<字符串>,<长度>) 返回字符串的最左边的指定长度的字符

    char_length

    char_length(<字符串>) 返回字符串的长度,即字符个数

    任务要求

    第一题 查询员工信息(命名为ygxx),使用字符串函数连接部门(不足4位宽度的部分右边填充全角空格)、姓名(不足4位宽度的部分右边填充全角空格)、电话,按部门升序排列

    第二题 查询gzry数据表中姓王且名字为双字的员工的姓名和电话 (即王某某)


    开始你的任务吧,祝你成功!

    1. use sale
    2. #代码开始
    3. #答案一
    4. select concat(rpad(bm,4," "),rpad(gyxm,4," "),dh) as ygxx from gzry order by bm;
    5. #答案二
    6. select gyxm,dh from gzry where left(gyxm,1)="王" and char_length(gyxm)=3;
    7. #代码结束

    任务描述

    本关任务:灵活应用字符串函数显示顾客gk数据表的数据

    相关知识

    为了完成本关任务,你需要掌握: insert space mid right replace

    insert

    insert(<字符串>,<位置>,<长度>,<插入的字符串>) 返回一个字符串,将字符串中指定位置的指定长度的字符删除,插入指定的字符串。

    space

    space(<整数>) 返回指定整数的空格

    mid

    mid(<字符串>,<指定位置>,<指定长度>) 返回字符串从指定位置开始的指定长度的字符串

    right

    right(<字符串>,<指定长度>) 返回字符串右边的指定长度的字符串

    replace

    REPLACE(<字符串>,<源字符串>,<目标字符串>) 返回一个字符串,将字符串中所有的源字符串用目标字符串代替。

    任务要求

    顾客数据表gk如图所示

    第一问 显示每位顾客的姓名,两个字的中间插入两个空格,三个字的直接显示,列名为xm 第二问 显示每位顾客的姓名和电话(dh),电话按照999-9999-9999的格式显示 第三问 将顾客数据表中单位(dept)中的新一佳用佳惠替换


    开始你的任务吧,祝你成功!

    1. use sale;
    2. #代码开始
    3. #答案1
    4. SELECT INSERT(name, 2, 0, SPACE(2 * (3 - CHAR_LENGTH(name)))) AS xm FROM gk;
    5. #答案2
    6. select name,concat(left(tel,3),"-",mid(tel,4,4),"-",right(tel,4)) as dh from gk;
    7. #答案3
    8. update gk set dept=replace(dept,"新一佳","佳惠");
    9. select name,dept from gk;
    10. #代码结束

    任务描述

    本关任务:灵活应用日期函数进行查询

    相关知识

    为了完成本关任务,你需要掌握: year month datediff

    year

    year(日期) 返回日期的年号

    month

    month(日期) 返回日期的月号

    datediff

    datediff(日期1,日期2) 返回两个日期相差的天数

    任务要求

    xsd数据表部分数据如图所示

    第一问 查询2015年各月份(列名yf)的实际付款的和(列名sjje) 提示:按照xsrq的月份对sjfk汇总 第二问 library数据库的borrow数据表如图所示 book数据表的条形码、书名、售价字段如图所示 根据图书馆规定,借阅期限是30天,超过30天需要按书籍售价的1%每天收取罚款. 查询dzzh和罚款(fk列) (提示:该查询涉及到两个数据表borrow和book)


    开始你的任务吧,祝你成功!

    1. use sale;
    2. #代码开始
    3. #答案1
    4. select month(xsrq) as yf,sum(sjfk) as sjje from xsd where year(xsrq)=2015 group by month(xsrq);
    5. #第二问
    6. use library;
    7. #答案2
    8. select dzzh,(datediff(hsrq,jyrq)-30)*sj*0.01 as fk from borrow,book where book.txm=borrow.txm and datediff(hsrq,jyrq)>30;
    9. #代码结束

     

    任务描述

    本关任务:工作人员gzry数据表如图所示,使用条件函数完成下列查询

    相关知识

    为了完成本关任务,你需要掌握: if case when then

    if

    if(关系表达式,值1,值2) 当条件表达式为真,返回值1,否则返回值2

    case

    case <表达式> when <条件1> then <值1> when <条件2> then <值2> …… else <值n+1> end 若表达式的值为条件1则返回值1,否则若表达式的值为条件2则返回值1……若都不相同则返回值n+1

    任务要求

    第一题 显示员工的姓名和费用(fy列),其中工资(gz)在2000以下的交50元,否则交100元。

    第二题 显示员工的姓名和津贴(jt),其中部门(bm)是销售部津贴1000,办公室津贴800,采购部津贴500,仓库津贴300。


    开始你的任务吧,祝你成功!

    1. use sale;
    2. #代码开始
    3. #答案1
    4. select gyxm,if(gz<2000,50,100) as fy from gzry;
    5. #答案2
    6. select gyxm,case bm when "销售部" then 1000 when "办公室" then 800 when "采购部" then 500 else 300 end as jt from gzry;
    7. #代码结束

  • 相关阅读:
    python 实现单链表
    【简说八股】Redisson的守护线程是怎么实现的
    哪里下载Mac上最全面的系统清理工具,CleanMyMac X4.15中文版永久版资源啊
    为树莓派打实时preempt_rt补丁
    【Python】如果修改了第三方库(包)的源代码,该怎么做才能还原呢
    MySQL慢查询优化、索引优化和表优化总结
    AtCoder Beginner Contest 278 F
    Revit二次开发——族的基础
    网络安全(黑客)自学
    关于游戏介绍的HTML网页设计 HTML5期末考核大作业 HTML静态游戏网页作业 web前端开发技术 web课程设计 网页规划与设计
  • 原文地址:https://blog.csdn.net/weixin_66547608/article/details/131141243