SQL基础:查询的基本使用

上一节我们讲述了记录的基本操作,这一节我们来单独讲一下查询。

查询基本结构

首先我们来看下查询的基本结构

SELECTcolumn1,column2,...
FROMtable_name
[WHEREcondition]
[GROUP BYcolumn1, column2, ...]
[HAVINGaggregate_function(column) condition]
[ORDER BYcolumn1 [ASC | DESC]];

其中中括号包含的部分是非必须的。接下来我们来学习下每个部分的作用。

辅助表创建

为了讲述方便,这里我们新增一张课程表,建表SQL

CREATE TABLE `courses` (`course_id` INT NOT NULL,`course_name` VARCHAR(100) NOT NULL,`instructor` VARCHAR(50) NOT NULL,`schedule` VARCHAR(50) NOT NULL,PRIMARY KEY (`course_id`)
);

插入数据的SQL如下

INSERT INTO `courses` (`course_id`, `course_name`, `instructor`, `schedule`) VALUES
(1, 'Introduction to Computer Science', 'Prof. Smith', 'Mon/Wed 10:00 AM - 11:30 AM'),
(2, 'Database Management', 'Prof. Smith', 'Tue/Thu 2:00 PM - 3:30 PM'),
(3, 'Web Development', 'Prof. Davis', 'Mon/Wed/Fri 1:00 PM - 2:30 PM'),
(4, 'Mathematics for Computer Science', 'Prof. Davis', 'Tue/Thu 10:00 AM - 11:30 AM'),
(5, 'Artificial Intelligence', 'Prof. White', 'Wed/Fri 3:00 PM - 4:30 PM');

 

执行完毕之后我们将拥有2张表

where关键字

where的作用,是指定查询条件,缩写返回数据的范围。

select * from courses c ;

将得到

这里我们格式化下SQL,并加上筛选

我们将得到两条符合条件的数据

 

group by 语句

group by 语句即分组语句,by后边跟上一列或多列,表示将数据分组。常和聚合函数配合使用。

举个例子,这里我们要获取每个导师授课的课程数量,那就需要以导师名称instructor作为分组条件,使用count(*)聚合函数进行计数。

selectinstructor ,count(*)
fromcourses c 
-- where c.instructor ='Prof. Smith'
group by instructor  ;

得到

having语句

如果说where语句是第一层过滤,那么having就是第二层过滤。它是对group后的结果进行过滤。

举个例子,这里我们要在前一次查询的基础上筛选课程数量为2的导师,就可以用having

selectinstructor ,count(*)
fromcourses c 
-- where c.instructor ='Prof. Smith'
group by instructor  
having count(*)=2
;

结果

order by语句

见文知意,这个语句是用来对结果集进行排序的。

直接查询课程表,可以看到是以id排序的

如果我们想让它根据名称排序

select*
fromcourses c 
order by course_name 
;

可以看到,结果就根据名称进行A-Z的排序了

desc 即逆序

select*
fromcourses c 
order by course_name desc
;

结果

 

小结

本节我们讲述了查询的基本结构和使用,下一节我们将对前面学习的所有内容进行一下小结。

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

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

相关文章

【算法】算法题-20231222

这里写目录标题 一、1002. 查找共用字符二、1047. 删除字符串中的所有相邻重复项三、面试题 01.04. 回文排列 一、1002. 查找共用字符 给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符)&…

Linux cat命令教程:如何连接文件并打印到标准输出设备上(附实例详解和注意事项)

Linux cat命令介绍 cat命令,全称为concatenate,用于连接文件并打印到标准输出设备上。 Linux cat命令适用的Linux版本 cat命令在所有Linux发行版中都是可用的,包括但不限于Ubuntu, Debian, Fedora, RHEL, CentOS等。 Linux cat命令的基本…

SpringIOC之MethodBasedEvaluationContext

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

bootstrap基础

(一)bootstrap初识 bootstrap由美国数学家Efron于20世界70年代创建。 bootstrap方法用于样本数较少时的数学统计和参数估计。其数学原理基于格里汶科定理。 格里汶科( G l i v e n k o )定理: \color{red}格里汶科&a…

React和umi搭建项目的操作步骤

​​​​​​一、react脚手架新建项目 (1.1)、命令行 前提:react ES2015,nodejs v8 npx create-react-app myReactName //2022年v16以下版本 myReactName(自定义项目名) react中文官网,快速上手:react中文官网 react框架,…

基于Linphone android sdk开发Android软话机

1.Linphone简介 1.1 简介 LinPhone是一个遵循GPL协议的开源网络电话或者IP语音电话(VOIP)系统,其主要如下。使用linphone,开发者可以在互联网上随意的通信,包括语音、视频、即时文本消息。linphone使用SIP协议&#…

CGAL的3D Alpha Shapes

假设我们给定一个二维或三维的点集S,我们希望得到类似“这些点形成的形状”的东西。这是一个相当模糊的概念,可能有许多可能的解释,阿尔法形状就是其中之一。阿尔法形状可用于从密集的无组织数据点集进行形状重建。事实上,阿尔法形…

