精华内容
下载资源
问答
  • 数据库复杂查询SQL

    2011-08-20 14:09:13
    SQL复杂查询,比如:SELECT的排序、分组等
  • 复杂sql语句,关于oracle数据库的复杂查询,复杂逻辑关系等等。是个不错的工具
  • SQL数据库复杂查询

    2012-07-31 21:50:38
    SQL数据库_实验四_复杂查询(2)解答.doc
  • SQLServer数据库复杂查询示例,带数据库脚本。希望能帮助学习SQL语言的读者。
  • 一种新的安全方案,用于在云计算中支持加密数据库上的复杂SQL查询
  • ** IN子查询 **

    **

    IN子查询

    **
    在这里插入图片描述

    关系代数操作

    并操作 nuion
    交操作 intersect
    差运算 except

    简单示例
    在这里插入图片描述

    展开全文
  • 查询上下级关系,本想着用oracl的树查询,但是会莫名少很一些数据(因为此查询涉及循环,但是这种循环是被业务允许的),也没空具体研究oracle的树查询,后来用java递归的方式,递归查询数据库,勉强实现了该需求,...

    最近在做的需求有一个点是,查询上下级关系,本想着用oracl的树查询,但是会莫名少很一些数据(因为此查询涉及循环,但是这种循环是被业务允许的),也没空具体研究oracle的树查询,后来用java递归的方式,递归查询数据库,勉强实现了该需求,但是还有一些循环引用的关系没有正确展示出来,目前程序的能力,在不加业务规则的前提,因该不能完美实现此需求

    代码也没优化,先贴上来,以备后用,用这个查询,比oracl树查询会多一些正确的数据

    /**
    	 * 将递归查询的从上到下的每条记录都放在一个list里
    	 * @param treeList 记录所有查询结果,并且以对象传递的身份,传会给调用者使用
    	 * @param aList 临时的list,记录所有被查询的id,避免循环查询同一个id
    	 * @param conn 数据库连接
    	 * @param projName 最开始需要查询的id
    	 * @throws Exception
    	 */
    	public void diguiQueryDB(List<List<String>> treeList, List<String> aList, Connection conn, String projName)
    		throws Exception{
    		//记录已经查询过的id
    		aList.add(projName);
    		//拼接sql
    		Statement stmt = null;
    		ResultSet rst = null;
    		StringBuffer sql = new StringBuffer();
    		sql.append("select id,refId ");
    		sql.append("from testTable ");
    		sql.append("where id = '");
    		sql.append(projName);
    		sql.append("'");
    		try {
    			stmt = conn.createStatement();
    			rst = stmt.executeQuery(sql.toString());
    			while(rst.next()){
    				String id = rst.getString("id");
    				//如果id被查到过,就被认为是循环调用,不在向下递归
    				if(aList.contains(id)) {
    					for(List<String> childList : treeList) {
    						//下面的if一定会进去,因为此id已经在了
    						if (childList.get(childList.size() - 1).equals(projName)) {
    							if(!childList.contains(id)) {
    								List<String> tempList = new ArrayList<String>();
    								tempList.addAll(childList);
    								tempList.add(id);
    								treeList.add(tempList);
    							}
    							break;
    						}
    					}
    					continue;
    					
    				} else {
    					aList.add(id);
    				}
    				//将查询的数据记录到总list,然后继续向下递归
    				for(List<String> childList : treeList) {
    					if(childList.get(childList.size() - 1).equals(projName)) {
    						if(!childList.contains(id)) {
    							List<String> tempList = new ArrayList<String>();
    							tempList.addAll(childList);
    							tempList.add(id);
    							treeList.add(tempList);
    						}
    						break;
    					}
    				}
    				//继续递归
    				diguiQueryDB(treeList, aList, conn, id);
    			}
    		} catch (Exception e) {
    			// TODO: handle exception
    		} finally {
    			try {
    				if (rst != null) {
    					rst.close();
    				}
    				if (stmt != null) {
    					stmt.close();
    				}
    			} catch (Exception e2) {
    				// TODO: handle exception
    			}
    		}
    	}
    
    展开全文
  • sql数据库高级复杂查询 第一个表的结构图 1:查找 (一:简单查询) SELECT * FROM peopel #*就是全部 from(来自) 表名 (二:按照条件查询) SELECT NAME FROM peopel #查询所有名字 (三:按照条件查询...

    sql数据库高级复杂查询

    第一个表的结构图
    在这里插入图片描述
    在这里插入图片描述
    1:查找

    (一:简单查询)

    SELECT *
    FROM peopel			#*就是全部 from(来自) 表名
    

    (二:按照条件查询)

    SELECT NAME
    FROM peopel			#查询所有名字
    

    (三:按照条件查询某某)

    SELECT *
    FROM peopel
    WHERE NAME='zhangsan'
    

    (四:按照条件查找大于某数小于某数的语句)
    <,>,=,!=,>=,<=,in(),between and 属于比较运算符

    • in(A,B):表示包含A和B的结果

    between 1 and 5 :会查出在1和5之间的值包括1和

    SELECT *
    FROM peopel
    WHERE age>19 AND age<21
    

    结果:
    在这里插入图片描述
    (五:模糊查询like_%)

    select * from people where pnubm like '86%' 	#查询出people表中为86开头的用户
    select * from people where phone like '86_' 	#查询除people表中86开头后只有一位的数字
    select * from user where phone like '%86%'	# 查询出people表中含有86的用户
    select * from user where phone like '%86'		#查询出people表中为86结尾的用户
    

    (六:sum求和等操作)

    SELECT SUM(age)
    FROM peopel
    

    其中where和having的区别:
    wherehaving 都是做条件判断,在介绍having前我们看下wherehaving的区别

    where的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚合函数,使用where条件显示特定的行。

    having的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚合函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

    例如:我们要查询people表中年龄总和大于10000的部门编号,语句如下:

    SELECT deptno,
    SUM(sal)FROM emp GROUP BY deptno HAVING SUM(sal)>10000;
    

    )——目前没有好的例子等待抽空 去找几套面试题目 续更。(先发)

    展开全文
  • 详细可以参考,介绍的很详细:/PostgreSQL’s 文档/ 一、简介 窗口函数: 也称为OLAP(Online Analytical ...对数据库数据就行实时分析处理 <窗口函数> OVER ( [PARTITION BY <列清单>] ODER BY &l...

    详细可以参考,介绍的很详细:/PostgreSQL’s 文档/

    一、简介

    1. 窗口函数:
      也称为OLAP(Online Analytical Processing)函数
      对数据库数据就行实时分析处理

         <窗口函数> OVER (  [PARTITION BY  <列清单>]
                                            ODER BY <排序用列清单>   )                             
      
    2. 窗口函数分类:
      窗口函数分为排名函数、分布函数、偏移函数等。

    二、用法简介

    1. 排名函数:
      ROW_NUMBER、NTILE、RANK和DENSE_RANK 。在标准中,前两者是一类,后两者是另一类。
    • ROW_NUMBER()

      ROW_NUMBER函数根据指定的顺序,从1开始计算连续的行号。

      语法格式

      语法:ROW_NUMBER() OVER ( PARTITION BY  COL1  ORDER BY COL2 ) 
      功能:表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后的顺序编号(组内连续的唯一的)  
           row_number() 返回的主要是“行”的信息,并没有排名
      

      它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号。

    在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。

    1) 例1:按照SALARY排序

          SELECT  ID
                  ,NAME
                  ,AGE
                  ,SALARY
                  ,ROW_NUMBER()OVER(ORDER BY SALARY DESC)   RN
          FROM  TEST_ROW_NUMBER_OVER t
    

    结果:

    2)例2:按照ID分组 、SALARY排序

         SELECT ID
                  ,NAME
                  ,AGE
                  ,SALARY
                  ,ROW_NUMBER()OVER(PARTITION BY ID ORDER BY SALARY DESC)    RN
          FROM  TEST_ROW_NUMBER_OVER 
    

    结果:
    在这里插入图片描述
    3)每组第一

          WHERE RN<2
    

    在这里插入图片描述

    • RANK和DENSE_RANK

       三个函数都是按照col1分组内从1开始排序
      其中,ROW_NUMBER() 是没有重复值的排序(即使两条记录相同,序号也不重复的),不会有同名次。
          DENSE_RANK() 是连续的排序,两个第二名仍然跟着第三名。
          RANK()       是跳跃排序,两个第二名下来就是第四名。
      

    对比例:

         SELECT s.names
               ,s.salaries
               ,dept
              , ROW_NUMBER() OVER(PARTITION BY dept ORDER BY salaries DESC) rank
         FROM workers s;  
    

    在这里插入图片描述

     SELECT s.names
           , dept
           , s.salaries
           , DENSE_RANK() OVER(PARTITION BY dept ORDER BY salaries DESC) rank 
          FROM workers s;  
    

    结果如下,相同salaries时,RANK有重复,但连续。
    在这里插入图片描述

       SELECT s.names
            , dept
            ,s.salaries
            , RANK() OVER(PARTITION BY dept ORDER BY salaries DESC) rank 
            FROM workers s;  
    

    结果如下,相同salaries时,RANK有重复,同时不连续。

    在这里插入图片描述

    • 关于Parttion by:

    Parttion by关键字是Oracle中分析性函数的一部分,用于给结果集进行分区。它和聚合函数Group by不同的地方在于它只是将原始数据进行名次排列,能够返回一个分组中的多条记录(记录数不变),而Group by是对原始数据进行聚合统计,一般只有一条反映统计值的结果(每组返回一条)。
    TIPS:
    使用rank over()的时候,空值是最大的,如果排序字段为null, 可能造成null字段排在最前面,影响排序结果。
    可以这样: rank over(partition by course order by score desc nulls last)

    1. 偏移函数
      LAG,LEAD 分别是向前,向后;

    语法:

       LEAD ( scalar_expression ,[ offset ] , [ default ] ) OVER ( PARTITION BY  COL1  ORDER BY COL2 ) 
    

    lag 和lead 有三个参数,第一个参数是列名,第二个参数是偏移的offset(偏移多少行,如果不写,默认一行),第三个参数是 超出记录窗口时的默认值 (如果不写,默认为null)

    例:

     SELECT *,
       LEAD(Value, 1, 666) OVER (ORDER BY Value) AS LEADVALUE,  --提前1行,默认值666
       LAG(Value, 2, 888) OVER (ORDER BY Value) AS LAGVALUE  --滞后2行,默认值888
       FROM #T;
    

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

    不写偏移数和默认值,结果就是这样的:

       SELECT *,
       LEAD(Value) OVER (ORDER BY Value) AS LEADVALUE,  --提前1行
       LAG(Value) OVER (ORDER BY Value) AS LAGVALUE  --滞后1行
       FROM #T;
    

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

    展开全文
  • 数据库复杂查询

    2012-05-03 17:34:13
    SQL Server查询分析器的使用方法,本实验的目的是使学生进一步掌握SQL Server查询分析器的使用方法,加深SQL语言的连接查询的理解。
  • MySQL数据库 sql语句中写 if 判断语句 – 判断函数 判断表达式可以是子查询 – if(exp, v1, v2) 根据 exp 判断条件, true则返回 v1,false 则返回 v2。 – 判断条件中还可以加 or and 关键字 select IF( 1 > 2, ...
  • 复杂sql数据库查询

    2015-01-20 16:05:20
    遇到复杂数据库查询,可使用中间表的方式连接查询查出正确的数据: SELECT d.id, c.* FROM diz_reply AS d INNER JOIN ( SELECT target_id, count(id) num, a.to_userid, a.model FROM diz_user_...
  • 数据库复杂查询实验

    2020-10-21 20:33:51
    通过本次实验使学生掌握数据库中表数据的各种复杂查询操作。 二、实验内容 1、连接查询 2、嵌套查询 3、谓词查询 三、实验环境 1、Windows 2、SQL Server 四、实验步骤及结果 1、创建一个数据库,文件名为“教学” ...
  • 数据库SQL模糊查询

    千次阅读 2018-01-24 10:11:32
    SQL的模糊查询是当不清楚数据库中的具体关键词时使用的一种查询方式,最主要的关键词时like,and与%。like like用于在where子句中搜索列中的指定模式。语法: SELECT “栏位名” FROM “表格名” WHERE “栏位名...
  • WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部...
  • SQL数据库实验四_复杂查询(1)解答.doc
  • 这些题目都是自己很认真很认真做的哟 虽然不保证都对 但是大部分是对的哦!
  • https://blog.csdn.net/SoP_KaiXinHaHa/article/details/82728341
  • SQL复杂查询 SQL查询 IN子查询 非相关子查询 相关子查询 θ some/θ all子查询 结果计算 聚集函数 分组 注意:聚集函数不允许用于Where语句中,因为Where语句是对每...
  • 数据库复杂查询

    2019-10-31 17:31:49
    实验三 数据库复杂查询 一、实验学时 2学时 二、实验目的 (1)熟练掌握复杂查询的select语句。 (2)熟练掌握连接查询方法。 (3)熟练掌握嵌套查询方法。 三、实验要求 (1)硬件设备:奔腾II或奔腾II...
  • 使用 PIVOT 和 UNPIVOT PIVOT 通过将表达式中的一个列的唯一值转换为输出中的多列,来轮替表值表达式。 PIVOT 在需要对最终输出所需的所有剩余列值执行聚合时运行聚合。 案例: SELECT FACTORYDATE AS DATE_TIME, ...
  • 数据库系统SQL语言复杂查询IN/NOT IN判断元素是否在某一个集合中 select * from Student where Sname in('zhangsan','wangsi'); //非相关子查询,内层select不依赖外侧 select S#,Sname from Student where S# in ...
  • (1)非相关子查询:内层查询独立进行,没有涉及任何外层查询相关的子查询 --eg :查询SALES部门的员工信息 SELECT e.* ,FROM emp e WHERE e.deptno =(SELECT deptno from dept where dname ='SALES'); (2)相关...
  • 数据查询语言是数据库最基本的应用,其语法较为复杂,包括简单查询、带条件查询、连接查询、子查询、集合运算、数据分组、排序和限制等 1. 简单查询 日常查询中 最常用的就是用过FROM子句实现的查询 语法: SELECT ...
  • 数据库实验复杂查询

    2013-06-06 23:01:49
    本实验的目的使学生熟练掌握SQL Server查询分析器的使用方法,本实验的目的是使学生进一步掌握SQL Server查询分析器的使用方法,加深SQL语言的嵌套查询的理解。  本实验使用实验二中建立的基本表Student、Course、...
  • 复杂搜索条件查询
  • SQL Server 操作简单,但只有图形界面. Oracle 较复杂, 同时提供GUI和命令行,在windowsNT和unix下操作相同 DB2 操作简单,同时提供GUI和命令行,在windowsNT和unix下操作相同
  • 该程序用于创建更复杂SQL查询,在手工输入时可能会出现输入错误。 首先,用户输入带有SQLite数据库的文件,程序从该文件中找出表本身及其列的名称。 然后,您可以使用类似于Windows的界面输入查询参数。 为了测试...
  • SQL Server数据库用视图来处理复杂的数据查询关系是本文我们主要要介绍的内容,该内容是这样想到的:在辅助教务系统那块的时候,我做的一个页面是对单个老师和整个学院老师的工作量查询,这个操作设计到了三个本...

空空如也

空空如也

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

数据库复杂sql查询