一、数据库查询语句(单表查询篇)

news2025/1/16 8:21:51

一、数据库查询语句(单表查询篇)

单表查询:SELECT 语句仅从一个表/视图中检索数据,称单表查询。即其中的<普通表> 使用的是[<模式名>.]<基表名|视图名>。


该查询的语句所依赖的表是创建数据库实例默认勾选的两个实例:BOOKSHOP和DMHR

有关数据库实例安装的信息:

http://t.csdn.cn/aODlJ

1、简单查询

1.1 *和DINSTINCT

简介:为了方便用户提高工作效率,SQL 语言允许用户将 SELECT 后的<值表达式>省略为* ; *表示为全部列.

DISTINCT 保证重复的行将从结果中去除。若允许有重复的元组,改用 ALL 来 替换 DISTINCT,或直接去掉 DISTINCT 即可。

  • 代码:

    #只要查询的表指定模式即可,其余列可以指定也可以不指定
    #1.查询production模式下的product表,名字列、作者列的信息
    select PRODUCT.NAME,PRODUCT.AUTHOR from PRODUCTION.PRODUCT;
    
    #2.查询production模式下的product表,名字列的信息
    select NAME from PRODUCTION.PRODUCT;
    
    /**
     
    */
    #3.查询production模式下的product表,所有列的信息
    select * FROM PRODUCTION.PRODUCT;
    
    -- 1.2查询结果去重(去除重复的数据)
    select DISTINCT NAME from PRODUCTION.PRODUCT;
    
  • 效果图:在这里插入图片描述


1.2 MINUS、EXCEPT

简介:取左边部分,不包含交集

  • 代码:

    -- 1.3使用minus、except查询tt表中有的,kk表中没有的数据
    create TABLE other.tt(num int);
    create TABLE other.kk(num int);
    insert into other.tt VALUES(1);
    insert into other.tt VALUES(2);
    insert into other.tt VALUES(3);
    insert into other.kk VALUES(2);
    insert into other.kk VALUES(3);
    insert into other.kk VALUES(4);
    
    select * FROM other.tt EXCEPT select * FROM other.kk;
    select * FROM other.tt MINUS select * FROM other.kk;
    
  • 效果图:在这里插入图片描述


1.3 INTERSECT

简介:取交集

  • 代码:

    -- 1.4使用intersect查看tt表和kk表中都有的数据
    select * FROM other.tt INTERSECT select * FROM other.kk;
    
  • 效果图:在这里插入图片描述


2、带条件查询

简介:带条件查询是指在指定表中查询出满足条件的元组,通过where子句和查询条件的为此和逻辑运算符组成 。

  • 逻辑运算符有:AND,OR,NOT。
  • 谓词包括比较谓词(=、>、<、>=、<=、<>),BETWEEN 谓词、IN 谓词、LIKE谓词、NULL 谓词、EXISTS 谓词

2.1 常用的逻辑运算符和谓词

简介:AND,OR,NOT,IN,NULL怎么使用

  • 代码:

    -- 2.1给出当前销售价格在 10~20 元之间的所有图书的名字、作者、出版社和当前价格
    select name,author,publisher,nowprice from PRODUCTION.PRODUCT where nowprice >= 10 AND nowprice <=20;
    select name,author,publisher,nowprice from PRODUCTION.PRODUCT where nowprice between 10 AND 20;
    
    -- 2.2查询出版社为中华书局或人民文学出版社出版的图书名称与作者信息
    SELECT PRODUCT.NAME,PRODUCT.AUTHOR FROM PRODUCTION.PRODUCT WHERE PRODUCT.PUBLISHER IN ('中华书局','人民文学出版社');
    
    -- 2.3查询出版社不是中华书局或人民文学出版社出版的图书名称与作者信息
    SELECT PRODUCT.NAME,PRODUCT.AUTHOR FROM PRODUCTION.PRODUCT WHERE PRODUCT.PUBLISHER NOT IN ('中华书局','人民文学出版社');
    
    
    -- 2.6查询哪些人员的 EMAIL 地址为 NULL
    -- 使用 NULL 谓词的查询,空是使用is null/is not null不是使用等于号(=)
     select * from PERSON.PERSON WHERE email is null;
    
  • 效果图:在这里插入图片描述


2.2 模糊查询和转义字符

