SQL数据查询——单表查询和排序

news2024/11/16 21:55:44

文章目录

  • 一、单表查询
    • 1.查询列
      • 1)查询全部列指定列
      • 2)查询经过计算的值
      • 3)列的别名
    • 2.查询元组
      • 1)消除取值重复的行(DISTINCT)
      • 2)条件查询(WHERE)
    • 3.空值参与运算
    • 4.着重号
  • 二、排序(ORDER BY子句)


一、单表查询

单表查询指仅涉及一个表的查询

1.查询列

1)查询全部列指定列

选择表中的全波列或者部分列,这就是关系代数中的投影运算

该语句的执行过程:从选定的表中取出一个元组,取出该元组在选定的属性上的值,形成一个新的元组作为输出。对该表所有元组做相同的处理,最后形成一个结果关系作为输出。

# 最基本的SELECT语句: SELECT 字段1,字段2,... FROM 表名 
SELECT 1 + 1,3 * 2;

SELECT 1 + 1,3 * 2
FROM DUAL; #dual:伪表
  • 结果
    在这里插入图片描述

全部列

#查询全体学生的详细记录
SELECT * FROM Student;
  • 结果
    在这里插入图片描述

部分列

#查询全体学生的学号与姓名(指定列)
SELECT Sno, Sname
FROM Student;
  • 结果:
    在这里插入图片描述

2)查询经过计算的值

SELECT子句的<目标表达式>不仅可以是表中的属性列,也可以是表达式、字符串常量、函数等

计算之后的列默认名称为计算的公式

#查询全体学生的姓名及其出生年份
SELECT Sname, 2004-Sage
FROM Student;
  • 结果:
    在这里插入图片描述

3)列的别名

用户也可以通过指定别名来改变计算的列标题,对于含有算术表达式、常量、函数名的目标列表达式较为常用。

命名方式:紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。

#查询全体学生的姓名及其出生年份(假设今年是2004年)和所在的院系,要求用小写字母表示所有的系名
SELECT Sname AS 'NAME', 'Year of Birth:' BIRTH, 2004-Sage BIRTHDAY,
LOWER(Sdept) DEPARTMENT
FROM Student;
  • 结果
    在这里插入图片描述

2.查询元组

1)消除取值重复的行(DISTINCT)

两个本来并不完全相同的元组,投影到指定的某些列上之后,可能变成相同的行了,可以通过DISTINCT来取消重复的行

如果按照默认方式选定某一列

#查询选修了课程的学生学号
SELECT Sno FROM SC;
  • 结果有重复行
    在这里插入图片描述

加入DISTINCT

#去重
SELECT DISTINCT Sno
FROM SC;
  • 结果
    在这里插入图片描述

2)条件查询(WHERE)

常用的运算符

  1. 算数运算符
    在这里插入图片描述
  2. 比较运算符
    在这里插入图片描述
    在这里插入图片描述
  3. 逻辑运算符
    在这里插入图片描述
  4. 位运算符
    在这里插入图片描述
  5. 正则表达式
    在这里插入图片描述
    运算操作较为简单,查询方式也比较灵活,这里就不一一介绍了。
    常用的有比较(>、<……)、确定范围(BETWEEN……AND)、确定集合(IN)、字符匹配(LIKE)、涉及空值的查询(IS NULL / IS NOT NULL)、多重条件查询(AND / OR)

简单的示例

#查询所有年龄小于20岁的学生姓名及年龄
SELECT Sname, Sage
FROM Student
WHERE Sage < 20;
  • 结果
    在这里插入图片描述

3.空值参与运算

在某些属性中,经常会遇见NULL的情况,但是如果这一列带着NULL要参与运算,如果算作默认的运算,后面的结果都会是NULL

如果不加处理

SELECT employee_id,salary "月工资",salary * (1 + commission_pct) * 12 "年工资",commission_pct
FROM employees;
  • 结果:
    在这里插入图片描述

如果想要得到一个符合条件的值,可以根据实际情况,将NULL转化为合适的值

在这里,NULL代表没有奖金,所以应该转化为0再做运算

#实际问题的解决方案:引入IFNULL
SELECT employee_id,salary "月工资",salary * (1 + IFNULL(commission_pct,0)) * 12 "年工资",commission_pct
FROM `employees`;
  • 正确的结果
    在这里插入图片描述

4.着重号

我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,需要在SQL语句中使用一对``(着重号)引起来。

如果不加处理

#错误的:
SELECT * FROM ORDER;
  • 错误信息:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'ORDER' at
