SQL基础:查询的基本使用

news2024/11/25 0:39:43

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

查询基本结构

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

SELECT
    column1,
    column2,
    ...
FROM
    table_name
[WHERE
    condition]
[GROUP BY
    column1, column2, ...]
[HAVING
    aggregate_function(column) condition]
[ORDER BY
    column1 [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(*)聚合函数进行计数。

select
	instructor ,count(*)
from
	courses c 
-- where c.instructor ='Prof. Smith'
group by instructor  ;

得到

having语句

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

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

select
	instructor ,count(*)
from
	courses c 
-- where c.instructor ='Prof. Smith'
group by instructor  
having count(*)=2
;

结果

order by语句

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

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

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

select
	*
from
	courses c 
order by course_name 
;

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

desc 即逆序

select
	*
from
	courses c 
order by course_name desc
;

结果

 

小结

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

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

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

相关文章

使用docker-compose搭建docker私服与配置WebUI

简介 本文介绍了使用docker compose 搭建 docker私服 环境 Docker version 24.0.6, build ed223bc Docker Compose version v2.21.0 正文 一、创建registry文件夹 我的路径是/usr/loca/docker/registry 二、创建并编写docker-compose.yml version: "3.9" services…

MyBatis Plus使用遇到的问题

如果想使用Mapper的xxxById()方法,实体类的主键上面必须加上TableId注解,如果不加,会报错 2023-12-21 22:48:33.526 WARN 11212 --- [ main] c.b.m.core.injector.DefaultSqlInjector : class com.example.mybatisplusdemo.dom…

CEC2013(python):五种算法(GA、WOA、GWO、DBO、HHO)求解CEC2013(python代码)

一、五种算法简介 1、遗传算法算法GA 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、蜣螂优化算法DBO 5、哈里斯鹰优化算法HHO 二、5种算法求解CEC2013 (1)CEC2013简介 参考文献: [1] Liang J J , Qu B Y , Suganthan P N , et al. Prob…

C语言---井字棋(三子棋)

Tic-Tac-Toe 1 游戏介绍和随机数1.1 游戏介绍1.2 随机数的生成1.3 棋盘大小和符号 2 设计游戏2.1 初始化棋盘2.2 打印棋盘2.3 玩家下棋2.4 电脑下棋2.5 判断输赢2.6 game()函数2.7 main()函数 3 完整三子棋代码3.1 Tic_Tac_Toe.h3.2 Tic_Tac_Toe.c3.3 Test.c 4 游戏代码的缺陷 …

3-高可用-隔离术

隔离是指将系统或资源分割开,系统隔离是为了在系统发生故障时,能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应,从而保证只有出问题的服务不可用,其他服务还是可用的。 比较多的隔离手段有线程隔离、进程隔…

开源堡垒机JumpServer结合内网穿透实现远程访问

开源堡垒机JumpServer结合内网穿透实现远程访问 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机,是符合 …

57 优化二进制序列

动态规划 #include <iostream> using namespace::std; using std::cout; using std::cin; int yhejz(int n, int nums[]) {int dp0 0;int dp1 0;int result -1;for(int i0; i<n; i){if(nums[i] 1){dp1;dp0;}else {dp1 dp01;dp0 0;}result max(dp1,max(dp0,re…

计算机毕业设计 基于SpringBoot的大学生平时成绩量化管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

在线培训考试系统的优势及应用场景介绍

在线培训考试系统是一种基于互联网的教育工具&#xff0c;它结合了在线培训和考试的功能&#xff0c;具有许多优势和广泛的应用场景。 提高学习效果 在线培训考试系统首先可以提高学习效果。系统提供了多媒体学习资源&#xff0c;例如文字、图片、音频和视频等&#xff0c;以…

Visual Studio 输入英文会在字母之间自动增加空格

问题如图&#xff1a; 原因&#xff1a;我们在输入中文的时候&#xff0c;不小心按下了shift空格键&#xff0c;比如&#xff1a; 此时&#xff0c;我们在输入中文的时候&#xff0c;再次按下shift空格键就可以恢复正常了。

docker部署个人网站项目记录(前后端分离)

背景 项目是前后端分离&#xff0c;前端有三部分&#xff0c;分别是 个人网站&#xff08;blog&#xff09;网站后台管理系统&#xff08;admin&#xff09;数据大屏&#xff08;datascreen&#xff09; 后端是基于nodejs写的后台服务 后台接口服务&#xff08;todo-nodejs…

uniapp图片上传说明

目录 1.文件上传组件 2.单文件上传 3.多文件上传 4.图片的回显 5.注意点 1.文件上传组件 前端上传组件使用uni-file-picker&#xff0c;可以自行进行下载使用。默认上传到绑定的服务空间&#xff0c;配置属性auto-upload为false关闭自动上传&#xff0c;可以限定上传的是…

【JAVA基础】DeferredResult使用详解

简介 Servlet3.0提供了基于servlet的异步处理api&#xff0c;Spring MVC只是将这些api进行了一系列的封装&#xff0c;从而实现了DeferredResult。 DeferredResult字面意思是"延迟结果"&#xff0c;它允许Spring MVC收到请求后&#xff0c;立即释放(归还)容器线程&…

OpenCV4工业缺陷检测的六种方法

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

【递归 回溯】LeetCode-17. 电话号码的字母组合

17. 电话号码的字母组合。 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digit…

轻量级web开发框架Flask本地部署及无公网ip远程访问界面

文章目录 前言1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 前言 本篇文章讲解如何在本地安装Flask&#xff0c;以及如何将其web界面发布到公网上并进行远程访问。 Flask是目前十分流行的web框架&#xff0c;采用P…

JDBC常用API

在开发JDBC程序前&#xff0c;先了解一下JDBC常用的API。JDBC API主要位于java.sql包中&#xff0c;该包定义了一系列访问数据库的接口和类。 &#xff08;1&#xff09;Driver接口 Driver接口是所有JDBC驱动程序必须实现的接口&#xff0c;该接口专门提供给数据库厂商使用。需…

windows11下载GCC编译器

下载 1. 打开MinGW官网 2. 点击下载, 进入后选择下载在Window系统 3. 选择在github上面下载, 进入后下载下面两个即可, 一个是编译器, 一个是源码. 考虑跨平台性, 下载posix版本, 只在Windows下开发应用就下载win32, 不知道就下载前者. win11选择ucrt, 之前版本选择msvcrt. 配…

pr插件|特殊编码.mkv/mov/flv/webm/avi/wmv/vob等多种格式视频素材直接导入pr的插件 Influx v1.2.5

适用于Adobe的一体式原生导入器插件&#xff08;Premiere Pro、After Effects和Media Encoder&#xff09;。支持多种格式和编解码器。 主要特点 直接在Adobe CC Video中进行本机导入 不再需要通过外部转码软件&#xff01;节省时间、磁盘空间和麻烦 在Premiere Pro中导入和编辑…

org.slf4j日志组件实现日志功能

slf4j 全称是Simple Logging Facade for Java。facade是一种设计模式。 slf4j 是一个抽象程度更高的日志组件&#xff0c;本身并不提供实际的日志功能。实际的日志功能是通过log4j等日志组件实现&#xff0c;而使用者只需要关心 slf4j 给出的API。 slf4j 仅仅是一个为Java程序提…