简介:LIKE 谓词一般用来进行字符串的匹配,下划线(_)表示单个字符匹配,百分号(%)表示任意字符匹配, 模糊查询和转义符,如果我们的查询里面由%和但是不是表示模糊查询的呢?

  • 代码:

    -- 2.4查询第一通讯地址中第四个字开始为“关山”且以 202结尾的地址
    -- 模糊查询like,下划线(_)表示单个字符匹配,百分号(%)表示任意字符匹配
    
    -- 3个下划线,百分号202
    select * from PERSON.ADDRESS where ADDRESS.ADDRESS1 like '___关山%202';
    
    
    -- 模糊查询和转义符,如果我们的查询里面由%和_但是不是表示模糊查询的呢?
    -- 查询person表中以 iu_520 结尾的地址,则 LIKE 谓词应为:此时这里的下划线不是代表模糊查询的匹配字符
    create TABLE OTHER.person(id int,name varchar(32));
    insert into OTHER.person VALUES(1,'江西省新余市渝水区城北大道iu_520');
    insert into OTHER.person VALUES(2,'广东省佛山市城北大道iu_520');
    commit;
    
    select * from other.PERSON where name like '%iu*_520' escape '*';
    
  • 效果图:在这里插入图片描述


2.5 .ROW

简介:LIKE 谓词除支持使用列的计算外,还支持通过 ROW 保留字对表或视图进行 LIKE 计算。 该查询依次对表或视图中所有字符类型的列进行 LIKE 计算,只要有一列符合条件,则返回 TRUE

  • 代码:

    -- 2.5查询出版社与中华有关的书籍信息
    -- 使用.ROW 进行 LIKE 谓词的查询
    select * from PRODUCTION.PRODUCT WHERE product.ROW like '%中华%';
    
  • 效果图:在这里插入图片描述


2.7 组合逻辑

简介:可以用逻辑算符(AND,OR,NOT)与各种谓词相组合生成较复杂的条件查询

  • 代码:

     --2.7查询当前销售价格低于 15 元且折扣低于 7 或出版社为人民文学出版社的图书名称和作者
     --可以用逻辑算符(AND,OR,NOT)与各种谓词相组合生成较复杂的条件查询
     select name,author from PRODUCTION.PRODUCT where nowprice < 15 and discount < 7 or publisher = '人民文学出版社';
    
  • 效果图:在这里插入图片描述


3、集函数

简介:为了进一步方便用户的使用,增强查询能力,SQL 语言提供了多种内部集函数。集函数又称库函数,当根据某一限制条件从表中导出一组行集时,使用集函数可对该行集作统计操作,集函数可分为 10 类:

  1. COUNT(*);
  2. 相异集函数 AVG|MAX|MIN|SUM|COUNT(DISTINCT<列名>);
  3. 完全集函数 AVG|MAX|MIN| COUNT|SUM([ALL]<值表达式>);
  4. 方差集函数 VAR_POP、VAR_SAMP、VARIANCE、STDDEV_POP、STDDEV_SAMP、STDDEV;
  5. 协方差函数 COVAR_POP、COVAR_SAMP、CORR;
  6. 首行函数 FIRST_VALUE;
  7. 求区间范围内最大值集函数 AREA_MAX;
  8. FIRST/LAST 集函数 AVG|MAX|MIN| COUNT|SUM([ALL] <值表达式>) KEEP(DENSE_RANK FIRST|LAST ORDER BY 子句);ORDER BY 子句语法参考第 4.7 节;
  9. 字符串集函数 LISTAGG/LISTAGG2;
  10. 求中位数函数 MEDIAN。

集函数只能单独使用,只能返回一列,除非和group by使用

