sql高级语法之case语句

  • 1.创建数据库
  • 2.创建表
  • 3.CASE语句
    • 语法格式1
    • 示例
    • 语法格式2
    • 示例

1.创建数据库

create DATABASE advanced_prac;
use advanced_prac;

2.创建表

CREATE TABLE bonuses_depa1 (--旧奖金表staff_id INT NOT NULL, --员工idstaff_name CHAR(50), --员工名字job VARCHAR(30),--员工岗位bonus NUMERIC );--津贴CREATE TABLE new_bonuses_depa1 (--新奖金表staff_id INT NOT NULL, staff_name CHAR(50), job VARCHAR(30),bonus NUMERIC );

插入数据
旧表

INSERT INTO bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(23,'wangxia','developer',5000);
INSERT INTO bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(24,'limingying','tester',7000);
INSERT INTO bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(25,'liulili','quality control', 8000);
INSERT INTO bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(29,'liuxue','tester',8000);
INSERT INTO bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(21,'caoming','document developer',11000); 

新表

INSERT INTO new_bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(23,'wangxia','developer', 7000);
INSERT INTO new_bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(27,'wangxuefen','document developer',7000);
INSERT INTO new_bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(28,'denghui','quality control',8000);
INSERT INTO new_bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(25,'liulili','quality control',10000);
INSERT INTO new_bonuses_depa1(staff_id, staff_name, job, bonus) VALUES(21,'caoming','document developer',12000);

查询表bonuses_depa1中的数据。

SELECT * FROM bonuses_depa1;

返回结果:

查询表new_bonuses_depa1中的数据。

SELECT * FROM new_bonuses_depa1;

返回结果:

3.CASE语句

case表达式的返回类型是所有返回值的兼容聚合类型,而且取决于使用它的上下文。如果在上下文中使用字符串,结果将返回为字符串。如果在上下文中使用数字,结果返回为十进制、实数或整数值。

语法格式1

CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...][ELSE result] END

要求:当compare_value被满足时,返回对应的result,否则返回ELSE语句后的result,如果没有ELSE语句,则返回NULL

示例

查询bonuses_depa1表,如果staff_name为“wangxia”则输出漂亮,如果staff_name为“liulili”则输出愚蠢,其余输出“普通”。
sql语句

SELECT bd.STAFF_NAME,--查询项
CASE bd.STAFF_NAME --比较的项
WHEN 'wangxia' THEN '漂亮'--如果是“wangxia”输出“漂亮”
WHEN 'liulili' THEN '愚蠢'--如果是“liulili”输出“愚蠢”
ELSE '普通' --其余输出普通
END AS EVALUATE --输出项别名
FROM bonuses_depa1 bd; --查询的表以及起的别名

执行结果

语法格式2

CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...][ELSE result] END

当condition被满足时,返回对应的result,否则返回ELSE语句后的result,如果没有ELSE语句,则返回NULL

示例

要求:比较两表new_bonuses_depa1和bonuses_depa1的津贴数据,对比员工津贴变化情况。
sql语句

SELECT bd.STAFF_NAME, --查询此表项
CASE --case语句开始
WHEN nbd.BONUS > bd.BONUS THEN 'increased' --如果nbd.BONUS > bd.BONUS时输出'increased'
WHEN nbd.BONUS = bd.BONUS THEN 'equal' --如果nbd.BONUS = bd.BONUS时输出'equal'
ELSE 'decreased' --否则输出'decreased'
END AS DIFF --case语句结束,并将输出结果列取别名DIFF
FROM new_bonuses_depa1 nbd, bonuses_depa1 bd --分别给两个表起别名
WHERE nbd.STAFF_ID = bd.STAFF_ID--两表联系条件(员工id相同)

输出结果

