1.1 从表中检索所有行和列

问题
查看表中的所有数据。
解决方案
对表使用 SELECT语句和特殊字符“*”:
select * from emp;
讨论
在SQL中,字符“*”具有特殊的含义。使用它,将从指定的表中返回每一列。这里由于没有使用WHERE子句,所以将会返回每一行。还有一种方法,就是分别列出每一列:

select empno,ename,job,sal,mgr,hiredate,comm,deptno from emp;

在交互执行的特定查询中,使用SELECT * 更容易些。然而,在写程序代码的时候,最好是分别指定每一列。它们的性能相同,但是,显式地指定列后就可以很清楚查询中究竟返回了哪些列。同样,其他人,而不是编写者自己,也更容易理解这样的查询(他们可能不知道查询中表的所有列)。

1.2 从表中检索部分行

问题
从表中查看满足特定条件的行。
解决方案
使用WHERE子句指定要保留哪些行。例如,要查看部门号码为10的所有员工:

select * from emp where deptno = 10

讨论
利用WHERE子句,可以只检索用户感兴趣的行,如果WHERE子句中的表达式对某行威震,则返回该行。
多数厂商都支持通用的运算符,例如:=、<、>、<=、>=、!、<>。另外,如果要检索满足多种条件的行,可以使用AND、OR和圆括号

查找满足多个条件的行

问题要返回满足多个条件的行。
解决方案
使用WHERE子句以及OR和AND子句。例如,如果要查找部门10中所有员工,所有得到提成的员工,以及部门20中工资不超过2000美金的员工,请使用如下语句:

select * from emp where deptno=10 or comm is not null or sal <=2000 and deptno=20

讨论
可以使用AND、OR以及圆括号的组合,来查找满足多个条件的数据,在解决方案的示例中,WHERE子句查找满足下列条件的数据行:

  • DEPTNO为10,或者
  • COMM不为NULL,或者
  • 工资最多为2000美金,且DEPTNO为20

    圆括号中的条件作为一个整体进行判断。
    例如,考虑一下,用下面的方式使用圆括号,结果为什么会有变化:

select * from emp where (deptno=10 or comm is not null or sal <=2000) and deptno=20

1.4 从表中检索部分列

问题
要查看一个表中特定列的值,而不是所有列的值。
解决方案
指定感兴趣的列。例如,如果只查看员工的名字、部门号和工资,请使用如下语句:
select ename,deptno,sal from emp
讨论
通过在SELECT 子句中指定列,可以保证不会返回多余的数据。在跨越网络检索数据时这非常重要,因为这样可以避免检索不需要的数据所带来的时间浪费。

1.5 为列取有意义的名称

问题
改变查询所返回的列明,使它们更具有可读性,更容易理解。例如求每个员工的工资和提成的查询:

select sal,comm from emp

什么是sal?是sale的缩写吗?还是某个人的名字?什么是comm?是表示communication吗?结果的标签应该更明确些。
解决方案
要改变查询结果列名,可以按这种格式使用AS关键字:原名AS新名。一些数据库不需要使用AS,但所有的数据库都接受这种用法:

select sal as salary,comm as commission from emp

讨论
使用AS关键字可以为查询返回的列名取个信命,即为这些列取别名所取的新名即使别名。使用比较好的别名,可以使其他人更容易理解查询结果。

1.6 在WHERE子句中引用取别名的列

问题
前面已经使用别名功能,为查询结果提供了更有意义的列名,而且也使用WHERE子句将一些数据排除在外了,然而,我们还想再WHERE子句中引用别名:

select sal as salary,comm as commission from emp where salary<5000

解决方案
将查询作为内联视图就可以引用其中区别性的列了:

select * from (select sal as salary,comm as commission from emp) x where salary < 5000

讨论
对这个简单的例子而言,可以不内联视图,也不在WHERE子句中直接引用COMM或SAL而得到相同的结果,本方案介绍的方法在下列情形的WHERE子句中都可以使用:

  • 聚集函数
  • 标量子查询
  • 视窗函数
  • 别名

将取别名的查询作为内联视图,便可以在查询外部查询中引用其中的别名列。为什么要这么做呢?WHERE子句是在SELECT之前进行处理的,这样,在处理求解“问题”查询的WHERE子句之前,SALARY和COMMISSION并不存在,要到WHERE子句处理完成之后,别名才生效。然而,FROM子句是在WHERE子句之前处理的。将原查询放在FROM子句中,那么,在最外层的WHERE子句之前,以及最外层的WHERE子句“看到”别名之前,就已经生成了查询结果。如果表列没有特别命名的话,这个技巧特别有用。