例子:

  • 代码:

     -- 3.1查询折扣小于 7 的图书中现价最低的价格
     SELECT MIN(nowprice) FROM PRODUCTION.PRODUCT;
     -- 3.1错误示例,只能单独使用或者和group by联合使用
      SELECT name,MIN(nowprice) FROM PRODUCTION.PRODUCT;
     
     -- 3.2求折扣小于 7 的图书的平均现价
     SELECT AVG(nowprice) FROM PRODUCTION.PRODUCT WHERE DISCOUNT < 7;
     
     
     
     -- 3.3求折扣大于 8 的图书的总价格
     SELECT SUM(nowprice) FROM PRODUCTION.PRODUCT WHERE DISCOUNT > 8;
     
     
     
     -- 3.4查询图书的个数
     SELECT COUNT(*) FROM PRODUCTION.PRODUCT;
     SELECT DISTINCT COUNT(*) FROM PRODUCTION.PRODUCT;
     
     
     
     -- 3.5求图书的现价方差
     SELECT VARIANCE(NOWPRICE) FROM PRODUCTION.PRODUCT;
     
     
     
     -- 3.6求图书的现价标准差
     SELECT STDDEV(NOWPRICE) FROM PRODUCTION.PRODUCT;
     
     
     -- 3.7求图书的现价样本标准差
     SELECT STDDEV_SAMP(NOWPRICE) FROM PRODUCTION.PRODUCT;
     
     
     -- 3.8求产品原始价格 ORIGINALPRICE 和当头销售价格 NOWPRICE 的总体协方差
     SELECT COVAR_POP(ORIGINALPRICE, NOWPRICE) FROM PRODUCTION.PRODUCT; 
     
     
     -- 3.9求产品原始价格 ORIGINALPRICE 和当头销售价格 NOWPRICE 的样本协方差
     SELECT COVAR_SAMP(ORIGINALPRICE, NOWPRICE) FROM PRODUCTION.PRODUCT; 
     
     
     -- 3.10求产品原始价格 ORIGINALPRICE 和当头销售价格 NOWPRICE 的相关系数
     SELECT CORR(ORIGINALPRICE, NOWPRICE) FROM PRODUCTION.PRODUCT; 
     
     
     -- 3.11返回查询项的首行记录
     SELECT * FROM PRODUCTION.PRODUCT;
     SELECT FIRST_VALUE(NAME) FROM PRODUCTION.PRODUCT;
     
     
     -- 3.12求图书的现价在 20~30 之间的最大值
     SELECT area_max(NOWPRICE,20,30) FROM PRODUCTION.PRODUCT; 
     
     
     -- 3.13求每个用户最早定的商品中花费最多和最少的金额
     select CUSTOMERID, max(TOTAL) keep (dense_rank first order by ORDERDATE) max_val, min(TOTAL) keep (dense_rank first order by ORDERDATE) min_val from SALES.SALESORDER_HEADER group by CUSTOMERID;
     
     
     -- 3.14求出版的所有图书
     SELECT LISTAGG(NAME, ', ') WITHIN GROUP (ORDER BY NAME) LISTAGG FROM PRODUCTION.PRODUCT;
     
     
     -- 3.15求按照 type 分组之后,各组内 nowprice 的中位数
     SELECT MEDIAN(nowprice)FROM PRODUCTION.PRODUCT group by(type);
    
  • 效果图:在这里插入图片描述


4、分析函数

简介:分析函数主要用于计算基于组的某种聚合值。如果不使用分析函数,则必须使用连接查询、子查询或者视图,甚至复杂的存储过程实现。DM分析函数为用户分析数据提供了一种更加简单高效的处理方式。引入分析函数后,只需要简单的 SQL 语句,并且执行效率方面也有大幅提高。 与集函数的主要区别是,分析函数对于每组返回多行,而集函数对于每个分组只返回一行。多行形成的组称为窗口,窗口决定了执行当前行的计算范围,窗口的大小可以由组中定义的行数或者范围值滑动.

分析函数可分为 11 类:

  1. COUNT(*);

  2. 完全分析函数 AVG|MAX|MIN| COUNT|SUM([ALL]<值表达式>),这 5个分析函数的参数和作为集函数时的参数一致;

  3. 方差函数 VAR_POP、VAR_SAMP、VARIANCE、STDDEV_POP、STDDEV_SAMP、STDDEV;

  4. 协方差函数 COVAR_POP、COVAR_SAMP、CORR;

  5. 首尾函数 FIRST_VALUE、LAST_VALUE;

  6. 相邻函数 LAG 和 LEAD;

  7. 分组函数 NTILE;

  8. 排序函数 RANK、DENSE_RANK、ROW_NUMBER;

  9. 百分比函数 PERCENT_RANK、CUME_DIST、RATIO_TO_REPORT、PERCENTILE_CONT、NTH_VALUE;

  10. 字符串函数 LISTAGG;

  11. 指定行函数 NTH_VALUE。

