select语法一般结构:

 SELECT [ALL|DISTINCT] <目标列表达式> [别名] [, <目标列表达式> [别名]]...
FROM <表名或视图名> [别名] [,<表名或视图名> [别名]]...
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]

可知select语句是由几个组件或者说子句构成。有一些子句不可缺少(select子句),但有一些可以不用使用。

子句名称 使用目的
select 确定结果集中应该包含哪些列
from 指明所要提取数据的表, 以及这些表是如何连接的
where 过滤不需要的数据
group by 用于对具有相同列值的行进行分组
having 过滤掉不需要的组(必须同group by子句一起用)
order by 按一个或多个列,对最后结果集中的行进行排序

0.select子句

  作为select语句第一个部分,select是最后被执行的,因为需要知道结果集中所有可能包含的列。

select * from department;

  这里*代表通配符,意思是从department表中选择所有的列,相当于将department中所有属性都写出来,如果要只显示需要的属性列,直接写出即可。当然也可以对select子句进行一下修饰。

  • 字符,比如数字或字符串
  • 表达式,如dept_id * 3
  • 调用内建函数,如upper(name)
  • 用户自定义的函数

  通过查询,返回的是每个列的默认属性名,也可以自定义名,即取别名,可以属性名后直接加别名,也可以属性名 as 别名。

  默认情况select语句是不去除重复行的,若不需要则在其后加distinct,如果显示所有的则用all(默认)。但是一定要注意:使用distinct,数据库会对查询结果进行排序,这对于较大的结果集是很浪费时间的,降低效率,因此不要随意使用。

1.frome子句

  from子句定义了查询中所用的表,以及连接这些表的方式。

2.where子句

  where子句用于在结果集中过滤掉不需要的行。

  where后面跟的是条件表达式,满足条件的元组将会被选出。如:

select emp_id, fname, lname, start_date, title
from employee
where title = 'Head Teller';

  可以看出,仅仅title为Head Teller的元组被列了出来。

  条件表达式是多种多样的,这里仅仅用了,相等的条件,其他表达式以后解释。

3.group by和having子句

  group by子句用于根据列值对数据进行分组。having子句与group by子句配合使用,选取满足条件的元组。

select d.name, count(e.emp_id) num_employees
from department d inner join employee e on d.dept_id = e.dept_id
group by d.name
having count(e.emp_id) > 2;

4.order by子句

  order by子句用于对结果集中的原始列数据或是根据列数据计算的表达式结果进行排序。

  如一般情况下的查询

select open_emp_id, product_cd
from account;

  可见结果没有次序,如果使用order by子句

select open_emp_id, product_cd
from account
order by open_emp_id;

  从结果上看,结果按照open_emp_id升序排列(默认),如果想要降序排列,则在后面跟desc。也可以按照多个属性升序或降序排列。

SQL入门之查询入门的更多相关文章

  1. SQL查询入门(下篇)

    SQL查询入门(下篇)   文章转自:http://www.cnblogs.com/CareySon/archive/2011/05/18/2049727.html 引言 在前两篇文章中,对于单表查询 ...

  2. SQL Server审计功能入门:更改跟踪(Change Tracking)

    原文:SQL Server审计功能入门:更改跟踪(Change Tracking) 介绍 更改跟踪是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制.常规的,自定义变更跟踪和读取跟踪数据, ...

  3. SQL Server审计功能入门:CDC(Change Data Capture)

    原文:SQL Server审计功能入门:CDC(Change Data Capture) 介绍 SQL Server 2008引入了CDC(Change Data Capture),它能记录: 1. ...

  4. SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

    本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Se ...

  5. sql注入(从入门到进阶)

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进 ...

  6. MongoDB 入门之查询(find)

    MongoDB 入门之查询(find) 1. find 简介 (1)find的第一个参数决定了要返回哪些文档. 空的查询文档会匹配集合的全部内容.默认就是{}.结果将批量返回集合c中的所有文档. db ...

  7. SQL Server审计功能入门:SQL Server审核 (SQL Server Audit)

    原文:SQL Server审计功能入门:SQL Server审核 (SQL Server Audit) 介绍 Audit是SQL Server 2008之后才有的功能,它能告诉你"谁什么时候 ...

  8. SQL Server AlwaysON从入门到进阶(3)——基础架构

    本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本文将更加深入地讲解WSFC所需的核心组件.由于AlwaysOn和FCI都需要基于WSFC之上,因此我们首先要了解在Wind ...

  9. SQL Server AlwaysON从入门到进阶(2)——存储

    本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本节讲解关于SQL Server 存储方面的内容,相对于其他小节而言这节比较短.本节会提供一些关于使用群集或者非群集系统过程 ...

随机推荐

  1. 20155218 《Java程序设计》实验三(Java面向对象程序设计)实验报告

    20155218 <Java程序设计>实验三(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)编码标准 在IDEA中使用工具(Code->Reformate Code) ...

  2. [arc062E]Building Cubes with AtCoDeer

    Description 传送门 Solution 这道题直接暴力就好..毕竟只要枚举了前后两个瓷砖的方向和编号,其他瓷砖的颜色就是确定的了. 然而场上我的去重除了问题qaq. 我们钦定在立方体最前面的 ...

  3. 【转载】Ogre3d 2.1 源码编译安装教程

    原文:Ogre3d 2.1 源码编译安装教程 今年是3D手游年,今年也是游戏引擎战争进入白热的一年. 移动游戏的红海时代,让各大端游也忍不住纷纷伸出大白腿,Unreal.CryEngine纷纷宣布自己 ...

  4. 运行ntpdate报错:Temporary failure in name resolution

    一.问题报错: 忽然发现某台机器时间慢了些几分钟,之前没有搭建ntpd服务,目前都是使用的ntpdate加定时任务进行时间同步.直接执行ntpdate报错如下: # ntpdate cn.pool.n ...

  5. Mysql:存储过程游标不进循环的原因详解

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客给刚接触存储过程的朋友做个引导作用,目的是解决游标不走循环 很多人发现他的游标,无论是嵌套循环还是单层 ...

  6. 解析build.gradle文件

    Gradle是一个非常先进的项目构建工具,它使用了一种基于Groovy的领域特定语言DSL来声明项目设置,摒弃了传统XML(如Ant和Maven)的各种繁琐配置 项目结构如上图: 1.最外层目录下的b ...

  7. 【Jmeter测试】使用Java请求进行Dubbo接口的测试

    如何构建一个Dubbo接口测试的通用框架(https://github.com/nitibu/jmeter-dubbo-test)​从上面的流程我们可以看出,测试类大致的一个结构: 使用json文件来 ...

  8. 面试时让你说一个印象最深的bug,该怎么回答

    其实,面试官并不关心你描述的这个bug是否真的有价值,或有多曲折离奇?他只是: * 了解你平时工作中的测试能力 所以,这就要求的你平时工作中遇到bug时试着自己去定位,定位bug的过程远比你的单纯的执 ...

  9. 第六篇 native 版本的Postman如何通过代理服务器录制Web及手机APP请求

    第四篇主要介绍了chrome app版本的postman如何安装及如何录制Web脚本,比较简单. 但是chrome app 版本和native 版本相比,对应chrome app 版本官方已经放弃支持 ...

  10. 拉格朗日乘子法与KKT条件 && SVM中为什么要用对偶问题

    参考链接: 拉格朗日乘子法和KKT条件 SVM为什么要从原始问题变为对偶问题来求解 为什么要用对偶问题 写在SVM之前——凸优化与对偶问题 1. 拉格朗日乘子法与KKT条件 2. SVM 为什么要从原 ...