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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了07 数据库查询 | OushuDB 数据库使用入门相关的知识,希望对你有一定的参考价值。


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

通用语法

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


SELECT select_list FROM   table_expression [sort specification] ;


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

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

07

另一个是部门信息表。

07

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

07

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


SELECT *   FROM   table_name;


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

07

07

选择列查询

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

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

07

 

WHERE子句

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

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

 

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

BETWEEN ... AND ...

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

07

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

 

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

IN

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

07

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

 

 

07

 

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

LIKE

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

07

 

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

07

 

 

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

07

 

以上是关于07 数据库查询 | OushuDB 数据库使用入门的主要内容,如果未能解决你的问题,请参考以下文章

01 如何创建数据库? | OushuDB 数据库使用入门

oushudb 中 orc 格式的使用

oushudb 中 orc 格式的使用

oushudb 中 orc 格式的使用

oushudb 中 orc 格式的使用

OushuDB 创建和管理表空间