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

本文介绍了SQL中的数据查询基础,包括SELECT语句的通用语法,如何选择列进行查询,以及使用WHERE子句、BETWEEN...AND...、IN和LIKE等条件进行数据筛选。通过实例演示了如何查询特定列、筛选特定条件的数据,如按性别、入职日期范围和职位等进行查询。
摘要由CSDN通过智能技术生成

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

通用语法

在 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 ‘张_'来完成查询:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值