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. ceph添加osd(ceph-deploy)

    修改主机名和 /etc/hosts 关闭防火墙和 SELINUX 安装和配置 NTP ceph-deploy 节点安装 安装 ceph-deploy sudo yum install ceph-dep ...

  2. Linux环境下部署开源版“禅道”方法

    1.开源版安装包下载(Linux系统版本查看命令 uname -a) 32位 [root@iZbp~]# wget http://dl.cnezsoft.com/zentao/9.0.1/ZenTao ...

  3. centos6删除nginx

    1.ps -ef|grep nginx 查看nginx进程 2.找到nginx相对应的位置 3.停止nginx服务: 4.删除nginx安装的相关路径(根据自己安装的情况来删除) 如果是yum安装,就 ...

  4. Unity 新手入门 如何理解协程 IEnumerator yield

    Unity 新手入门 如何理解协程 IEnumerator 本文包含两个部分,前半部分是通俗解释一下Unity中的协程,后半部分讲讲C#的IEnumerator迭代器 协程是什么,能干什么? 为了能通 ...

  5. 换个角度聊聊FaaS

    Serverless/FaaS伴随着k8s的热度增加,也成为了热门话题.相关文章介绍了很多,这里笔者不一一赘述,而是从个人见解上聊聊关于FaaS的架构和意义. FaaS可能的架构优化 从AppEngi ...

  6. Hello2 source analysis

    在example目录下的web\servlet\hello2\src\main\java\javaeetutorial\hello2路径里可以找到hello2的GreetingServlet.java ...

  7. HDU 2665 Kth number(主席树静态区间第K大)题解

    题意:问你区间第k大是谁 思路:主席树就是可持久化线段树,他是由多个历史版本的权值线段树(不是普通线段树)组成的. 具体可以看q学姐的B站视频 代码: #include<cmath> #i ...

  8. Vue-admin工作整理(九): 状态管理Vuex-state和getters

    前提:通过项目结构个人设置创建的项目 store文件下actions.js.mutations.js.state.js都是根级别的状态管理,引用入口是通过index.js来实现,整个Vuex处理逻辑为 ...

  9. 区块链 编译android geth 填坑记录 ubuntu

    下载geth 源码  直接 make android 下载android ndk sdk 配置环境变量cd 安装golang  设置环境变量 发现没有gomobile命令 按照wiki方法 执行安装g ...

  10. 通过java代码往mysql数据库中写入日期相关数据少13个小时

    通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...