Go和Java实现命令模式

Go和Java实现命令模式 下面通过一个烧烤的例子来说明命令模式的使用。 1、命令模式 命令模式是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调 用对象寻找可以处理该命令的合适的对象,并把该…

在 MyBatis 中<应该怎么写

在 MyBatis 中&#xff0c;< 符号在 XML 配置文件中是一个特殊字符&#xff0c;用于标记 XML 标签的开始。因此&#xff0c;如果你在 MyBatis 的 if 标签中直接使用 < 符号&#xff0c;它会被解析为 XML 标签的开始&#xff0c;从而导致解析错误。 为了避免这个问题&…

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成

一、插件 Settings... 1.1 File -- Settings 1.2 Settings -- Plugins 1.2.1 搜索框&#xff0c;也可以直接搜索 1.3 Plugins -- 【输入 & 搜索】mybatis 1.3.1 插件不同功能介绍 1.3.2 翻译如下 1.4 选中 Update&#xff0c;更新下 1.4.1 更新中 1.4.2 Restart IDE 1…

C++ 类的析构函数和构造函数

构造函数 类的构造函数是类的一种特殊的成员函数&#xff0c;它会在每次创建类的新对象时执行。主要用来在创建对象时初始化对象即为对象成员变量赋初始值。 构造函数的名称与类的名称是完全相同的&#xff0c;并且不会返回任何类型&#xff0c;也不会返回 void。构造函数可用…

ARM GIC(一) cortex-A 处理器中断简介

对于ARM的处理器&#xff0c;中断给处理器提供了触觉&#xff0c;使处理器能够感知到外界的变化&#xff0c;从而实时的处理。本系列博文&#xff0c;是以ARM cortex-A系列处理器&#xff0c;来介绍ARM的soc中&#xff0c;中断的处理。 ARM cortex-A系列处理器&#xff0c;提供…

[node] Node.js的路由

[node] Node.js的路由 路由 & 路由解析路由信息的整合URL信息路由处理逻辑路由逻辑与URL信息的整合路由的使用 路由 & 路由解析 路由需要提供请求的 URL 和其他需要的 GET/POST 参数&#xff0c;随后路由需要根据这些数据来执行相应的代码。 因此&#xff0c;根据 HT…

Android 13 - Media框架(25)- OMXNodeInstance(二)

上一节我们了解了 OMXNodeInstance 的创建过程&#xff0c;以及 IOmx 服务和 OMXNodeInstance、OMX组件之间的联系。这一节我们将一起了解 ACodec 是如何通过 OMXNodeInstance 这个中间层进行端口定义设置&#xff0c;以及端口Buffer分配的。 OMXNodeInstance 的代码还是比较长…

Python之Django项目的功能配置

1.创建Django项目 进入项目管理目录&#xff0c;比如&#xff1a;D盘 执行命令&#xff1a;diango-admin startproject demo1 创建项目 如果提示diango命令不存在&#xff0c;搜索diango-admin程序的位置&#xff0c;然后加入到环境变量path中。 进入项目&#xff0c;cd demo…

CentOS 7 Tomcat服务的安装

前提 安装ava https://blog.csdn.net/qq_36940806/article/details/134945175?spm1001.2014.3001.5501 1. 下载 wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.84/bin/apache-tomcat-9.0.84.tar.gzps: 可选择自己需要的版本下载安装https://mirr…

【单调栈】LeetCode2334:元素值大于变化阈值的子数组

作者推荐 map|动态规划|单调栈|LeetCode975:奇偶跳 涉及知识点 单调栈 题目 给你一个整数数组 nums 和一个整数 threshold 。 找到长度为 k 的 nums 子数组&#xff0c;满足数组中 每个 元素都 大于 threshold / k 。 请你返回满足要求的 任意 子数组的 大小 。如果没有这…

记录Ubuntu20.04安装mujoco与安装mujoco_py并测试时提示Cython.Compiler.Errors.CompileError的解决方案

安装mujoco可以参考如下来链接&#xff1a; Ubuntu20.04安装mujoco&#xff1a; https://blog.csdn.net/qq_47997583/article/details/125400418 安装mujoco_py并测试时提示Cython.Compiler.Errors.CompileError&#xff1a; https://blog.csdn.net/m0_38122847/article/de…

Git 合并两个项目

前言 在 Git 中合并两个项目的代码需要一些步骤&#xff0c;尤其是如果这两个项目有不同的版本历史或者是独立的 Git 仓库。以下是一般的步骤&#xff1a; 克隆第一个项目&#xff1a; 在你的本地机器上克隆第一个项目的 Git 仓库。 git clone <URL_of_first_project>…

STM32CubeMX驱动ST7789

环境 1、单片机:STM32F103C8T6 2、开发平台&#xff1a;STM32CUBEMXkeil mdk 3、屏幕&#xff1a;ST7789&#xff0c;分辨率240*240 STM32配置 1、使用硬件SPI1驱动屏幕。配置如下&#xff1a; 2、屏幕控制引脚配置&#xff1a; 注意&#xff1a;只配置了DC,RST,CS这3个控…