《SQL Cookbook》 - 第一章 检索数据
朋友推荐了一本书《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》 - 第一章 检索数据相关推荐
- NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译
NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译 第一章第二节Mapping a class with XML第一 ...
- 第一章——程序数据集散地:数据库
第一章--程序数据集散地:数据库 数据库的必要性 数据库可以高效的且条理分明的存储数据,更加迅速和方便的处理数据. 数据库的基本概念 1.SQLServer 由microsoft微软推出,多用于C#语 ...
- Python Cookbook --第一章:数据结构和算法(1)
问题1:现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? >>> p = (4,5) >>> x,y = p >>&g ...
- 大数据 第一章 大数据概论
第一章 大数据概论 1.1.大数据概念 按顺序给出数据存储单位:bit.Byte.KB.MB.GB.TB.PB.EB.ZB.YB.BB.NB.DB 1Byte=8bit 1K=1024Byte ...
- 大数据技术原理与应用——第一章 大数据概述
第一章 大数据概述 1.1 大数据时代 1.1.1 第三次信息化浪潮 信息化浪潮 发生时间 标志 解决的问题 代表企业 第一次浪潮 1980年前后 个人计算机 信息处理 Intel.AMD.IBM.苹 ...
- 交换平台(一)第一章:数据交换平台的一些基本概念
目录 文章目录 第零章.前言:为什么?做什么?怎么做? 第一章.数据交换平台的一些基本概念 1.1 数据交换与交换平台 1.2 什么是物理隔离? 第零章.前言:为什么?做什么?怎么做? 最近带队做了公 ...
- 数据分析-第一章:数据载入及初步观察
复习: 这门课程得主要目的是通过真实的数据,以实战的方式了解数据分析的流程和熟悉数据分析python的基本操作.知道了课程的目的之后,我们接下来我们要正式的开始数据分析的实战教学,完成kaggle上泰 ...
- tatanic第一章:数据载入及初步观察
# 第一章:数据载入及初步观察## 载入数据### 导入numpy和pandasimport pandas as pd import numpy as npimport os os.getcwd() ...
- MYSQL必知必会 第四章 检索数据
文章目录 一.基础知识 1.MYSQL与SQL的区别: 2.数据库基本概念 二.检索数据 1.检索单个列 2.检索多个列 3.检索所有列 4.检索不同的行 5.限制结果 一.基础知识 1.MYSQL与 ...
最新文章
- stdafx.h的作用以及原理
- 【人工智能】人工智能的发展历程
- ALEIDoc EDI(1)--OverView
- c3p0、dbcp、druid三大连接池对比
- mysql 5.7参数目录_mysql5.7配置
- linux系统编程:自己动手写一个who命令
- Scala _04Scala字符串
- java 内省机制_Java反射与内省机制总结
- Sonar安装和常见问题解决
- 视频消除人声,适用于配音比赛等场合
- 如果您已经熟悉K8s,现在不妨试试K9s
- 【王道】操作系统OS第三章存储系统(三)
- 麻省理工学院赵明民:能穿墙透视的计算机视觉
- 简信CRM:企业需要定制CRM系统的三大理由
- 红楼梦人物分词及可视化
- 跨境电商支付方式和如何玩转跨境支付
- C:\Windows\System32\drivers\etc中的文件说明
- 第三篇 树莓派的串口通信和语音识别模块
- Java网络爬虫(三)爬取网络小说
- Linux——赋予普通用户root的权限
热门文章
- 赛尔号维护服务器要多久,网友提问:现在还有多少玩家玩赛尔号,游戏的寿命还有多久?...
- 论文笔记:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
- 如何入手C语言,怎样去学C语言
- qemu创建linux虚拟机(亲测有效,virt-manger方式)
- lle算法的matlab实现,lle算法详解及matlab代码实现
- 泛函分析笔记(十) 不动点定理及其应用
- JetBrains 全家桶启动图片更换方法
- 盖茨北京大学精彩演讲全文
- 基于RFID技术的智慧餐厅餐饮综合解决方案
- mysql商品规格设计_如何设计电商系统商品模块-规格