首页 > 数据库 >07 数据库查询(1) | OushuDB 数据库使用入门

07 数据库查询(1) | OushuDB 数据库使用入门

时间:2023-02-07 10:32:53浏览次数:52  
标签:07 name 数据库 查询 可以 WHERE 我们 SELECT OushuDB


大家好,接下来我们一起学习数据查询的基础部分。  首先,什么是数据查询? 从数据库中检索数据的过程或命令叫做查询。

通用语法

在 SQL 里,SELECT命令用于声明查询,通用语法如下:


SELECT select_list FROM   table_expression [sort specification] ;


  • 其中SELECT关键字后面的 select_list参数是指”选择列表”,表示需要输出的列的集合;最简单的选择列表是 * ,它可以输出后面查询的“表表达式”生成的所有列,常见的还有用逗号分隔的列表,这些值可以是 列名、别名或者值表达式;
  • From关键字后面的table_expression参数是指 “表表达式”,表示需要检索的范围,可以是一个表名字,或者是一个通过子查询、表连接等操作生成的表;
  • 在最后可以加上排序声明的部分,以便于对筛选结果进行排序和限制。 

在接下来的课程中,我们会由浅入深的来学习这些内容。 在这节课里,我们以两个简单的表单来演示后续数据查询的相关操作: 如图所示,一个是员工信息表,包含着20条员工信息;

07 数据库查询(1) | OushuDB 数据库使用入门_数据库

另一个是部门信息表。

07 数据库查询(1) | OushuDB 数据库使用入门_数据_02

我们给这的两个表单设置了对应的列名称,并将两个表的数据导入数据库,以便于后续的查询操作。

07 数据库查询(1) | OushuDB 数据库使用入门_sql_03

在之前数据操作课程中,我们也提到可以使用 * 作为字段名,来查询数据表中的所有数据,它的写法是:


SELECT *   FROM   table_name;


那么此时,我们便可以通过 SELECT * FROM employee 和 SELECT * FROM department 这两个语句,来查看两个表单的内容啦。 查询结果如图所示,这个语句没有对列表和查询范围做任何的限制,是最基础的查询方法了。

07 数据库查询(1) | OushuDB 数据库使用入门_表单_04

07 数据库查询(1) | OushuDB 数据库使用入门_表单_05

选择列查询

通过*,我们可以查询到表单的所有字段,我们也可以通过列举字段名,来查看用户关心的字段。 例如,我们需要查询员工的姓名(e_name)和职位(e_position), 即可以通过

SELECT e_name, e_position FROM employee; 这样的语句来查询: 这样,我们可以看到查询结果中只有我们选择的两列数据了。

07 数据库查询(1) | OushuDB 数据库使用入门_sql_06

 

WHERE子句

当我们需要对Select FROM子句查询结果行进行筛选时,可以使用WHERE语句来进行检查。它的语法格式是WHERE search_condition ,如果结果是真,那么该行保留在输出表中,否则就把它抛弃。 例如,我们在刚才那个员工信息查询语句的基础上,增加性别为男的限制,即判断e_gender='男',则可以通过下面语句完成: SELECT e_name,e_gender, e_position FROM employee WHERE e_gender='男'; 如图,我们便查出了公司所有男性员工的姓名和职位。

07 数据库查询(1) | OushuDB 数据库使用入门_sql_07

同理,我们也可以通过>、<等判断符号来判断日期列。 例如,我们需要查询所有2021年12月15日之后入职的员工的部分信息,我们可以在where后面对e_entrydate 字段进行判断。

 

这里我们写作SELECT e_id,e_name,e_gender,e_entrydate FROM employee WHERE e_entrydate > '2021-12-15' ;

07 数据库查询(1) | OushuDB 数据库使用入门_表单_08

 

我们便从所有的数据中,晒出了其中4条符合要求的数据。

BETWEEN ... AND ...

除了直接对值进行比较,我们也可以对数据的范围进行检查,这里我们可以用BETWEEN … AND …来实现。 例如刚才的例子,我们将判断的入职时间定制一个空间,用BETWEEN … AND …来表示。通过在SELECT FROM后面加上 WHERE e entrydate BETWEEN '2021-12-15' AND '2022-1-6’ 这样的查询语句。

07 数据库查询(1) | OushuDB 数据库使用入门_数据_09

 我们便可以查询在这个范围区间入职的员工。

 

除了进行数值区间的判断,当我们需要对多个字符串进行列举检查时,我们也可以用in关键字来查询。

IN