注意:这个解决方案中的内联视图别名为X。并非所有数据库都需要内联视图显式给内联视图取别名,但一些数据库是这样的,所有数据库都接受这种方式。


1.7 连接列值

问题
将多列值作为一列返回。例如,要查询EMP表,返回这样的结果集:

cookbook(1)相关推荐

  1. Notes of Python Cookbook (Chr1-Chr3)

    贴子主要关于自己的读书摘要,涉及到侵权请联系删除 第一章:数据结构和算法 # 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多 # 个变量.唯一的前提就是变量的数量必须跟序列元素 ...

  2. python cookbook(1)

    1.python中实现字符串的对齐:左对齐,居中对齐,右对齐>>> print ('|','hej'.ljust(20),'|','hej'.rjust(20),'|','hej'. ...

  3. R语言学习(常用)网址和书籍

    入门 R语言实战(第二版) R数据科学 提升 Thomas Rahlf, Data Visualisation with R – 111 Examples R Graphics Cookbook (g ...

  4. 一、PyTorch Cookbook(常用代码合集)

    PyTorch Cookbook(常用代码合集) 原文链接:https://mp.weixin.qq.com/s/7at6y2NcYaxGGN8syxlccA 谢谢作者的付出.

  5. 《Python Cookbook(第3版)中文版》——1.9 在两个字典中寻找相同点

    本节书摘来自异步社区<Python Cookbook(第3版)中文版>一书中的第1章,第1.9节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节内 ...

  6. Cisco IOS Cookbook 中文精简版(续)

    第十章 帧中继 10.1. 使用点对点子接口的方式配置帧中继 提问 ">每个PVC归属特定子接口的方式来配置帧中继 回答 中心配置 Central#configure terminal ...

  7. 不属于python标准库的是_《Python Cookbook(第2版)中文版》——1.10 过滤字符串中不属于指定集合的字符-阿里云开发者社区...

    本节书摘来自异步社区<Python Cookbook(第2版)中文版>一书中的第1章,第1.10节,作者[美]Alex Martelli , Anna Martelli Ravenscro ...

  8. 《Python Cookbook(第3版)中文版》——1.5 实现优先级队列

    本节书摘来自异步社区<Python Cookbook(第3版)中文版>一书中的第1章,第1.5节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节内 ...

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

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

最新文章

  1. 【Ubuntu】ubuntu设置GUI程序自启动
  2. 安装Windows 2012域控(For SQLServer 2014 AlwaysOn)
  3. spring学习(6)
  4. navicat premium 链接postgresql 无法加载表_POSTGRESQL 数据库结构体系 ||| 东来西去 三个角度看...
  5. 中国软件正版化的理想模型
  6. 运用Zabbix实现内网服务器状态及局域网状况监控(2) —— 环境配置
  7. CRISPR基因编辑
  8. 字符串的展开(洛谷P1098题题解,Java语言描述)
  9. 图的广度优先遍历和深度优先遍历
  10. Win下的驱动备份与还原
  11. 互联网大文件的传输方式
  12. 只能用于文本与图像数据?No!看TabTransformer对结构化业务数据精准建模 ⛵
  13. 数据结构上机实验1——线性表——班级管理系统
  14. 怎样把pdf转换成jpg文件
  15. day02 约束、数据库设计、多表查询、事务
  16. (zotero+坚果云+pdf expert+欧陆词典)实现PC平板同步阅读管理科研文献(完美教程)
  17. ERP : 出版行业解决方案
  18. 分布式存储系统——HBase
  19. 微信字号调整问题 html,微信H5适配 解决微信调整字体大小导致Html5页面混乱
  20. 【C++】黑马程序员C++核心编程学习笔记(完结)

热门文章

  1. mysql ibdata1过大_MySql ibdata1文件太大如何缩小
  2. 希尔伯特空间科普,从冯纽曼说起
  3. 益高机器人_开面馆选择奥特曼削面机投资小受益高
  4. jQuery中replaceWith()方法与unwarp()方法
  5. ajax跨域请求,请求成功但是走error
  6. BoundsChecker检查内存泄露
  7. 暑假)伪QQ项目ing
  8. 最美的十大精典英文爱情句子
  9. MySQL 存储过程,语法+示例,超详细!!
  10. numpy.random函数整合(部分)