数据库单表查询 - 简单筛选查询

2024-06-22 08:38

本文主要是介绍数据库单表查询 - 简单筛选查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

数据库单表查询 - 简单筛选查询

本文关键字:数据库、数据查询语言、DQL

文章目录

  • 数据库单表查询 - 简单筛选查询
    • 一、单表查询
      • 1. 语法结构
      • 2. 全字段查询
      • 3. 部分列查询
      • 4. 别称的使用
    • 二、简单筛选
      • 1. 简单运算符
      • 2. 范围查询
      • 3. 空值判断
      • 4. 模糊查询
      • 5. 去重查询
      • 6. 多值匹配
    • 三、条件运算
      • 1. AND
      • 2. OR
      • 3. NOT

之前我们已经了解了SQL语言的分类,可以划分为:DDL(数据定义语言)、DML(数据操纵语言)、DQL(数据查询语言)、DCL(数据控制语言)、TPL(事务处理语言)、CCL(指针控制语言),本文将介绍DQL。

一、单表查询

单表查询指的是所需要查询的数据都包含在一个表中,我们只需要对一张表进行操作就可以完成查询,属于比较简单的查询。本文使用的测试数据表结构如下:

1. 语法结构

在进行查询时,需要用到的主要关键字包括:SELECT、FROM、WHERE。

  • SELECT:指定要查询的列,会直接影响结果表的列的个数
  • FROM:指定要查询的表
  • WHERE:[可选],在需要进行数据筛选时使用,用于引导查询条件

在使用表名和列名时,为了防止和关键字冲突,可以使用反引号,语法结构如下:

SELECT `列名`,`列名`,... FROM `表名` WHERE 查询条件;

2. 全字段查询

全字段查询代表直接查询出表中所有的列,我们可以直接用*号代表,会按照定义数据表时指定的字段顺序,顺次罗列出数据表的所有列,我们也可以手动写出每个列的名称来进行顺序的调整。

SELECT * FROM student;

3. 部分列查询

部分列查询指的是只需要显示表中的某几列,此时需要罗列出每个列的名称,用逗号隔开,所声明的列的名称必须与表中已经定义的列名相同。

SELECT S_no,S_name,S_sex FROM Student;

4. 别称的使用

如果在进行数据查询时,我们想要自定义结果表所显示的列名(表头),可以使用AS关键字(多数情况下可省略)。同时,别称还能方便的代替表名或某些表达式(避免重复计算)。

SELECT S_no AS `学号`,S_name AS `姓名`,S_sex AS `性别` FROM Student;

二、简单筛选

如果说SELECT后面的字段个数影响了查询结果的列,那么数据筛选(或称条件查询)就会影响到查询结果的行,有很多不符合条件的数据会被过滤掉。
在进行数据筛选时,会直接用某个列的列名来做为参照,该列下的每个数据都会和给定的条件进行比较,如果满足就会被取出,在进行比较时一定要注意数据类型的匹配

1. 简单运算符

最简单的运算符其实就是和是否相等,是否大于或小于相关的符号:

  • 等于(=)
SELECT S_no AS `学号`,S_name AS `姓名`,S_sex AS `性别` 
FROM Student
WHERE S_sex = '男';

  • 不等于(<>)
SELECT S_no AS `学号`,S_name AS `姓名`,S_sex AS `性别` 
FROM Student
WHERE S_sex <> '男';

  • 大于
SELECT * FROM Choice
WHERE Score > 80;

  • 小于
SELECT * FROM Choice
WHERE Score < 80;

  • 小于等于
SELECT * FROM Course
WHERE Course_score <= 5;

  • 大于等于
SELECT * FROM Course
WHERE Course_score >= 3;

2. 范围查询

如果我们需要查找的数据在某一个区间内,并且两边都是闭区间,这个时候可以使用BETWEEN xxx AND xxx。

SELECT * FROM Course
WHERE Course_score BETWEEN 5 AND 8;

3. 空值判断

在数据库中存在一个特殊的数据类型,用于标记未存入任何数据,用NULL表示。需要注意的是空字符串并不等同于NULL

  • IS NULL:为空判断
SELECT * FROM Choice
WHERE Score IS NULL;

  • IS NOT NULL:非空判断
SELECT * FROM Choice
WHERE Score IS NOT NULL;

4. 模糊查询

在有些时候我们只模糊记得数据的部分信息,或在商城中需要做根据部分名称来查询商品的功能,这个时候据需要使用LIKE关键字。使用LIKE时,需要和通配符一同使用,经常与LIKE搭配的通配符如下:

  • %:任意个数的任意字符,包括0个字符
  • _:任意的单个字符
SELECT * FROM Teacher
WHERE T_name LIKE '王%';

SELECT * FROM Teacher
WHERE T_name LIKE '%一%';

5. 去重查询

在进行数据查询时,如果某一列存在重复的数据,而我们只需要知道都有哪些数据出现过,这个时候就可以使用去重,将重复的数据过滤掉。需要注意的是:去重查询相当于是一种查询模式,与具体的列无关。默认查询时,在SELECT关键字省略了ALL,意为全量数据查询模式,在使用DISTINCT时要紧跟SELECT关键字。

  • 查询单列

如果只查询一列的数据,得到的就是这一列去重后的结果:

SELECT DISTINCT Course_no 
FROM Choice;

  • 查询多列

如果查询的列有多个,将会显示这两个列的唯一组合,也就是说如果单独看某一列数据,很有可能会有重复数据,但这些列的数据的组合一定是唯一的。

SELECT DISTINCT Course_no,S_no
FROM Choice;

6. 多值匹配

如果想要表达某个值可能是一组值中的一个,这样的逻辑,可以使用关键字IN。在IN之后使用一对括号,其中罗列多个值,如果列中的数据在这些值中出现,则代表匹配。

SELECT S_no,Class_no,S_name,S_sex 
FROM Student
WHERE Class_no IN ('js0001','js0002');

三、条件运算

1. AND

在WHERE中可以使用AND连接两个条件,代表同时成立。

2. OR

在WHERE中可以使用OR连接两个条件,代表成立其一即取出数据。

3. NOT

在WHERE中可以使用NOT(条件)来表达反向的逻辑。

扫描下方二维码,加入官方粉丝微信群,可以与我直接交流,还有更多福利哦~

在这里插入图片描述

这篇关于数据库单表查询 - 简单筛选查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083796

相关文章

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的