Order by子句

形式:

order  by  排序字段1  [排序方式],  排序字段2  [排序方式], .....

说明:

对前面取得的数据(含from子句,where子句,group子句,having子句的所有结果)来指定按某个字段的大小进行排列(排序),排序只有2种方式:

正序: ASC(默认值),可以省略

倒序: DESC

如果指定多个字段排序(虽然不常见),则其含义是,在前一个字段排序中相同的那些数据里,再按后一字段的大小进行指定的排序。

limit子句

形式:

limit   [起始行号start], 要取出的行数num

说明:

表示将前面取得的数据并前面排好之后(如果有),对之指定取得“局部连续的若干条”数据。

起始行号start:第一行的行号为0, 可以省略,则为默认行号(0)。

要取得的行数:如果结果集中从指定的行号开始到最后没有这么多行,则就只取到最后。

此子句非常有用——主要用于网页上最常见的一个需求(现象):分页。

分页原理:

分页的前提:人为指定每页显示的条数,$pageSize = 3;

显示(取得)第1页数据:select * from 表名 limit  0,  $pageSize;

显示(取得)第2页数据:select * from 表名 limit  3,  $pageSize;

显示(取得)第3页数据:select * from 表名 limit  6,  $pageSize;

..................................................

$n:当前页码 $pageSize:每页显示多少条

显示(取得)第$n页数据:select * from 表名 limit  ($n-1)*$pageSize,  $pageSize;

group  by  分组子句

形式:

group  by  字段1  排序方式1,字段2 排序方式2, .....

通常都只进行一个字段的分组。

含义:

什么叫分组?就是将数据以某个字段的值为“依据”,分到不同的“组别”里。

分组的结果通常:

1,数据结果只能是“组”——没有数据本身的个体

2,数据结果就可能“丢失”很多特性,比如没有性别,身高,姓名,等等。

3,实际上,结果中通常只剩下“组”作为整体的信息:

首先是该组的本身依据值,

另外,这几个可能的值:组内成员的个数,组内某些字段的最大值,最小值,平均值,总和值。

其他字段,通常就不能用了。

4,如果是2个字段或以上分组,则其实是相当于对前一分组的组内,再进行后一依据的分组。

上述说明的结果,其实是反映在select语句中,就是select的“取出项”(输出项)就基本只剩下以上信息了

在分组查询中,基本都依赖于一下几个函数(聚合函数,统计函数):

count(*):  统计一组中的数量,通常用“*”做参数

max(字段名):获取该字段中在该组中的最大值。

min(字段名):获取该字段中在该组中的最小值。

sum(字段名):获取该字段中在该组中的总和。

avg(字段名):获取该字段中在该组中的平均值。

group_concat(字段名):获取该分组内的这个字段所有信息,每条逗号分隔

having子句

having子句其实概念跟where子句完全一样:

where是针对表的字段的值进行“条件判断”

having是只针对group by之后的“组”数据进行条件判断,即

其不能使用:字段名>10

但可以使用:count(字段名)>10, 或  max(price) > 2000, 但如果字段是分组依据,也可以。

当然,通常也可以使用select中的有效的字段别名,比如:

select count(*) as f1 , max(f1) as f2  from tab1  group by f3 having f1 > 5 and  f2 < 1000;

连接查询:字段的扩展

两张表字段的集合

Exp:select * from teacher join course on teacher.tno=course.tno

联合查询:数据的扩展

Exp:Select sname,ssex from student

Union

Select tname,tsex from teacher

子查询:把一个查询的结果当做另一个查询的条件
exp:SELECT sno,cno FROM score WHERE degree=(SELECT degree FROM score ORDER BY degree DESC LIMIT 1);

视图

单词:view

什么是视图:

视图可以看作是一个“临时存储的数据所构成的表”(非真实表),其实本质上只是一个select语句。只是将该select语句(通常比较复杂)进行一个“包装”,并设定了一个名字,其后就可以通过该名字并把该名字当作一个表来使用。

如果一个select语句比较复杂,又在多个页面需要使用它,则可以将它做成一个视图,方便使用。

又如果,某个数据表中的某些字段不想给别人看(不同公司之间的数据业务交换的时候),但另一个又需要给人看,此时也可以使用视图。

视图创建形式:

create  view   视图名 [(列名1,列名2,...)]   as  一条复杂select语句;

可以将select语句所取得的列重新命名,但也可以不重新命名,则使用select语句中的给定列名。

视图的使用

其实就是当作一个查询表来用(通常只用于select)

select  *  from  视图名  where 条件  order by .....。

