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


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

    通用语法

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

    SELECT  select_list  FROM   table_expression  [sort specification] ; 
    • 其中SELECT关键字后面的 select_list参数是指”选择列表”,表示需要输出的列的集合;最简单的选择列表是 * ,它可以输出后面查询的“表表达式”生成的所有列,常见的还有用逗号分隔的列表,这些值可以是 列名、别名或者值表达式;

    • From关键字后面的table_expression参数是指 “表表达式”,表示需要检索的范围,可以是一个表名字,或者是一个通过子查询、表连接等操作生成的表;

    • 在最后可以加上排序声明的部分,以便于对筛选结果进行排序和限制。 

       

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

    另一个是部门信息表。

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

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

    SELECT  *   FROM   table_name; 

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

    选择列查询

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

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

     

    WHERE子句

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

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

     

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

     

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

    BETWEEN ... AND ...

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

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

     

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

    IN

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

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

     

     

     

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

    LIKE

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

     

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

     

     

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

     

  • 相关阅读:
    不会还有人只会用forEach遍历数组吧?
    Python学习之CSDN21天学习挑战赛计划之8
    Leetcode646. 最长数对链
    MMDetection(二):目标检测的示例运行
    最新的kernel中的gpio的使用方法
    [嵌入式系统-28]:开源的虚拟机监视器和仿真器:QEMU(Quick EMUlator)与VirtualBox、VMware Workstation的比较
    使用Java和NLP技术实现AI伪原创文章自动生成:一个详细的编程指南
    各位 vnc viewer软件睡眠如何关闭
    vue如何二次封装一个高频可复用的组件
    怎么使用Consul当配置中心和动态刷新配置
  • 原文地址:https://blog.csdn.net/oushukeji/article/details/126181743