朋友推荐了一本书《SQL Cookbook》,翻译过来就是《SQL经典实例》,讲的都是SQL编写层面的案例,例如获得随机数、NULL值判断、求中位数、日期计算等,都是日常工作中可能用到的,但是有些知识点可能稍微模糊,用的时候,得琢磨下,或者有些知识点不了解,你不知道通过SQL还可以实现某个功能,借此机会,系统回顾一下SQL相关的开发技能,争取了解之前不知道的,巩固之前模糊的知识点,跟大家共享读书笔记。

第一章 检索数据

1. 在SELECT语句中指定具体的列名,可以确保查询语句不会返回无关的数据。当在整个网络范围内检索数据时,这样做更重要,因为他避免了将时间浪费在检索不需要的数据上。

2. 新的列名被称作别名,他会让检索结果更易于理解,对于一些数据库,可以省略AS关键字,但所有的数据库都支持这个关键字。

3. WHERE子句比SELECT子句率先执行,当WHERE子句执行时,salary和commission尚不存在,直到WHERE子句执行了,这些别名列才会生效,

select sal as salary, comm as commissionfrom empwhere salary < 5000;

然而,FROM子句会先于WHERE子句执行,如果将最初的查询放入一个FROM子句,查询结果就可以在最外层的WHERE子句开始前产生,最外层的WHERE子句就可以“看到”别名列了,

select *from (
select sal as salary, comm as commissionfrom emp) xwhere salary < 5000;

4. MySQL中可以用concat连接多列的值,

select concat(cname, ' WORKS AS A ', job) from emp;

DB2、Oracle和PG使用竖线进行连接,

select ename || ' WORKS AS A '|| job from emp;

SQL Server则使用"+"进行连接,

select ename + ' WORKS AS A ' + job from emp;

5. 可以为CASE表达式的执行结果取一个别名,让结果集更有可读性。ELSE子句是可选的,若没有他,对于不满足测试条件的行,CASE表达式会返回NULL,

select ename, sal,case when sal <= 2000 then 'UNDERPAID'when sal >= 4000 then 'OVERPAID'else 'OK'end as statusfrom emp;

6. Oracle会在取得某一行数据再为其编号,同时使用rownum和等式条件是不对的,(除rownum = 1),

select * from emp where rownum <= 5;

7. NULL值不会等于或者不等于任何值,而且不能和其自身做比较,不能使用=或者!=,需要使用IS NULL或IS NOT NULL。

可以使用COALESCE将NULL值改为实际值,该函数会返回参数列表第一个非NULL的值,如果c不为0,返回c,否则返回0,

select coalesce(c, 0) from emp;

此处能使用CASE,但是明显COALESCE函数更加方便、更简洁,

select casewhen c is not null then celse 0endfrom emp;

8. 运算符%可以匹配任意长度的的连续字符,下划线_用于匹配单个字符。

9. 随机返回记录

DB2,

select ename, jobfrom emporder by rand() fetch first 5 rows only;

MySQL,

select ename, jobfrom emporder by rand() limit 5;

PG,

select ename, jobfrom emporder by random() limit 5;

Oracle,

select *from (
select ename, jobfrom emporder by dbms_random.value())where rownum <= 5;

SQL Server,

select *from (
select ename, jobfrom emporder by dbms_random.value())where rownum <= 5;

近期更新的文章:

《梅西 ≠ 一人一城?》

《小白学习MySQL - 表空间碎片整理方法》

《Oracle字符串类型扩容隐患》

《PG逻辑复制的REPLICA IDENTITY设置》

《Oracle、SQL Server和MySQL的隐式转换异同》

文章分类和索引:

《公众号800篇文章分类和索引》