修改视图:

alter view 视图名 [(列名1,列名2,...)] as select语句;

删除视图:

drop  view  [if exists] 视图名;

跟随我在oracle学习php(19)的更多相关文章

  1. Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)

    触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的 ...

  2. 跟随我在oracle学习php(10)

    正则表达式 做验证 做匹配 用符号来描述书写规则:/ 中间写正则表达式 /^ :匹配开头,$:匹配结尾 : /^ve/以ve开头的 /ve$/以ve结尾\d:一个任意的数字\w:一个任意的数字或字母\ ...

  3. 跟随我在oracle学习php(18)

    修改表: 一般概述 通常,创建一个表,能搞定(做到)的事情,修改表也能做到.大体来说,就可以做到: 增删改字段: 增:alter  table  表名  add  [column]  字段名  字段类 ...

  4. 跟随我在oracle学习php(17)

    通用设定形式 定义一个字段的时候的类型的写法. 比如: create  table  tab1  (f1  数据类型 ); 数据类型: 类型名[(长度n)]  [unsigned]  [zerofil ...

  5. 跟随我在oracle学习php(16)

    数据库的增删改查 增:create  database  [if  not  exists ] 数据库名  [charset  字符集]  [collate  字符排序规则]: 说明: 1,if  n ...

  6. 跟随我在oracle学习php(15)

    开发环境 独立开发环境:组成 Windows/Linux php Apache MySQL 集成开发环境:phpstudy wamp xammp 关系数据库: SQL: Struct Query La ...

  7. 跟随我在oracle学习php(14)

    CSS3的@keyframes用法详解: 此属性与animation属性是密切相关的,关于animation属性可以参阅CSS3的animation属性用法详解一章节. 一.基本知识: keyfram ...

  8. 跟随我在oracle学习php(13)

    常用的css样式 [class~="col-6"]:选择我所有类名中包含有col-6独立单词的元素 [class*="col-"]:选择所有类名中含有" ...

  9. 跟随我在oracle学习php(12)

    DOM 文档对象模型 body:(什么时候)找到标签 操作标签找到标签:(都会返回一个js对象)document.getElementById() 通过iddocument.getElementsBy ...

随机推荐

  1. JavaScript数组对象常用方法

    JavaScript数组对象常用方法 方法 形式 返回值 是否改变原数组 描述 concat -items: ConcatArray[] 追加之后的数组 否 连接两个或更多的数组,并返回结果.注意 c ...

  2. Exp3 免杀原理与实践 20164303 景圣

    Exp3 免杀原理与实践 一.实验内容 1. 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧 2. 通过组合 ...

  3. 2019.04.16打卡(java 数组)

    1.  要求输出数组中数据的平均值,并输出所有大于平均值的数据 代码 package block; import java.util.*; public class Average { public ...

  4. nodejs-使用multer实现多张图片上传,express搭建脚手架

    nodejs-使用multer实现多张图片上传,express搭建脚手架 在工作中,我们经常会看到用户有多张图片上传,并且预览展示的需求.那么在具体实现中又该怎么做呢? 本实例需要nodejs基础,本 ...

  5. Python3 tkinter基础 Spinbox 可输入 能调整的 从指定范围内选择参数的控件

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  6. 【做题】CERC2017B. Buffalo Barricades——时间倒流

    原文链接 https://www.cnblogs.com/cly-none/p/CERC2017B.html 题意:在一个网格平面上,有\(n\)个点,其中第\(i\)个点在以\((x_i, y_i) ...

  7. Redis Index

    Indexes 集群 主从模型 哨兵机制与RAFT算法 实践 单机多实例 开启Sentinel 存储 持久化 RDB 与 AOF 数据结构 内存管理 事务 并发问题 分布式锁 整体图 中间件 Jedi ...

  8. Java基础知识盘点(三)- 线程篇

    创建线程的方式及实现 一.继承Thread类创建线程类 1.定义Thread的子类,并重写run方法,因为该方法的方法体就是代表了线程要完成的任务,因此run方法又叫做执行体. 2.创建Thread子 ...

  9. hadoop配置项笔记 - hdfs

    hadoop版本:3.1.1 core-site.xml dfs.namenode.rpc-address 作用:rpc地址.我在使用distcp时显式使用到了. 默认值:port是8020 我的设置 ...

  10. Error: EACCES: permission denied, mkdir '......node-sass/build'错误解决方案

    安装node-sass时出现一下错误: gyp ERR! configure error gyp ERR! stack Error: EACCES: permission denied, mkdir ...