首页 > 数据库 >【Mysql自学笔记(黑马程序员)】基础篇(三)SQL常用语法分类——DQL(数据查询语言)(篇一)基本查询、条件查询、聚合函数

【Mysql自学笔记(黑马程序员)】基础篇(三)SQL常用语法分类——DQL(数据查询语言)(篇一)基本查询、条件查询、聚合函数

时间:2024-11-01 14:45:39浏览次数:6  
标签:students 09 查询 运算符 score SQL 查询语言 SELECT

SQL常用语法分类——DQL(数据查询语言)(篇一)——基本查询、条件查询、聚合函数

  • 本专栏将会持续更新,旨在为大家源源不断地呈现更多有帮助的Mysql学习内容。以下是之前更新的两篇文章,如有需要可以供您参考。

【Mysql自学笔记(黑马程序员)】基础篇(一)SQL常用语法分类——DDL(数据定义语言)

【Mysql自学笔记(黑马程序员)】基础篇(二)SQL常用语法分类——DML(数据操作语言)

一、概述

1、什么是DQL?

DQL即数据查询语言(Data Query Language),它是用于从数据库中检索数据的一种语言,是SQL的重要组成部分。其核心用途就是从数据库的一个或多个表(以及视图等数据库对象)中获取满足特定条件的数据记录,简单来说是查询数据库中表的记录,并按照期望的格式呈现出来。

2、本文内容

  • 本文主要介绍DQL相关语句,包括基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询六部分,本文共分为两篇,首先介绍基本查询、条件查询、聚合函数以及他们的应用。

  • 本文思维导图如下,以供大家参考。视频教程参考B站黑马程序员,如有任何问题欢迎批评指正。

在这里插入图片描述

二、DQL语句介绍

0、前言

为便于理解,本文提供一个具体使用场景,来帮助大家更快掌握查询操作,后续操作均基于此表。

-------------------------------------------------------------

student_idnameagegendergrademajorscoreenrollment_date
1Alice20FemaleSophomoreComputer Science852024-09-01
2Bob21MaleJuniorMathematics782023-09-01
3Carol19FemaleFreshmanEnglish922024-09-01
4David22MaleSeniorPhysics882022-09-01
5Eve20FemaleSophomoreBiology802024-09-01
6Frank21MaleJuniorChemistry752023-09-01
7Grace19FemaleFreshmanHistory902024-09-01
8Henry22MaleSeniorEngineering832022-09-01
9Isabella20FemaleSophomorePsychology872024-09-01
10Jack21MaleJuniorEconomics722023-09-01

表格数据说明如下:

(1)student_id:这是一个唯一标识每个学生的编号列,数据类型是整数类型,用于准确区分不同的学生个体,方便在后续的数据查询、更新、删除等操作中精准定位到特定学生的记录。
(2)name:存储学生的姓名,数据类型为字符串类型,用于记录学生的具体名称。
(3)age:表示学生的年龄,数据类型为整数类型。
(4)gender:记录学生的性别,取值为 “Male”(男性)或 “Female”(女性)。
(5)grade:描述学生所在的年级,为字符串类型,取值为 “Freshman”(大一新生)、“Sophomore”(大二学生)、“Junior”(大三学生)、“Senior”(大四学生)。
(6)major:存储学生所学的专业信息,也是字符串类型,可用于按专业进行分组统计、查询特定专业学生情况等分析操作。
(7)score:用于记录学生的成绩,数据类型为整数类型。
(8)enrollment_date:记录学生的入学日期,数据类型为日期类型。

-------------------------------------------------------------

将以下代码输入控制台并执行,以创建表格并输入相关数据,后续语句介绍示例均基于此表

CREATE TABLE students (
    student_id INT,
    name VARCHAR(255),
    age INT,
    gender ENUM('Male', 'Female'),
    grade VARCHAR(255),
    major VARCHAR(255),
    score DECIMAL(5, 2),
    enrollment_date DATE
);

INSERT INTO students (student_id, name, age, gender, grade, major, score, enrollment_date) VALUES
(1, 'Alice', 20, 'Female', 'Sophomore', 'Computer Science', 85.00, '2024-09-01'),
(2, 'Bob', 21, 'Male', 'Junior', 'Mathematics', 78.00, '2023-09-01'),
(3, 'Carol', 19, 'Female', 'Freshman', 'English', 92.00, '2024-09-01'),
(3, 'David', 22, 'Male', 'Senior', 'Physics', 88.00, '2022-09-01'),
(5, 'Eve', 20, 'Female', 'Sophomore', 'Biology', 80.00, '2024-09-01'),
(6, 'Frank', 21, 'Male', 'Junior', 'Chemistry', 75.00, '2023-09-01'),
(7, 'Grace', 19, 'Female', 'Freshman', 'History', 90.00, '2024-09-01'),
(8, 'Henry', 22, 'Male', 'Senior', 'Engineering', 83.00, '2022-09-01'),
(9, 'Isabella', 20, 'Female', 'Sophomore', 'Psychology', 87.00, '2024-09-01'),
(10, 'Jack', 21, 'Male', 'Junior', 'Economics', 72.00, '2023-09-01');

