SQL数据库:数据查询

2023-10-30

数据查询

语句格式

在这里插入图片描述

  • SELECT子句:指定要显示的属性列
  • FROM子句:指定查询对象(基本表或视图)
  • WHERE子句:指定查询条件
  • GROUP BY子句:对查询结果按指定序列的值分组(比如说男的一组,女的一组),该属性列值相等的元祖为一个组。通常会在每组中使用聚集函数(比如说对男生一组计数,女生一组计数)
    • HAVING短语:只有满足指定条件的组才予以输出
  • ORDER BY子句:对查询结果表按指定列值的升序或降序排列

功能分解:

在这里插入图片描述

1.SELECT相关用法

[例1]查询全体学生的学号与姓名。

SELECT Sno,Sname   //选择属性  SELECT * 代表所有列
From Student		//指明表的来源
补充SELECT用法:
SELECT Sno,2020-Sage   //可以得到出生年份,可以是表达式	
SELECT LOWER(Sdept)    //将得到的Sdept值全部化为小写
使用列的别名改变查询结果的列标题
SELECT Sname NAME,2020-Sage BIRTHDAY  //定义别名
消除重复的行
  • SELECT默认是不会删除重复的行的,消除重复的行需要使用DISTINCT关键字
SELECT DISTINCT Sno

2.WHERE相关用法

查询条件 谓词
比较 =,>,>=,!=, !>
确定范围 BETWEEN AND , NOT BETWEEN AND
确定集合 IN , NOT IN
字符匹配 LIKE , NOT LIKE
空值 IS NULL , IS NOT NULL
逻辑运算 AND , OR , NOT

比较:
例2.查询计算机科学系 且 年龄小于20岁 的学生名单

SECLECT Sname
FROM Student
WHERE Sdept='CS' AND Sage<20;      //注意,这个分号不能少

确定范围:
例3.查询年龄不在20-23岁之间的学生姓名、系别和年龄

SELECT Sname,Sdpt,Sage
FROM Student
WHERE Sage NOT BETWEEN 20 AND 23;  

确定集合:
例4.查询计算机系(CS)、数学系(MA)学生的姓名和性别

SELECT Sname, Ssex
FROM Student
WHERE Sdept IN('CS','MA'); 

字符匹配:

  • 语法: 谓词: [NOT] LIKE ‘<匹配串>’ [ESCAPE ‘<换码字符>’]
  • <字符串>可以是一个完整的字符串,也可以含有通配符%和_
    • % 代表人已长度的字符串,a%b,代表以a开头,b结尾的任意长度字符串
    • _ 代表任意单个字符

例5.查询学号为1830130281的学生的详细情况

SELECT *
FROM Student
WHERE Sno LIKE '1830130281'  //<==> WHERE Sno = '1830130281'
  • ESCAPE换码字符的用法
    • 作用:使用换码字符将统配符转义为普通字符。
      例6.查询DB_Design课程的课程号和学分
SELECT Cno , Ccredit
From Course
WHERE Cname LIKE 'DB\_Design'ESCAPE'\';

3.ORDER BY 子句

  • 作用:可以按一个或多个属性列排列
  • 升序:ASC ; 降序:DESC;缺省值为升序

例7.查询结果按分数降序排列,体现ORDER BY子句的用法即可

SELECT .....
FROM ....
WHERE ....
ORDER BY Grade DESC;  

例8.查询结果所在系号升序,年龄降序

SELECT ...
FROM ...
WHERE ...
ORDER BY Sdept ASC , Sage DESC;    //ASC省略也可以

4.聚集函数 (常配合GROUP BY中的HAVING或SELECT一起使用)

  • 只能用于SELECTHAVING
  • 统计元祖个数 :COUNT(*)
  • 统计一列中值得个数:COUNT( [ DISTINCT|ALL ] <列名>)
  • 计算一列总和: SUM(同第二行)
  • 计算一列平均值 : AVG(同第二行)
  • 求一列中的最大值和最小值: MAX(同第二行), MIN(同第二行)
  • 注意: DISTINCT并不是一定要有,它的意思是去重(缺省值是ALL)