例子:

  • 代码:分析函数后跟over(partition by)分区和group by+集函数一致

     -- 4.1查询折扣大于 7的图书作者以及最大折扣
     /**
     如果使用的是集函数 MAX,那么得到的是所有图书中折扣的最大值,并不能查询出作者,
     使用了分析函数,就可以对作者进行分区,得到每个作者所写的图书中折扣最大的值。MIN 的含义和 MAX 类似
     */
     SELECT NAME,AUTHOR,DISCOUNT FROM PRODUCTION.PRODUCT;
     SELECT AUTHOR, MAX(DISCOUNT) OVER (PARTITION BY AUTHOR) AS MAX FROM PRODUCTION.PRODUCT WHERE DISCOUNT > 7;
     SELECT MAX(DISCOUNT) FROM PRODUCTION.PRODUCT;
    
  • 图例:在这里插入图片描述

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


5、情况表达式

简介:指明一个条件值。将搜索条件作为输入并返回一个标量值,类似于if和else

例子

  • 代码:

     -- 5.1查询图书信息,如果当前销售价格大于 20 元,返回“昂贵”,如果当前销售价格小于等于 20 元,大于等于 10 元,返回“普通”,如果当前销售价格小于 10 元,返回“便宜
     select name,
     	CASE
     		WHEN nowprice > 20 THEN '昂贵'
     		WHEN nowprice > 10 and nowprice <= 20 THEN '普通'
     		else '便宜'
     	end AS 选择	
      from PRODUCTION.PRODUCT;
    
  • 图例:在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python数据分析实战-实现txt文件与列表(list)相互读写转换(附源码和实现效果)

前面我介绍了可视化的一些方法以及机器学习在预测方面的应用&#xff0c;分为分类问题&#xff08;预测值是离散型&#xff09;和回归问题&#xff08;预测值是连续型&#xff09;&#xff08;具体见之前的文章&#xff09;。 从本期开始&#xff0c;我将做一个数据分析类实战…

python对指定字符串逆序的几种方法

对于一个给定的字符串&#xff0c;逆序输出&#xff0c;这个任务对于python来说是一种很简单的操作&#xff0c;毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了&#xff0c;今天总结了一下python中对于字符串的逆序输出的6种常用的方法 方法一&#xff1a;直接使…

04 数学软件与建模---Lingo

(12条消息) Lingo学习笔记&#xff08;一&#xff09;——语法入门_小白成长之旅的博客-CSDN博客 1.在LINGO中求解如下的LP问题&#xff1a; min2*x13*x2; x1x2>350; x1>100; 2*x1x2<600; 2.LINGO中的集 2.1 集的定义 对实际问题建模的时候&#xff0c;总会遇到一群…

java单例模式--懒汉式、饿汉式(第二次学习)

目录 java单例模式--懒汉式、饿汉式 1、要点 2、单例模式的类型&#xff08;五种&#xff09; 2.1 饿汉式 2.2 枚举饿汉式&#xff08;推荐使用&#xff09; 2.3 懒汉式单例 2.4 DCL懒汉式&#xff08;双检锁的懒汉式&#xff09; 2.5 内部类懒汉式&#xff08;推荐使用…

vue2 sass 安装及使用2

根据上一篇 vue2 sass 安装及使用_lsswear的博客-CSDN博客&#xff0c;使用vue-cli 5版本继续尝试安装sass。 本地环境&#xff1a; win10 vue2 vue-cli 5 sass安装 vue create testsass npm i node-loaderadded 2 packages in 6snpm i sass-loaderadded 1 package in 3s…

【pytorch】MNIST 梯度上升法求使得某类概率最大的样本

目标&#xff1a;用 MNIST 训练一个 CNN 模型&#xff0c;然后用梯度上升法生成一张图片&#xff0c;使得模型对这张图片的预测结果为 8 import numpy as np import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import torchvi…

jsp科研管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 科研管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发&#xff0c;数据库为Mysql&#xff0c;使用ja…

面试:KOOM内存泄漏的监控

LeakCannary 为什么各大厂自研的内存泄漏检测框架都要参考 LeakCanary&#xff1f;因为它是真强啊&#xff01;_慕课手记 内存快照是在触发了onDestory中做的 目前&#xff0c;LeakCanary 支持以下五种 Android 场景中的内存泄漏监测&#xff1a; 1、已销毁的 Activity 对象…

基于java+ssm的在线投票管理系统-计算机毕业设计

项目介绍 基于SSM的在线投票系统以XXX学院为背景&#xff0c;运用在校所学习的软件开发原理&#xff0c;采用SpringSpringMVCMyBatis技术和MySQL数据库构建一个基于B/S模式的在线投票系统。本系统在设计之初&#xff0c;结合网络上。现有的在线投票系统。经过具体分析之后都出…