1、基本查询

  1. 查询多个字段
----------查询多个字段----------

SELECT 字段1, 字段2, 字段3 ... FROM 表名;

SELECT * FROM 表名;

查询多个字段有两种书写形式:

  • 第一行代码用于将指定的 “表名” 所对应的数据库表中选取特定的列(也就是这里列举的字段 1、字段 2、字段 3 等等)的数据,这种查询方式可用于获取表中部分列数据的场景。
  • 第二行代码中的 “*” 是一个通配符,表示查询指定 “表名” 所对应的表中的所有列的数据,当需要获取一张表的完整信息,或者暂时不确定具体需要哪些列,只先查看表中的所有数据情况时可以用此获得表中的全部内容。

下面列举一个示例,展示SELECT语句的基本查询用法,点此可以返回数据表查看数据:


----------查询students表格中name、grade、score字段内容----------

SELECT 
	name, grade, students.score 
FROM 		
	students;

----------查询students表格中所有字段内容----------

SELECT 
	*
FROM 		
	students;

代码输出的结果分别如下:

在这里插入图片描述
在这里插入图片描述

特殊说明: 在第一行代码中,我们使用了 ‘SELECT name, grade, students.score FROM students’ 语句来对表格中数据进行查询,其中“students.score”指定了是从 “students” 表中的 “score” 列,虽然在只查询一个表时通常省略表名前缀,但这样写可以更明确;若涉及多表查询,则需要在指定字段前加入前缀,确保查询到需要的数据。

  1. 设置别名
----------查询字段,并设置别名----------

SELECT 字段1 AS 别名1, 字段2 AS 别名2, ... FROM 表名;
  • 通过使用 “AS” 关键字,可以为每个选中的字段指定一个别名,使查询结果更符合需求或更易理解。
  • 当进行多表连接查询等操作时,为了区分可能出现的不同表中有相同名称的列的情况,可以通过赋予别名来加以区分。

下面列举一个示例,展示 AS 关键词的用法,点此可以返回数据表查看数据,代码以及结果展示如下:

----------

SELECT 
	name AS 学生姓名,
	score AS 学生成绩
FROM
	students;

在这里插入图片描述

  1. 去除重复记录
----------查询字段,并去除重复记录----------

SELECT DISTINCT 字段列表 FROM 表名;

“DISTINCT” 关键字用于对查询结果进行去重操作。当执行这条语句时,它会从指定列数据去除那些取值完全相同的重复值。

下面列举一个示例,展示 DISTINCT 关键词的用法,点此可以返回数据表查看数据,代码以及结果展示如下:

SELECT
    DISTINCT grade, enrollment_date
FROM
    students;

在这里插入图片描述

2、条件查询

----------条件查询语句----------

SELECT 字段列表 FROM 表名 WHERE 条件列表;
  • 在本语句中,WHERE关键词是用于对查询的数据进行筛选的关键部分。只有满足 “条件列表” 中所设定的全部条件,才会被包含在最终的查询结果中。
  • 在使用 WHERE 关键词时,可以借助多种运算符来设定筛选条件的限制,常见的逻辑运算符总结如下表:
分类符号名称功能
比较运算符 >大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 != 不等于
BETEWEEN ... AND ... 在某个范围之内(包含最大值与最小值)
IN (...) 在 IN 后列表中的值,多选一
LIKE 占位符 (...) 模糊匹配 ( _ 匹配单个字符,% 匹配任意个字符)
IS (NOT) NULL是 (不是) NULL 值
逻辑运算符 AND 或 && 并且(多个条件同时成立)
OR 或 || 或者(多个条件任意一个成立)
NOT 或 ! 非,不是

※※下面列举六个示例,展示 WHERE 关键词的用法,点此可以返回数据表查看数据,代码以及结果展示如下:

-------------------------------------------------------------

  • 示例1:使用比较运算符(等于)

(1)要求:筛选出专业为 “Computer Science” 的所有学生记录。

(2)代码:

SELECT 
	*
FROM 
	students