例9.查询选修了课程的学生人数。

SELECT COUNT(DISTINCT Sno)
FROM SC;

5.GROUP BY子句分组

  • 按指定的一列或多列值分组,值相等的为一组。
    用法注意:

错误示例:

SELECT Cnpo     //
FROM SC			//
GROUP BY Cno   //

SELECT 后面的表达式必须和GROUP BY 后面的表达式对应。如果GROUP BY y 则 SELECT y ,如果不想对应 则必须SELECT后面跟聚集函数,比如COUNT(Cnpo)

例10.求各个课程号及相应的选课人数。(思路:相同的课程号为一组)

SELECT Cno, COUNT(Sno)
FROM SC
GROUP BY Cno;   //意思是课程号相等的所有列为一组。

查询结果类似下方表格所示:

Cno COUNT(Sno)
1 22
2 34
3 45
4 12

例11.查询选修了3门以上课程的学生学号

SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*)>3;  //HAVING函数是在对每一个组进行操作,某一组列数大于3的输出

例12.查询平均成绩大于等于90分的学生学号和平均成绩

SELECT Sno , AVG(Grade)
FROM SC
GROUP BY Sno   
HAVING AVG(Grade)>=90;  //AVG不能放在WHERE中!!!  

例题13.按系并区分男女统计各系学生的人数,并按照桉降序排序