《SQL Cookbook》 - 第一章 检索数据相关推荐

  1. NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译

    NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译 第一章第二节Mapping a class with XML第一 ...

  2. 第一章——程序数据集散地:数据库

    第一章--程序数据集散地:数据库 数据库的必要性 数据库可以高效的且条理分明的存储数据,更加迅速和方便的处理数据. 数据库的基本概念 1.SQLServer 由microsoft微软推出,多用于C#语 ...

  3. Python Cookbook --第一章:数据结构和算法(1)

    问题1:现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? >>> p = (4,5) >>> x,y = p >>&g ...

  4. 大数据 第一章 大数据概论

    第一章 大数据概论 1.1.大数据概念 ​ 按顺序给出数据存储单位:bit.Byte.KB.MB.GB.TB.PB.EB.ZB.YB.BB.NB.DB ​ 1Byte=8bit 1K=1024Byte ...

  5. 大数据技术原理与应用——第一章 大数据概述

    第一章 大数据概述 1.1 大数据时代 1.1.1 第三次信息化浪潮 信息化浪潮 发生时间 标志 解决的问题 代表企业 第一次浪潮 1980年前后 个人计算机 信息处理 Intel.AMD.IBM.苹 ...

  6. 交换平台(一)第一章:数据交换平台的一些基本概念

    目录 文章目录 第零章.前言:为什么?做什么?怎么做? 第一章.数据交换平台的一些基本概念 1.1 数据交换与交换平台 1.2 什么是物理隔离? 第零章.前言:为什么?做什么?怎么做? 最近带队做了公 ...

  7. 数据分析-第一章:数据载入及初步观察

    复习: 这门课程得主要目的是通过真实的数据,以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作.知道了课程的目的之后,我们接下来我们要正式的开始数据分析的实战教学,完成kaggle上泰 ...

  8. tatanic第一章:数据载入及初步观察

    # 第一章:数据载入及初步观察## 载入数据### 导入numpy和pandasimport pandas as pd import numpy as npimport os os.getcwd() ...

  9. MYSQL必知必会 第四章 检索数据

    文章目录 一.基础知识 1.MYSQL与SQL的区别: 2.数据库基本概念 二.检索数据 1.检索单个列 2.检索多个列 3.检索所有列 4.检索不同的行 5.限制结果 一.基础知识 1.MYSQL与 ...

最新文章

  1. stdafx.h的作用以及原理
  2. 【人工智能】人工智能的发展历程
  3. ALEIDoc EDI(1)--OverView
  4. c3p0、dbcp、druid三大连接池对比
  5. mysql 5.7参数目录_mysql5.7配置
  6. linux系统编程:自己动手写一个who命令
  7. Scala _04Scala字符串
  8. java 内省机制_Java反射与内省机制总结
  9. Sonar安装和常见问题解决
  10. 视频消除人声,适用于配音比赛等场合
  11. 如果您已经熟悉K8s,现在不妨试试K9s
  12. 【王道】操作系统OS第三章存储系统(三)
  13. 麻省理工学院赵明民:能穿墙透视的计算机视觉
  14. 简信CRM:企业需要定制CRM系统的三大理由
  15. 红楼梦人物分词及可视化
  16. 跨境电商支付方式和如何玩转跨境支付
  17. C:\Windows\System32\drivers\etc中的文件说明
  18. 第三篇 树莓派的串口通信和语音识别模块
  19. Java网络爬虫(三)爬取网络小说
  20. Linux——赋予普通用户root的权限

热门文章

  1. 赛尔号维护服务器要多久,网友提问:现在还有多少玩家玩赛尔号,游戏的寿命还有多久?...
  2. 论文笔记:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
  3. 如何入手C语言,怎样去学C语言
  4. qemu创建linux虚拟机(亲测有效,virt-manger方式)
  5. lle算法的matlab实现,lle算法详解及matlab代码实现
  6. 泛函分析笔记(十) 不动点定理及其应用
  7. JetBrains 全家桶启动图片更换方法
  8. 盖茨北京大学精彩演讲全文
  9. 基于RFID技术的智慧餐厅餐饮综合解决方案
  10. mysql商品规格设计_如何设计电商系统商品模块-规格