WHERE 
	major = 'Computer Science';

(3)运行结果:

在这里插入图片描述
-------------------------------------------------------------

  • 示例2:使用比较运算符(大于)和逻辑运算符(与)

(1)要求:筛选出年龄大于 20 岁并且成绩大于 80 分的学生姓名,年龄,考试分数。

(2)代码:

SELECT 
	name, age, score
FROM 
	students
WHERE 
	age > 20 AND score > 80;

(3)运行结果:

在这里插入图片描述
-------------------------------------------------------------

  • 示例3:使用比较运算符(小于等于)和逻辑运算符(或)

(1)要求:筛选出年龄小于等于 20 岁 或者是 ‘数学专业’ 的学生序号、姓名和专业。

(2)代码:

SELECT 
	student_id, name, major
FROM 
	students
WHERE 
	age <= 20 OR major = 'Mathematics';

(3)运行结果:

在这里插入图片描述

-------------------------------------------------------------

  • 示例4:使用比较运算符(大于等于)和逻辑运算符(与)以及嵌套的逻辑运算符(或)

(1)要求:筛选出年龄大于等于 21 岁并且成绩大于等于 80 分的,或者是 专业是 “Physics” 的学生姓名、专业以及分数。

(2)代码:

SELECT 
	name, major, score
FROM 
	students
WHERE 
	(age >= 21 AND score >= 80) OR major = 'Physics';

(3)运行结果:

在这里插入图片描述

在本条查询语句中,‘()’ 起到了明确运算优先级的作用,代码要先执行()中的内容,之后在执行外面的内容。

-------------------------------------------------------------

  • 示例5:使用 BETWEEN AND 运算符以及IN 运算符

(1)要求:筛选出年龄在 20 岁(包含 20 岁)到 22 岁(包含 22 岁)之间的学生 或者 专业是 ‘Computer Science’, ‘Mathematics’, ‘Physics’ 的学生姓名、年龄、以及专业名称。

(2)代码:

SELECT 
	name, age, major
FROM 
	students
WHERE 
	(age BETWEEN 20 AND 22) OR (major IN ('Computer Science', 'Mathematics', 'Physics'));

(3)运行结果:

在这里插入图片描述

-------------------------------------------------------------

  • 示例6:使用 LIKE 运算符

(1)要求:查询姓名以 ‘A’ 字母开头的, 或 ‘e’ 字母结尾的, 或姓名中包含 ‘er’ 的, 或姓名中第二个字母是 'a” 的学生姓名以及成绩。

(2)代码:

SELECT 
	name, score
FROM 
	students
WHERE 
	name LIKE 'A%' OR
	name LIKE '%e' OR
	name LIKE '%er%' OR
	name LIKE '_a%';

(3)运行结果:

在这里插入图片描述

  • LIKE 运算符,通配符 % 表示任意字符序列(可以是零个、一个或多个字符)。以查姓名以 ‘A’ 字母开头的为例,’name LIKE ‘A%’ 表示要筛选出姓名以字母 “A” 开头的学生记录。所以无论后面跟着多少个字符,只要开头是 “A”,该学生记录就会被筛选出来。
  • ‘ _ ’ 它表示任意单个字符,因为 ‘ _ ’ 只匹配一个字符,所以第一个字符可以是任意的,只要第二个字符是 “a”,并且后面跟着任意字符序列(由 % 表示),该学生记录就会被筛选出来。

-------------------------------------------------------------

3、聚合函数

聚合函数是用于对一组数据进行汇总计算的函数,在 SQL 中经常用于对数据表中的列数据进行统计分析等操作。常见的聚合函数有:COUNT、MAX、MIN、AVG、SUM等等,下面我们将对他们分别介绍。

----------聚合函数查询语句----------

SELECT 聚合函数 字段列表 FROM 表名;
聚合函数名称函数功能
COUNT统计数量
MAX最大值
MIN最小值
AVG平均值
SUM求和

※※下面列举一个示例,将聚合函数与前文的条件查询结合使用展示用法。点此可以返回数据表查看数据,代码以及结果展示如下:

-------------------------------------------------------------

  • 示例:统计特定专业且成绩高于某分数的学生人数、总成绩、平均成绩、最高成绩和最低成绩

(1)要求:筛选成绩大于80分的计算机科学专业的学生,并查询他们的学生人数、总分、平均分、最高分以及最低分。

(2)代码:

SELECT
    COUNT(*) AS student_count,
    SUM(score) AS total_score,
    AVG(score) AS average_score,
    MAX(score) AS max_score,
    MIN(score) AS min_score
FROM
    students