sql高级语法之case语句相关推荐

  1. sql高级语法之窗口函数调用

    sql高级语法之窗口函数调用 创建表 DENSE_RANK() RANK() ROW_NUMBER() LEAD() DENSE_RANK():为组内值生成连续排序号,其中,相同值具有相同序号 LAG ...

  2. JAVA语法中case语句的特性

    JAVA语法中case语句的特性: 1.case拥有穿透机制, 若case后不写break,如果命中了某个case语句步骤,下面的case结果将会同时执行.建议写完一个case后 针对break的增加 ...

  3. SQL高级语法学习总结(一)

    基础语法呢,就是简单的对行列进行增删改查,看上一篇.SQL基础语法学习总结,高级用法无非是条件更多,能实现的需求更多,其中涉及到非常多的关键字,本篇博客就进行一下总结.本文所有用法均在mysql环境下 ...

  4. Win32高级语法 条件测试语句与分支语句

    .if 表达式1 .elseif 表达式2 .else 所以表达式为否 .endf ;if语句结束 下面两段程序分别使用汇编语法与高级语法对程序进行条件测试和分支, 弹出对话框当点击"是&q ...

  5. oracle中sql语句排序,Oracle SQL排序方式与case语句

    我在理解带有case语句的oracle(12c)sql order by子句时遇到困难.我有一张包含以下数据的表格, SELECT DEPT_NO, DEPT_NAME FROM SORTNG_LOG ...

  6. sql高级语法之IF、IFNULL

    IF语句 语法格式 IF(expr1,expr2,expr3) 当expr1为true,IF(expr1,expr2,expr3)返回结果为expr2,否则返回expr3 示例 sql语句 SELEC ...

  7. mysql 高级语法_3、sql高级语法(一)

    1.规定要返回的数目 mysql中 #从websites表中返回5条记录,没有5条记录则返回全部 select * from websites limit 5; 2.like语法 #1 筛选出name ...

  8. mysql能用case嵌套sql吗,关于sqlserver中查询语句中嵌套case语句使用方法

    ryxxlong的博客 Sql server 中的 CASE 语句文章, 链接 http://ryxxlong.iteye.com/blog/531221 写的比较详细,具体内容如下,主要用于自己以后 ...

  9. SQL基础语法学习总结

    本篇博客对于sql的基础语法做一个总结,学的东西太多太杂,总是不能记住太多东西,所以很多东西,会用,但是背不下来,毕竟不可能把所有语法和关键字都背完啊,本篇文章呢就用通俗易懂的话做一个基础知识的总结. ...

最新文章

  1. SQL函数Group_concat用法
  2. 实现自己的连接池(一)
  3. JAVA期末简答题参考
  4. tif文件转pdf_PPT怎么转换成PDF文件?可以帮到你的PPT转PDF方法
  5. expect工具使用
  6. 程序员过关斩将--少年派登录安全的奇幻遐想
  7. C#中常用的几个委托
  8. 中文代码示例之Vuejs入门教程(一)
  9. IDEA代码行宽设置
  10. Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理
  11. jdbc 自增id 原理_如何实现 Oracle 的自增序列,两步轻松搞定
  12. gradle错误 dependency.systemPath‘ for com.alibaba:jconsole:jar must specify an absolute path
  13. vc2010, fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt解决办法
  14. miui8 android.policy,小米MIUI8系统调教记:轻快好省 畅爽静稳
  15. 金融行业比较有名气的公司
  16. 漏洞复现:DNS 缓存投毒的经典—— 2008年 kaminsky 漏洞
  17. ACP报名考试有学历限制吗?
  18. 【低碳发展案例研究】中国西部中小城市低碳发展研究——以泸州市为例
  19. php 字符串编码方式转换,PHP 字符串编码的转换
  20. PyCharm的配置(背景颜色+字体大小+行号+解释器选择等)

热门文章

  1. Java-虚拟机-执行引擎/解释器/编译
  2. C++自学20:指针/指针的指针/const
  3. Hello,移动WEB—px,dp,dpr像素基础
  4. 【学术篇】SDOI2008 仪仗队
  5. Highcharts 统计图
  6. java第三次实验作业
  7. Myeclipse快键键
  8. 菜鸟的MySQL学习笔记(三)
  9. React+TS免注册DOM页面dialog弹窗
  10. Hybrid App开发设计与实现