line 1

解决方法

SELECT * FROM `ORDER`;

二、排序(ORDER BY子句)

用户可用ORDER BY子句对查询结果按照一个或多个属性列的升序或降序排列,缺省(默认)为升序

排序规则

  • ASC为升序
  • DESC为降序
  • ORDER BY子句在SELECT语句的结尾

简单的例子

#查询所有学生的学号及成绩,结果按照分数的降序排列
SELECT Sno, Grade
FROM SC
ORDER BY Grade 	DESC;
  • 结果
    在这里插入图片描述

注意

  1. 也可使用列的别名进行排序
#查询全体学生姓名和所在的院系,结果按照院系号降序排列
SELECT Sname, Sdept dept
FROM Student
ORDER BY dept DESC;

在这里插入图片描述

  1. WHERE 需要声明在FROM后,ORDER BY之前。
#查询选修了3号课程的学生的学号及其成绩,查询结果按照分数的降序排列
SELECT Sno, Grade
FROM 	sc
WHERE Cno='3'
ORDER BY Grade DESC;
#1-4行执行顺序:2、3、1、4

在这里插入图片描述

  1. 二级排序
#查询全体学生的情况,查询结果按所在系的系号升序排序,同一系的学生按年龄降序排序
SELECT *
FROM Student
ORDER BY Sdept, Sage DESC;

在这里插入图片描述

  • 对于空值,排序时显示的次序由具体系统来决定。

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

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

相关文章

Webpack的知识要点

在前端开发中&#xff0c;一般情况下都使用 npm 和 webpack。   npm是一个非常流行的包管理工具&#xff0c;帮助开发者管理项目中使用的依赖库和工具。它可以方便地为项目安装第三方库&#xff0c;并在项目开发过程中进行版本控制。   webpack是一个模块打包工具&#xff…

C语言深度剖析之程序环境和预处理

1.程序的翻译环境和执行环境 第一种是翻译环境&#xff0c;在这个环境中源代码被转换为可执行的机器指令 第二种是执行环境&#xff0c;它用于实际执行代码 2.翻译环境 分为四个阶段 预编译阶段 &#xff0c;编译&#xff0c;汇编&#xff0c;链接 程序编译过程&#xff1a;多个…

使用vue3,vite,less,flask,python从零开始学习硅谷外卖(16-40集)

严正声明&#xff01; 重要的事情说一遍&#xff0c;本文章仅供分享&#xff0c;文章和代码都是开源的&#xff0c;严禁以此牟利&#xff0c;严禁侵犯尚硅谷原作视频的任何权益&#xff0c;我知道学习编程的人各种各样的心思都有&#xff0c;但这不是你对开源社区侵权的理由&am…

iptables防火墙之SNAT与DNAT

目录 1、SNAT策略概述 1.SNAT策略的典型应用环境 2.SNAT策略的原理 3.SNAT工作原理 4.SNAT转换前提条件 5.开启SNAT命令 6.SNAT转换 2.SNAT示例 1. 配置网关服务器 2.Xshell 连接192.168.100.100 3.DNAT策略及应用 1. DNAT策略概述 2.DNAT 策略的应用 3.DNAT转换前提条件…

看完这篇 教你玩转渗透测试靶机vulnhub——Hack Me Please: 1

Vulnhub靶机Hack Me Please: 1渗透测试详解Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;Vulnhub靶机漏洞详解&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;漏洞利用③&#xff1a;获取反弹shell&#xff1a;④&#x…

how https works?https工作原理

简单一句话&#xff1a; https http TLShttps 工作原理&#xff1a;HTTPS (Hypertext Transfer Protocol Secure)是一种带有安全性的通信协议&#xff0c;用于在互联网上传输信息。它通过使用加密来保护数据的隐私和完整性。下面是 HTTPS 的工作原理&#xff1a;初始化安全会…

Camtasia2023最新版电脑视频录屏记录编辑软件

在Mac或Wind上有各种可用的视频记录和编辑软件&#xff0c;其中Camtasia被称为视频记录器和视频编辑器。录屏软件Camtasia2023到底有什么特色功能&#xff1f;本文将帮助您选择理想的选择来开始视频捕获&#xff0c;创建和编辑。Camtasia2023是Mac/win平台上一款使用非常简单的…

【JavaScript】题(牛客网)——熟练使用函数调用,超详细讲解

1 熟练使用函数调用 1.1 题目 执行以下程序&#xff0c;输出结果为 var uname "window"; var object {uname: "object",fun: function () {console.log(this.uname);return function () {console.log(this.uname);};}, };object.fun()();1.2 答案 ob…