【Go】 力扣 - 剑指 Offer 第五天 - 二维数组中的查找

[Go] 力扣 - 剑指 Offer 第五天 - 二维数组中的查找题目来源题目描述示例题目分析算法暴力法代码实现复杂度分析二分法代码实现复杂度分析模拟 BST 标记查找法代码实现复杂度分析结尾耐心和持久胜过激烈和狂热。 题目来源 来源&#xff1a;力扣&#xff08;LeetCode&#xff0…

TestStand-从LabVIEW创建TestStand数据类型的簇

文章目录从LabVIEW创建TestStand数据类型的簇从LabVIEW创建TestStand数据类型的簇 TestStand提供数字、字符串、布尔值和对象引用内置数据类型。 TestStand还提供了几种标准的命名数据类型&#xff0c;包括路径、错误、LabVIEW模拟波形等。可以通过创建容器数据类型来保存任何…

【第四部分 | JavaScript 基础】1:JS概述、变量及输入输出

目录 | 概述 | JS的书写位置 | 输入输出 | 变量 命名规范 基本使用 通过输入语句prompt把信息赋值给变量 | 数据类型 JS数据类型的特别 简单数据类型 简介 简单数据类型 Number 简单数据类型 String 简单数据类型 Boolean、Undefined、Null 获取类型 类型转换 | …

巴菲特斥资290亿抄底,台积电跌成“白菜价”?

11月14日&#xff0c;巴菲特旗下伯克希尔向美国证券交易委员会&#xff08;SEC&#xff09;提交了13F季度报告。报告显示&#xff0c;三季度伯克希尔斥资41亿美元&#xff08;约290亿人民币&#xff09;大幅买入台积电。 报告发出后&#xff0c;第二天台积电美股涨超6%&#x…

多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

GLAD:利用全息图实现加密和解密

概述 全息图能够通过两束相干光相干叠加获得。用其中一束光照射生成的全息图就可以得到另一束相干光&#xff0c;这样全息图就可以用作加密/解密的装置了。 系统描述 在本例中一个复杂的随机图样作为参考光源&#xff0c;用来恢复全息图样对应的物光源。加密过程中&am…

单目标应用:人工兔优化算法(Artificial Rabbits Optimization ,ARO)求解旅行商问题TSP(提供MATLAB代码)

一、算法简介 人工兔优化算法&#xff08;Artificial Rabbits Optimization &#xff0c;ARO&#xff09;由Liying Wang等人于2022年提出&#xff0c;该算法模拟了兔子的生存策略&#xff0c;包括绕道觅食和随机躲藏&#xff0c;并通过能量收缩在两种策略之间转换。绕道觅食策…

显示订单列表【项目 商城】

显示订单列表【项目 商城】前言显示订单列表1 持久层1.1 规划SQL语句1.2 实现接口与抽象方法1.3 配置SQL映射测试2 业务层2.1 规划异常2.2 编写接口与抽象方法2.3 实现抽象方法测试3 控制器3.1 处理异常3.2 设计请求3.3 处理请求测试4 前端页面测试前言 写作于 2022-10-14 17:…

【MySQL】安装与配置(内附安装包+未将对象引用设置到对象的实例的错误解决方法)

目录 一、数据库分类 &#xff08;1&#xff09;关系型数据库&#xff08;RDBMS&#xff09; &#xff08;2&#xff09;非关系型数据库 二、MySQL服务器安装 三、安装包文件分享 一、数据库分类 数据库大体可以分为关系型数据库和非关系型数据库 &#xff08;1&#xff0…

U盘复制错误0x80071ac3如何解决?

U盘是一款移动存储设备&#xff0c;但是在使用中也会遇到一些错误问题&#xff0c;比如文件复制、粘贴或移动时提示0x80071ac3错误代码要如何解决呢&#xff1f;下面就和小编一起来看看解决办法吧。 方法一&#xff1a; 1、有些用户是使用U盘时出现的问题&#xff0c;先按下快捷…

记宝塔使用webhook自动化同步gitee代码

1、服务器ssh密钥 1.1、输入命令查看服务器是否存在密钥&#xff1a; cd ~/.sshls id_xxx.pub的是公钥、id_xxx的是私钥 如果没有&#xff0c;就要先生成一下&#xff0c;生成ssh密钥参考https://gitee.com/help/articles/4181#article-header0 1.2、复制ssh公钥到码云公钥…