精华内容
下载资源
问答
  • 模糊查询 ...26.查询emp表中以刘字开头员工,显示员工姓名 select name from emp where name like '刘%'; 多行函数查询 多行函数也叫聚合函数,根据某一列或所有列进行统计 多行函数不能用在whe

    模糊查询
    like操作符用于where字句中搜索列中的指定模式
    可以和通配符(%、_)配合使用,其中%表示0或多个任意字符,_表示一个任意字符

    25.查询emp表中包含涛字的员工,显示员工姓名

    select name from emp where name like '%涛%';
    

    26.查询emp表中的以刘字开头的员工,显示员工姓名

    select name from emp where name like '刘%';
    

    多行函数查询
    多行函数也叫聚合函数,根据某一列或所有列进行统计
    多行函数不能用在where中
    28.统计emp表中薪资大于3000员工的个数

    select count(*)from emp where sal>3000;
    

    29,求emp表中的最高、低薪资

    select max(sal) from emp;
    select min(sal) from emp;
    

    30统计emp表中所有员工的薪资总和(不包括奖金)

    select sum(sal) from emp;
    

    31.统计emp表中员工的平均薪资

    select avg(sal) from emp;
    

    分组查询
    GROUP BY语句根据一个或者多个列对结果进行分组
    聚合函数在查询时,如果没有分组,默认会将整个查询结果看做是一个租进行统计。如果有分组,分了多少组,就会按照多少组进行统计

    不分组,统计emp表中的人数

    select count (*) from emp;
    //按照部门进行分组,在使用count进行统计数据
    select count (*)from emp group by dept;
    

    32.对emp表暗中部门进行分组,查看分组结果

    select * from emp group by dept;
    

    33.对员工表按照职位进行分组,并统计每个职位的人数,显示职位和对应人数

    select job, count(*) from emp group by job;
    

    34.对emp表按照部门进行分组,求每个部门的最高薪资,显示部门名称和最高薪资

    select job, max(sal)from emp group by dept;
    

    排序查询
    35.对emp所有员工的薪资进行升序,显示员工姓名、薪资

    select name,sal from emp order by sal;
    select name,sal from emp order by sal asc;
    

    35.对emp所有员工的奖金进行升=降序,显示员工姓名、奖金

    select name, bonus from emp order by bonus desc;
    

    分页查询
    在MySQL中,通过limit进行分页查询
    语法:limit(页码-1)*每页显示记录数,每页记录数
    37.查询emp表中的所有记录,分页显示,每页三条记录,返回第一页

    select * from emp limit 0,3;//第一页
    

    其他函数

    查询emp表中所有在1993和1995年之间出生的员工,显示姓名,出生日期

    select name,birthday from emp where birthday >='1999-1-1' and birthday<='1995-12-31';
    
    select name,birthday from emp where year(birthday)>=1993 and year(birthday)<=1995; 
    

    40.查询emp表中本月过生日的所有员工

    select *from emp where month(curdate())=month(birthday);
    

    4.查询emp表中员工的姓名和薪资(薪资单位是元)

    select name,concat(sal,'(元)')from emp;
    
    展开全文
  • 分页查询函数 pagedQuery 'use strict'; const db = uniCloud.database() exports.main = async (event, context) => { //event为客户端上传参数 //前端调用此函数需要传入参数:dbName ,filter ,...

    效果图:
    在这里插入图片描述

    分页查询云函数 pagedQuery

    'use strict';
    const db = uniCloud.database()
    exports.main = async (event, context) => {  //event为客户端上传的参数
    	//前端调用此函数需要传入的参数:dbName ,filter ,pageIndex ,pageSize
    	var dbName = event.dbName;  //集合名称(表的名称)
    	var filter = event.filter ? event.filter : {} ;  //筛选条件,默认为空,格式 {key:'values'}
    	var pageIndex = event.pageIndex ? event.pageIndex : 1 ;  //当前第几页,默认为第一页
    	var pageSize = event.pageSize ? event.pageSize : 10 ;  //每页取多少条记录,默认为10条  
    
    	const countResult = await db.collection(dbName).where(filter).count()  //获取集合中的总记录数
    	const total = countResult.total  //得到总记录数 
    	const totalPage = Math.ceil(total / pageSize)  //计算页数
    
    	var hasMore ;  //提示前端是否还有数据
    	if (pageIndex > totalPage || pageIndex == totalPage) {  //如果没有数据了,就返回false
    		hasMore = false 
    	} else {
    		hasMore = true 
       }
       
    	//查询数据并返回给前端
    	return db.collection(dbName).where(filter).skip((pageIndex - 1) * pageSize).limit(pageSize).get().then( res => {
    		res.hasMore = hasMore ;
    		return res ;  // 返回json给客户端
    	})     
        
    };
    

    前端页面代码:

    <template>
    	<view class="content">
    		<button class="btn" type="default" @click="btnInsert">增加云数据</button>
    		<button class="btn" type="default" @click="btnSelect">查询云数据</button>
    		<view class="userlist" v-for="(item,index) in datalist" :key="index">
    			<text> {{item.username}} : {{item.age}} </text>
    			<text v-if="item.sex ==null "> : 未知 </text>
    			<text v-else>{{item.sex}} </text>
    		</view>
    	</view>
    </template>
    
    <script>
    	export default {
    		data() {
    			return {
    				hasMore:false ,
    				pageIndex: 1 ,
    				datalist:[]
    			}
    		},
    		
    		// 上拉触底事件
    		onReachBottom:function( ) { 
    			if (this.hasMore) {
    				this.btnSelect()  //调用函数
    				setTimeout(function () {
    					uni.stopPullDownRefresh();
    				}, 1000);
    				
    			} else {
    				uni.showToast({
    				  title: '没有更多数据了!',
    				  icon:'none'
    				})
    			}      
    		},
    		
    		methods: {
    			//增加
    			btnInsert() {
    			
    			},
    			
    			//查询
    			btnSelect() {
    				uni.showLoading({
    					title: '查询中...'
    				})
    				uniCloud.callFunction({  //调用云函数
    					name:'pagedQuery',  //云函数名称
    					data:{  //以下是pagedQuery云函数需要传入的参数
    						dbName:'table1',    //要查询的表名
    						filter:{},          //筛选条件,格式{sex:'女'}
    						pageIndex: this.pageIndex ,      //第几页
    						pageSize: 30        //每页的记录条数
    					},
    					success: (res) => {
    						console.log(res)
    						this.datalist = this.datalist.concat(res.result.data)  //云端返回的查询数据,追加到数组datalist
    						this.hasMore = res.result.hasMore  //云端返回的是否有更多数据
    						if (this.hasMore) {
    							this.pageIndex = this.pageIndex + 1
    						}
    					},
    					fail: (err) => {
    						console.log(err)
    					},
    					complete: () => {
    						uni.hideLoading()
    					}
    				});
    			}
    			
    		}
    	}
    </script>
    
    <style>
    	.content {
    		display: flex;
    		flex-direction: column;
    		align-items: center;
    		justify-content: center;		
    	}
    	
    	.btn{
    		margin: 5px;
    		background-color: #4CD964;
    	}
    </style>
    
    
    展开全文
  • 1.常见的分页查询语句:查询21到40条之间数据: SELECT *FROM ( select UI.*,ROWNUM RN FROM (select * from user_info) A WHERE RN&lt;=40 ) WHERE RN&gt;21其中ROWNUM是oracle中伪列,会根据返回...

    1.常见的分页查询语句:

    查询21到40条之间的数据:
    SELECT *FROM 
    (
    select UI.*,ROWNUM RN 
    FROM (select * from user_info) A
    WHERE RN<=40
    ) 
    WHERE RN>21

    其中ROWNUM是oracle中的伪列,会根据返回的记录生成一个有序列的数字,但是根据序列只会从1开始排序;

    2.另外一种写法效率较低:

    SELECT * FROM  
    (  
    SELECT A.*, ROWNUM RN  
    FROM (SELECT * FROM TABLE_NAME) A  
    )  
    WHERE RN BETWEEN 21 AND 40 

    这是由于CBO 优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。

    而第二个查询语句,由于查询条件BETWEEN 21 AND 40是存在于查询的第三层,而Oracle无法将第三层的查询条件推到最内层(即使推到最内层也没有意义,因为最内层查询不知道RN代表什么)。因此,对于第二个查询语句,Oracle最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。


    展开全文
  • 关联查询分页查询,排序函数高级关联查询 子查询:一个查询语句所需要数据,来自于另外一个查询语句结果。 先执行的查询语句就是子查询 父查询(主查询):被子查询嵌入的查询语句就是主查询。 子查询返回...
     关联查询,分页查询,排序函数

    高级关联查询

        子查询:一个查询语句所需要的数据,来自于另外一个查询语句的结果。
                 先执行的查询语句就是子查询
        父查询(主查询):被子查询嵌入的查询语句就是主查询。
       子查询返回的数据的特点:
        (1)返回一行一列
        (2)返回多行一列
        (3)返回多行多列
        
    1.子查询在where子句中(续)
       当子查询的语句中可以使用主查询的数据时,可以使用exists。
       exists 表示存在,后面的子查询如果能查出至少一条数据,会返回true.
              否则返回false
        需求:查询有员工的部门信息。
           select * from dept d where 
           exists 
           (select * from emp e where d.deptno=e.deptno)
         需求: 查询没有员工的部门信息
           分析:找到员工表中的部门号,
               去部门表中排除这些部门号    
            ①select * from dept d where  deptno not in
            (select distinct deptno from emp e where d.deptno=e.deptno );
           ②select * from dept d where  deptno not in
            (select distinct e.deptno from emp e join dept d on e.deptno=d.deptno);        
            ③select * from dept d where 
            not exists 
            (select 1 from emp e where e.deptno=d.deptno)  
         
    2子查询在having子句中
           需求:查询部门平均工资大于10部门平均的部门号及其平均工资
               select deptno,avg(nvl(sal,0)) from emp 
               group by deptno having avg(nvl(sal,0))>
               (select avg(nvl(sal,0)) from emp where deptno=10);
       需求:查询职位人数大于'clerk'这个职位人数的职位,及其最高工资,工资之和。
       select count(*),max(sal),sum(sal) from emp 
       group by job having count(*)<(select count(*) from emp where job='CLERK');
    3子查询在from子句中
           一个查询语句后,还想再查询出来的数据的基础上在查询。
           当子查询在form子句中,相当于一张没有名字的表。
           这样的表叫行内视图(view),也叫匿名视图。
           需求:查询部门的平均工资大于2000的部门信息和员工信息
            ①select deptno from emp group by deptno having avg(nvl(sal,0))>2000;
           ② select * from dept d join emp e on d.deptno=e.deptno and d.deptno in(select deptno from emp             group by deptno having avg(nvl(sal,0))>2000);
           ③ select e.*,d.*from emp e,dept d,
               (select deptno from emp group by deptno having avg(nvl(sal,0))>2000) f
               where e.deptno=d.deptno and e.deptno=f.deptno;
        4.子查询在select子句中:
          可以理解为外连接的另一种写法。
          需求:员工信息
         ① select * from emp join dept on emp.dept=dept.deptno;
          select e.ename,e.job,(select d.dname  from dept d where d.deptno=e.deptno) 部门名称,
           (select d.loc  from dept d where d.deptno=e.deptno) 地理位置 from  emp e

     分页查询:

      rownum:是数据库中提供的一个伪列,作用是给记录分配行号。
                      从1开始。此时不能做区间查询(如第三行到第五行)
                      只能查询前n条记录
              需求:查询员工信息,同时分配行号.
                       select rownum ,e.* from emp where rownum>3 and rownum<5.//不能做范围查询
               需求:前5条员工信息
                       select * from emp where rownum<=5;
       注意: 使用伪页做区间查询,只能先查询前n条数据后,当成行内视图,同时显示行号,另外之后再做范围查询
            需求:查询员工表中第六条到第十条数据
            1:先查询前10条记录
                  select rownum rn,e.* from emp where rownum<=10
            2.将上一个查询作为子查询放入from子句中,充当行内视图,继续查询
                    此时,rn是可以作为条件使用
                 select * from (  select rownum rn,e.* from emp e where rownum<=10) 
                 where rn between 6 and 10;
      分页查询:
          需求:第page页,每页的记录数pageSize
           第1页: 1-pageSize
           第2页:(pageSize+1)-2*pageSize
            ....    .....     .....
           第n页:(n-1)*pageSize+1-n*pageSize
        需求:每页3条记录,查询第5页的记录
                 select * from ( select rownum rn,e.* from emp e  )
                 where rn between 13 and 15;
        分页查询与order by
        需求:每页3条记录,按照工资降序排序,查询第5页 4
       //错误: select * from ( select rownum rn,e.* from emp e  )
         where rn between 13 and 15 order by sal desc;
        先对工资进行排序,再输出i
                select * from (  
                    select rownum rn,t.* from
                    (select  * from emp  order by sal desc) t )  
                where rn between 13 and 15;
      需求:查询员工信息及其部门的平均工资,按照部门号升序排序,查询第三页数据,每页5条
     select  *,avg(nvl(sal,0)) avg_sal from emp e join dept d on e.deptno=d.deptno order by deptno 
        select * from(
         select rownum rn,t.* from  (  select  e.*,f.avg_sal from emp e,
                (select avg(nvl(sal,0)) avg_sal,deptno from emp  group by deptno)  f
                where e.deptno=f.deptno order by e.deptno) t
           ) 
           where rn between 11 and 15
        
        decode函数:
          用法:     列名   列值    赋值     列值    赋值                      否则其他列值为default
            decode(colName,search1,result1,[search2,result2],......[ searchn,resultn],[default])
          逻辑:检索colName的值,如果是search1,那么就使用result1,
                                 如果是search1,那么就使用result1,
                                  .....       ......
                                 否则default
          没有default时,返回的是null.
        需求:年终奖发奖金,职位'MANAGER' 发放月薪的1.2倍,
                              'SALESMAN'  1.1倍
                              'CLERK'     1.05倍 返回年终奖
        练习:查询每个人的年终奖,以及姓名,职位。
          select ename,job,sal,decode(job,'MANAGER',sal*1.2,'SALESMAN',sal*05,'CLERK',sal*1.05,sal*1) 年终奖 from emp  
           与decode函数功能一样的:
          列名        列值          结果
           case colName when serach1 then result1
                        when serach2 then result2
                        ...   ...     ...
                        [else result0] end
             select ename,job,sal,case job when 'MANAGER' then sal*1.2
                                           when  'SALESMAN' then sal*05  
                                           when 'CLERK' then sal*1.05
                                           else sal end 年终奖
                                           from emp
              decode与group by连用
              需求:职位:'MANAGER' 和'SALESMAN'输入vip
                        'CLERK'   属于svip   
                        其他职位 属于ip
                  查询三种级别的人数
                  1)查看员工的姓名,职位,级别
                       select  ename,job,decode(job,'MANAGER','VIP','SALESMAN','VIP','CLERK','SVIP','IP') s  from emp  
                  2)查看每个级别的人数
                     select s,count(*)from ( select decode(job,'MANAGER','VIP','SALESMAN','VIP','CLERK','SVIP','IP') s  from emp  )    
                     group by s  //对级别分组,再count
                    或者:
                    select decode(job,'MANAGER','VIP','SALESMAN','VIP','CLERK','SVIP','IP') le,count(*)
                    from emp group by decode(job,'MANAGER','VIP','SALESMAN','VIP','CLERK','SVIP','IP') ;
              decode与order by 连用
                  需求:部门中有四个部门:'ACCOUNTING' 'RESEARCH' SALES OPERATIONS
                  1.按照部门名称排序,显示部门信息
                  select * from dept order by dname desc;
                  2.排序规则:acounting 排第一位,SALES排第二位
                              research第三 operations 第四
       select * from dept order by decode(dname,'ACCOUNTING',1,'SALES',2,'RESEARCH',3,'OPERATIONS',4) 
        排序函数:
          1:row_number() over(partition by colName1 order by colName2); 
              排序特点:连续不重复 分组               排序
          2: rank() over (partition by colName1 order by colName2);
                 重复不连续
          3:rank_dense() over (partition by colName1 order by colName2);
          排序函数可以直接区间查询。
          partition by colName:表示按照colName1分组
          order by colName:表示按照colName排序
          需求:
            1.查询所有员工信息,按照月薪排序
              select e.*, row_number() over(order by sal desc) rn from emp e
              select e.*, rank() over(order by sal desc) rn from emp e
              select e.*, dense_rank() over(order by sal desc) rn from emp e
            2.查看每个部门的员工信息,按照月薪排序
            select e.*, rank() over(partition by deptno order by sal desc) rn from emp e
            3. 使用排序函数进行分页查询    
             select * from(
             select e.*,row_number() over(order by sal desc) rn
             from emp e) where  rn between 3 and 6;
         
                  100   100     90
        连续不重复  第一名  第二名  第三名
        不连续重复  第一名 第一名 第三名
        连续重复   第一名 第一名  第二名  
             



































    展开全文
  • 一、oracle中基本查询 先创建一个class 1、连接符 concat将字符串连接起来,相当于java中+号 select concat(‘hello’,‘world’) from dual; dual是一个虚拟表,作用就是满足select语法要求 ||连接字符串 ...
  • 我们做项目时查询表格存在几百上千条数据时经常会需要用到分页,下面就给大家介绍一下在sql中查询分页的简单实例吧。首先我们要知道分页需要什么条件,比如:上一页,下一页,首页,末页,每页需要显示的行数,调到...
  • /*排序查询ORDER BY 排序方式(升序ASC 降序DESC)*/ select * from studenttable order by score DESC; /*按照score升序序,如果一样,则按照age升序*/ select * from studenttable order by score ASC , age ASC; ...
  • //分页//先设置当前选中页码数$pageNum = isset($_GET['num'])? $_GET['num']:1;//定义每一页需要显示记录数$rowsPerPage = 5;//查询总记录数$sql = "select count(*) from reply where rep_pub_id = $pub_id" ;...
  • 自连接join连接join案例SQL99语法等值连接非等值连接自连接外连接二、常见查询三、子查询四、分页查询 一、多表查询 1.笛卡尔集 笛卡尔集会在一下条件下产生着几种情况: – 省略连接条件 – 连接条件无效 – 所有...
  • 分页查询 #语法 #SELECT 查询的东西 #FROM 表 #【WHERE 条件】 #【GROUP BY 字段】 #【HAVING 条件】 #【ORDER BY 排序字段】 LIMIT 条目起始索引【,条目数】 #特点 #1.写法 #写法一: #LIMIT 条目数 #意思:从第...
  • 分页查询的必要 针对于目标数据量庞大的查询结果,为了能够快速查询 分页查询有助于应用程序对数据一个显示 如何T-SQL进行分页查询 使用NOT IN分页 SELECT TOP(5) * FROM StudentInfo WHERE StuID NOT IN...
  • 关于数组的分页函数,用数组进行分页的好处是可以方便的进行联合多表查询,只需要将查询的结果放在数组中就可以了以下是数组分页的函数,函数page_array用于数组的分页,函数show_array用于分页函数的操作及显示,需要...
  • 使用索引原因:实现数据库快速查询,提高查询速度 2,索引分类 1,普通索引 最基本索引,对字段数据类型和值没有任何限制,数据类型可以任意,字段值可以为空也可以重复。 2,主键索引 给...
  • 分页查询函数、数据增 删 改、常见数据类型、约束分页查询函数字符函数数字函数日期函数流程控制函数函数练习插入数据插入一行数据插入多行记录数据更新数据删除DML数据操作练习库和表管理常见数据类型...
  • 为后台管理系统做分页的效果 更加方便查询和显示数据 开始使用的原始的方法 实现原理 后面使用了jquery下面的jqPaginator的方法 使样式和功能更加的完善 聚合函数 sum(column_name) 求和 avg(column_name) 求平均值...
  • --(将查询的结果作为插入数据); insert into test_user(name, email) select name,qq_mail from student: 常见聚合函数 select count(distinct id) from exam_result; select sum(math) from exam_result; ...
  • 分页查询  rownum:是数据库中提供一个伪劣,作用是给记录分配行号。  思想:先给记录分配行号,再根据我们要查找范围进行检索,确定行号范围。  练习1:查询员工信息,同时分配行号  select...
  • 分页查询: 假分页/逻辑分页/内存分页  一次性查询出所有数据,存放到内存中(集合),每次翻页时候,都是从内存中取出指定条数  特定:翻页比较快.如果数据量过大,可以回造成内存溢出   真分页/物理分页/数据库...
  • 1.排序查询 语法:order by 子句 order by 排序字段1 排序方式1,排序字段2 排序方式2.... 排序方式: ASC: 升序,默认 DESC:降序 注意: 如果有多个排序条件,则当前边条件值一样时,才会判断第...
  • 一、子查询 1、子查询在where子句中 (1)实例: 查找和SCOTT同职位员工 思路分析: ...我们到现在还不知道SCOTT是啥子情况,先把SCOTT情况查询出来,这就是子查询。 3.重点是后面员工,我...
  • 关于数组的分页函数,用数组进行分页的好处是可以方便的进行联合多表查询,只需要将查询的结果放在数组中就可以了以下是数组分页的函数,函数page_array用于数组的分页,函数show_array用于分页函数
  • 关于数组的分页函数,用数组进行分页的好处是可以方便的进行联合多表查询,只需要将查询的结果放在数组中就可以了以下是数组分页的函数,函数page_array用于数组的分页,函数show_array用于分页函数的操作及显示,需要...
  • MySQL的分页函数limit m,n,其中m 和n 都必须是常量,不能参数。 <select id="getList" resultMap="Member" parameterType="java.util.HashMap"> SELECT * FROM t_member AS tm WHERE 1=1 <if test...
  • 1、排序查询: 表中数据: 指定排序方式: acs:升序,缺省值 desc:降序 升序:asc 降序:desc 多重排序:如果math值相同,再按english值排序 2、聚合函数:一般可认为聚合函数不会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,485
精华内容 994
关键字:

查询分页的函数