ThingsBoard-设备配置

1、概述 从 ThingsBoard 3.2 开始,租户管理员可以使用设备配置文件为多个设备配置通用设置。每个设备在单个时间点都有一个且唯一的配置文件。 有经验的 ThingsBoard 用户会注意到设备类型已被弃用,取而代之的是设备配置文件。更新脚本将根据唯一的设备类型自动创建设备配置…

三、Java面向对象

1 . 方法 方法(method)是程序中最小的执行单元方法就是一些代码的打包 需要的时候可以直接调用方法之间是平级的关系 不能在方法里面定义方法方法不调用就不执行 方法的定义 // 方法的定义 /* [修饰符] 返回值类型 方法名称([参数 1],[参数 2]){语句A;return 返回值; } *///…

VT虚拟化框架编写

文章目录前言VT架构基础VT框架编写步骤一&#xff1a;检测VT是否开启VMM和VMVMON和VMCSVT框架编写步骤二 填充VMONVT框架编写步骤三 进入VTVT框架编写步骤四 初始化VMCSVT框架编写步骤五 初始化VMCS数据区VT框架编写步骤六 处理必要事件前言 学习VT相关的知识&#xff0c;需要…

C++11新特性

文章目录说在前面花括号{}初始化new的列表初始化STL相关容器的列表初始化相关语法格式容器列表初始化的底层原理forward_list和array与类型相关的新特性decltype左值引用和右值引用什么是左值&#xff0c;什么是右值左值和右值的本质区别右值引用如何理解右值引用std::move移动…

【软考系统架构设计师】2022下综合知识历年真题

【软考系统架构设计师】2022下综合知识历年真题 【2022下架构真题第01题&#xff1a;绿色】 01.云计算服务体系结构如下图所示&#xff0c;图中①、②、③分别与SaaS、PaaS、Iaas相对应&#xff0c;图中①、②、③应为( ) A.应用层、基础设施层、平台层 B.应用层、平台层、基础…

Linux驱动开发(一)

linux驱动学习记录 一、背景 在开始学习我的linux驱动之旅之前&#xff0c;先提一下题外话&#xff0c;我是一个c语言应用层开发工作人员&#xff0c;在工作当中往往会和硬件直接进行数据的交互&#xff0c;往往遇到数据不通的情况&#xff0c;常常难以定位&#xff0c;而恰巧…

静态分析工具Cppcheck在Windows上的使用

之前在https://blog.csdn.net/fengbingchun/article/details/8887843 介绍过Cppcheck&#xff0c;那时还是1.x版本&#xff0c;现在已到2.x版本&#xff0c;这里再总结下。 Cppcheck是一个用于C/C代码的静态分析工具&#xff0c;源码地址为https://github.com/danmar/cppcheck …

Python之字符串精讲(上)

前言 字符串是所有编程语言在项目开发过程中涉及最多的一个内容。大部分项目的运行结果&#xff0c;都需要以文本的形式展示给客户&#xff0c;曾经有一位久经沙场的老程序员说过一句话&#xff1a;“开发一个项目&#xff0c;基本上就是在不断的处理字符串”。下面对Python中…

自命为缓存之王的Caffeine(3)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e;缓存的存储空间是远远小于磁盘的。所以对于有些过期的数据&#xff0c;就需要定期进行清理&#xff0c;腾出存储空间。Caffeine又是怎么做的呢&#xff1f;Caffei…

SpringBoot+Vue在线小说系统

简介&#xff1a;本项目采用了基本的springbootvue设计的在线小说系统。详情请看截图。经测试&#xff0c;本项目正常运行。本项目适用于Java毕业设计、课程设计学习参考等用途。 特别说明&#xff1a;本系统设计网络爬虫&#xff0c;遵循爬虫规则&#xff0c;此项目用于学习&a…

2023关键词:挑战

未失踪人口回归… 好久不见&#xff0c;不经意间拖更2个多月。今天周末&#xff0c;外面淅淅沥沥下着小雨&#xff0c;这种窝在床上的时刻最适合写点东西了。 但是建议大家在办公或者写博客的时候尽量还是端正坐姿&#xff0c;我就是因为喜欢这样靠在床背上&#xff0c;长时间…

Spring Security 从入门到精通

前言 Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 一般来说中大型的项目都是使用SpringSecurity 来做安全框架。小项目有Shiro的比较多&#xff0c;因为相比与Spr…