WHERE
    major = 'Computer Science' AND score > 80;

(3)运行结果:

在这里插入图片描述

(1)首先使用了逻辑运算符 AND 结合比较运算符>筛选出专业是 “Computer Science” 的成绩高于 80 分的学生,只有同时满足这两个条件的学生记录才会被纳入后续的聚合计算。
(2)之后使用了五个聚合函数分别得到了学生人数、总成绩、平均成绩、最高成绩以及最低成绩,并使用 AS 关键字分别命名。

标签:students,09,查询,运算符,score,SQL,查询语言,SELECT
From: https://blog.csdn.net/m0_50695189/article/details/143380957

相关文章

  • PostgreSQL技术大讲堂 - 第70讲:PG数据库数据加载调优案例
     PostgreSQL技术大讲堂-第70讲,主题:postgresq数据库数据加载调优案例讲课内容:  1、数据库参数调整  2、后台进程cpu绑定调整  3、数据库并行操作调整  数据加载是每个DBA经常需要完成的工作,如何让数据加载变得更快,本期视频跟大家一起分享调优带来的乐趣......
  • 【Kettle的安装与使用】使用Kettle实现mysql和hive的数据传输(使用Kettle将mysql数据导
    文章目录一、安装1、解压2、修改字符集3、启动二、实战1、将hive数据导入mysql2、将mysql数据导入到hive一、安装Kettle的安装包在文章结尾1、解压在windows中解压到一个非中文路径下2、修改字符集修改spoon.bat文件"-Dfile.encoding=UTF-8"3、启动以......
  • 线段树:区间修改,区间查询
    Description这是一道模板题。给定数列 ,你需要依次进行  个操作,操作有两类:1lrx:给定 ,对于所有 ,将  加上 (换言之,将  分别加上 );2lr:给定 ,求  的值(换言之,求  的值)。Input第一行包含  个正整数 ,表示数列长度和询问个数。保证 。第二行  个整数 ,表示......
  • 了解SQLExpress数据库
            SQLExpress(MicrosoftSQLServerExpress)是由微软公司开发的一款免费且轻量级的数据库管理系统。以下是关于SQLExpress的详细解释:一、定义与特点定义:SQLExpress是MicrosoftSQLServer的一个缩减版或基础版,旨在满足小型企业、开发人员和个人用户的需求。......
  • SQL Server身份验证模式
            SQLServer是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQLServer身份验证。理解这些身份验证方式的概念与更改方式的操作,对于数据库管理员和开发者至关重要。本文将详细介绍身份验证方式的概念以及如何更改SQLServer的身......
  • Oracle与GreatSQL差异:更改唯一索引列
    Oracle与GreatSQL差异:更改唯一索引列1.问题来源在从Oracle迁移到GreatSQL的应用系统中,一条普通的update语句在GreatSQL中却报错,需要进行SQL语句的改写。把实际问题简化为下面简单情况进行说明。在Oracle下,可以正常执行的update语句。--建表CREATETABLEtest.test1(id......
  • SQL优化的35个小技巧
    避免使用SELECT*,使用具体字段反例:SELECT*FROMemployee;正例:SELECTid,name,ageFROMemployee;使用具体字段可以节省资源、减少网络开销,且能避免回表查询。避免在WHERE子句中使用OR反例:SELECT*FROMuserWHEREuserid=1ORage=18;正例:--使用UNION......
  • 你还不会用数据库吗?一篇文章带你入门!!!#sql #Mysql
    目录前言一段话简单理解什么是“数据”,“数据库”,“SQL”,“Mysql”一、准备工作MySQL的安装二、打开MySQL方法一:通过下载的MySQL软件直接打开方法二:命令提示符打开(cmd)方法三:连接指定地址数据库服务端方法四:直接打开(前提已经建立过数据库)三、MySQL的一些简单语句(正式实......
  • mysql数据库新增和修改字段
      8.0版本之上--修改旧字段名为新字段名ALTERTABLEbd_material_circuit_breakerRENAMECOLUMNrelease_typeTOrelease_type_zh;ALTERTABLEbd_material_circuit_breakerRENAMECOLUMNcontrol_typeTOcontrol_type_zh;ALTERTABLEbd_material_circ......
  • rk3576 查询npu频率
    rk3576查询npu频率cat/sys/kernel/debug/rknpu/freq设置NPU工作频率:#以RK3588为例#查看NPU可用频率cat/sys/class/devfreq/fdab0000.npu/available_frequencies#设置NPU频率,例如,设置1GHzecho1000000000>/sys/kernel/debug/rknpu/freq   (1)查询NPU......