SELECT Sdept, Ssex , COUNT(Sno)
FROM Student
GROUP BY Sdept , Ssex
ORDER BY COUNT(Sno) DESC;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL数据库:数据查询 的相关文章

  • 使用条件 SQL 统计每月汇总记录

    我有一张桌子 我们就叫他们桌子吧SUMMARYDATA NIP NAME DEPARTMENT STATUSIN STATUSOUT TOTALLOSTTIME A1 ARIA BB 2020 01 21 08 06 23 2020 01
  • 删除表的重复项

    In my activity logs 它包含列 material name user id mod result 这标志着测试是否通过 失败 cert links 不知何故 用户生成了两倍的条目material name与cert lin
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 在 Mysql 上使用 EntityManager JPA 运行脚本

    我正在尝试运行脚本 sql 文件 但由于我尝试了多种方法 因此出现多个错误 这是我的主要 sql 脚本 INSERT INTO Unity VALUES 11 paq 0 2013 04 15 11 41 37 Admin Paquete
  • MySQL:如何获取每个分组的x个结果数[重复]

    这个问题在这里已经有答案了 可能的重复 mysql 在 GROUP BY 中使用 LIMIT 来获取每组 N 个结果 https stackoverflow com questions 2129693 mysql using limit w
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER
  • SQL Server 2008 错误 233

    我正在使用以下 sql 脚本在 SQL Server 2008 中创建新登录名 CREATE LOGIN xyz WITH PASSWORD xyz DEFAULT DATABASE master DEFAULT LANGUAGE us e
  • 包含列和行总计的 SQL 数据透视表

    我正在尝试将行和列总计添加到该数据透视表中 create table test4 city nvarchar 10 race nvarchar 30 sex nvarchar 10 age int insert into test4 val
  • 如何拥有引用另一个表的检查约束?

    我在 SQL Server 2008 数据库中有以下表 tblItem 其中有一个ItemID field 好项目 它还有一个 ItemID 字段 并且有一个指向 tblItem 的外键 tblBadItem 它也有一个 ItemID 字段
  • 时间序列数据的自连接

    我需要一些帮助来完成我认为应该是相当简单的自连接查询 只需要将两条记录中匹配的开始时间和结束时间合并为一条记录 假设我的表中有以下内容 Time Event 08 00 Start 09 00 Stop 10 30 Start 10 45
  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何
  • SQL查询查找具有特定数量关联的行

    使用 Postgres 我有一个架构conversations and conversationUsers Each conversation有很多conversationUsers 我希望能够找到具有确切指定数量的对话conversati
  • postgresql 不同的不工作

    我使用以下代码从数据库获取值 但是当我编写这段代码时 测试看看问题出在哪里 我注意到查询没有从数据库中获取不同的值 这是查询 select distinct ca id as id acc name as accName pIsu name
  • meta_query,如何使用关系 OR 和 AND 进行搜索?

    已解决 请参阅下面的答案 我有一个名为的自定义帖子类型BOOKS 它有几个自定义字段 名称为 TITLE AUTHOR GENRE RATING 我该如何修复我的meta query下面的代码以便仅books在自定义字段中包含搜索词 tit
  • SQL Server使用in关键字传递字符串数组查询

    我认为 IN 子句不能接受具有多个值的绑定参数 Oracle 不能 需要几分钟 查询是 declare setting varchar max set setting Sales Entry Grid Cursor Customer Man
  • 解析错误:语法错误,意外的 T_RETURN [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 遇到这个问
  • SQL Server 查询中 UNION ALL 与 OR 条件

    我必须根据表上不存在的条件选择一些行 如果我使用如下的 union all 它会在不到 1 秒的时间内执行 SELECT 1 FROM dummyTable WHERE NOT EXISTS SELECT 1 FROM TABLE t WH
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 无法与重定向器建立连接。确保“sql browser”服务正在运行

    所以我尝试这个 sql server 2012 由于这个错误我无法打开任何 ssis 包 无法与重定向器建立连接 确保 sql browser 服务正在运行 我的 Sql 浏览器肯定正在运行 我尝试在本地服务 本地系统和网络下更改它 仍然没
  • SQL Server 中的 FIFO 查询

    我正在构建一个库存管理应用程序c with SQL server 我想做一个FIFO从我的表查询 我以可变价格购买了相同的产品 之后我卖掉了其中一些 我想根据 先进先出 进行查询BatchDate柱子 所以我想通过PurchasePrice

随机推荐

  • 下载安装office2019

    Hello 大家好 我是小喵 支付宝搜索 321994 领红包喽 前几天答应给大家写一篇关于安装激活Office2019的文章 一直在准备 准备制作GIF动图 制作图片等 把我电脑上的Office反复安装卸载 折腾的不像样子 终于 功夫不负
  • 在B端供应链上,看见企业增长的「密码」

    在被疫情重塑的B端市场里 在这个新的产业互联时代 发展的新答案到底是什么 作者 皮爷 出品 产业家 2022年中秋节 一款特殊的牛奶让伊利再次在B端市场破圈 在人们司空见惯的牛奶包装上 青花瓷的样本图案清晰可见 典雅大气 蓝白相间之中充斥着
  • [学C日记]---循环

    1 计算 n的阶乘 调用阶乘函数 三种循环 1 计算阶乘 int main int n 0 int m 0 scanf d n m jiecheng n printf d n m system pause return 0 int jiec
  • wsl 固定ip 方法 一劳永逸

    目前网上有很多办法 有用host 有修改bash的 非常多 也非常麻烦 目前发现这种方法最为简单 添加一个开机启动项 配置一个netsh 1 准备一个vbs 并添加到开机启动项 Set ws WScript CreateObject WSc
  • 更改内存频率导致电脑用不了怎么解决?

    目录 台式机 解决办法 笔记本 解决办法 电脑能开机 显示器指示灯闪烁但就是不亮显示器 主要问题是内存 内存超频不能超过本身内存卡的极限 至于内存卡的极限在哪里 你可以上网查一下你的内存卡的信息 超过了极限基本上一改电脑就跟死机差不多 运行
  • 2022国赛17:打印服务

    大赛试题内容 七 打印服务 任务描述 为了提高打印服务效率 节省成本 请采用共享打印服 务 实现共享打印的安全性 1 在 windows4 上安装打印机 驱动程序为 MS Publisher Color Printer 名称和共享名称均为
  • 排序算法(6)----计数排序

    不知道为什么 突然编辑器不支持颜色丰富的intellij IDEA直接复制了 博主有点沮丧 因此我先用图片的形式展示并分析 然后在最后会将全部代码呈上 排序思想 在一个数组中 对于每一个数据 都统计有多少个数字小于它 就能反应出它当前所在的
  • Centos 7开机菜单设置

    Centos 7的开机菜单设置主要是能过 etc grub2 cfg etc grub2 cfg gt boot grub2 grub cfg timeout 5 为等待用户选择时间 当5秒钟没有选择 系统会启动默认的菜单 与centos
  • 基于阿里云服务器+wordpress构建自己的网站(全过程系列,无需任何编程知识)

    1 阿里云服务器配置 既然是基于阿里云服务器 那么当然是先得申请一个阿里云服务器 本博客使用的服务器是云服务器ECS 共享计算型 n4系列 阿里云对新用户有很多优惠活动 这个是我当时花了69块钱买了一年 又通过某个渠道 返了60块钱 相当于
  • 数学建模美赛E、F题备考策略(自用,大部分复制粘贴)

    这里要讲一下故事的背景 我们小组三个人都是大一大二的学生 我的队友们都是数学专业的学生 所以比赛中的编程部分就交给了我这样的工业工程系的选手 我们在看完了历年赛题后一直认为 前面的几题我们都很难建立出很棒的模型 因此我们将目光对准E F两题
  • 为什么 Redis 中的事物很玄学,没人使用 ?

    1 为什么不使用 Redis 中的事物 Redis 中的事物是 弱事物 它在操作的时候 是将多个命令全部加入到事物队列中 然后通过 exec 命令一次性执行所有命令 这样做的好处是可以减少网络往返的次数 提高效率 它的使用示例如下 Redi
  • 输入英文有空格 解决方法

    shift 空格 直接搞定
  • Uniform convergence

    In the mathematical field of analysis uniform convergence is a mode of convergence of functions stronger than pointwise
  • vue3 + elementplus 教程

    一 初始化 安装 vue cli g 全局安装 vue cli npm install vue cli g 或者 yarn global add vue cli 二 创建项目 vue create 项目名 进行项目初始化 D workspa
  • C# JSON 常用方法 - Json字符串转对象

    创建项目 ConsoleApplication Json 选择项目右键管理NuGet程序包 搜索Newtonsoft Json 并下载安装 选择项目添加 JsonHelper cs 添加引用 using Newtonsoft Json 编写
  • [893]推荐几款提高体验与效率的Chrome插件神器

    今天推荐几款好用的 Chrome 插件 都是我自己一直在用的插件 可以到 Chrome 商店下载 话不多说 进入主题 Insight io For Github 如图 就像这样 可以以文件树的方式浏览 github 的代码文件 Toggle
  • 【注册机】JCreator Pro v4.50.010 注册机

    下载地址 http oyksoft oyksoft com oyksoft com JCreator Pro v4 50 010 Keygen Only HAZE rar
  • OpenCV均值、中值滤波器的讲解及实战应用(附Python源码)

    需要源码和图片请点赞关注收藏后评论区留言私信 在尽量保留原图像信息的情况下 去除图像内噪声 降低细节层次信息等一系列过程 叫作图像的平滑处理 或图像的模糊处理 实现平滑处理最常用的工具就是滤波器 通过调节滤波器的参数 可以控制图像的平滑程度
  • Java通过两点经纬度和范围距离计算范围四个顶点的经纬度

    参考博文 https blog csdn net zengmingen article details 68490497 private static final double mile 1609 344 米 英里换算 通过起点 终点的经纬
  • SQL数据库:数据查询

    数据查询 语句格式 SELECT子句 指定要显示的属性列 FROM子句 指定查询对象 基本表或视图 WHERE子句 指定查询条件 GROUP BY子句 对查询结果按指定序列的值分组 比如说男的一组 女的一组 该属性列值相等的元祖为一个组 通