在where后面,我们通过IN关键字,规定几个检查的字符串。 如我们需要查询开发经理、测试经理、市场经理等职位的人员信息,便可以通过在SELECT FROM后面加上 WHERE e_position IN ('开发经理','测试经理','市场经理');来查询。

07 数据库查询(1) | OushuDB 数据库使用入门_数据_10

 如图所示,我们通过这个语句直接获取到了3种角色的所有人员信息。 相反,我们也 可以用 NOT IN 来删除查询结果中该列带有后面列举值的行。

 

 

07 数据库查询(1) | OushuDB 数据库使用入门_表单_11

 

如图所示,查询结果为去掉刚才3条的剩余17条结果。

LIKE

接下来,我们来考虑一下更大的判断范围,比如我们需要查询一类人群,像是某种工程师、某个部门经理,此时我们很难取枚举所有的职位类型,但是他们的共同特点是包含某些相同的字符,这时候我们就可以用模糊查询来完成了。 模糊查询的关键字是LIKE,并且我们可以通过 下划线 或者百分号来完成单字符或者多字符的匹配,比如我们要查询职位为某某经理的员工,我们便可以判断为 WHERE e_position LIKE '%经理' :

07 数据库查询(1) | OushuDB 数据库使用入门_数据库_12

 

这样我们就查到了开发经理、测试经理、销售经理等等所有职位名以经理结尾的员工。 又或者,我们要查找姓“张”的员工,便可以用WHERE e_name LIKE ‘张%’ 来查询:

07 数据库查询(1) | OushuDB 数据库使用入门_sql_13

 

 

如果需要姓“张”,同时又是单名字的员工,则可以用WHERE e_name LIKE ‘张_'来完成查询:

07 数据库查询(1) | OushuDB 数据库使用入门_数据_14

 

标签:07,name,数据库,查询,可以,WHERE,我们,SELECT,OushuDB
From: https://blog.51cto.com/u_15334349/6041404

相关文章

  • 06 数据操纵之数据更新与删除 | OushuDB 数据库使用入门
    更新数据修改已经存储在数据库中的数据的行为叫做更新。你可以更新单独的一行,也可以更新表中所有的行,还可以更新其中的一部分行。我们可以独立地更新每个列,而其它的列则不......
  • 05 数据操纵之插入数据 | OushuDB 数据库使用入门
    大家好,这一节课我们来学习数据操纵,在完成数据库的创建后,我们需要对数据库进行读写操作。最常见的数据操纵方式包括插入数据、更新数据和删除数据。目前OushuDB兼容的表格式......
  • 03 如何修改数据表? | OushuDB 数据库使用入门
    修改表当我们创建了一个表后发现自己犯了一个错误,或者是应用的需求发生了变化,那么我们可以删除这个表然后重新创建它。但是如果这个表已经填充了许多数据,或者该表已经被其它......
  • 02 如何创建数据表? | OushuDB 数据库使用入门
    基本概念在关系型数据库中,表由行和列组成。其中表的列的数目和顺序是固定的,每个列都有一个名字,并且有指定的数据类型,即限制着这个列可以存储的范围。比如,声明为数值类型的列......
  • 01 如何创建数据库? | OushuDB 数据库使用入门
    创建和管理数据库数据库是使用CREATEDATABASE命令创建的,可以通过DROPDATABASE命令删除。如果我们要查看现有数据库的集合,可以检查系统表pg_database,比如通过查询语句:SELEC......
  • 初学mysql数据库-基础知识
    一.mysql基本命令1.基础常用命令mysql-uroot-p密码;(也可以不带密码,之后输入)本地登录mysql-h登录ip-p端口(通常3306)-uroot-p密码;远程登录desc表名;查看表的......
  • 使用瀚高数据库hibernate方言报错
    瀚高数据库目录环境症状问题原因解决方案环境系统平台:Linuxx86-64RedHatEnterpriseLinux7版本:4.5.7症状使用hibernate查询的时候java是integer类型的,where查询时报错......
  • 多线程查询数据库避免重复
    contriller:packagebatch;importcom.alibaba.fastjson.JSONObject;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.......
  • 代码随想录算法Day04| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题
    24.两两交换链表中的节点题目链接: 24.两两交换链表中的节点-力扣(LeetCode)题目给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点......
  • 杭电1407--暴力与优化
    测试你是否和LTC水平一样高ProblemDescription大家提到LTC都佩服的不行,不过,如果竞赛只有这一个题目,我敢保证你和他绝对在一个水平线上!你的任务是:计算方程x^2+y^2+z^2......