【数据库-单表查询简要】

1. 简单查询(列查询)

简单查询的结果中包含所有的条目(行),依次展示每条数据,唯一能做的是限制表中出现的列。

语法如下:MELECT                                     限制列

                  FROM 表格(emp)                   数据来源

DISTINCT表示去掉重复行的数据

*表示查询所有的列,如果不想查询所有列,则编写具体的列名称。

【例子】查询所有雇员的编号(empno)、姓名(ename)、职位(job)、基本工资(sal)。

SELECT empno,ename,job,sal

FROM emp;

2. 限定查询

限定查询是在简单查询的基础上限制显示的条数(行数),其语法格式如下。

语法如下:MELECT                                       限制列

                  FROM 表格(emp)                     数据来源

                  WHERE                                         限定条件

2.1 关系运算

关系运算是最简单的运算符号,包括:

>、<、>=、<=、!=、<>(不等于)、==

【例子】查询公司工资高于2000的员工信息。

SELECT * FROM emp WHERE sal>2000;

2.2 取值范围运算

取值范围运算使用BETWEEN...AND...

可以表示两个数的范围区间,这个区间是闭区间,包含两端。

【例子】查询所有在1981年雇佣的雇员信息。

分析:1981年1月1日-1981年12月31日

SELECT * FROM emp
WHERE hiredate BETWEEN '1981-01-01' AND '1981-12-31';

2.3 基数范围运算

基数范围运算使用IN关键字,表示符合给定的多个数字之一。

【例子】查询出雇员编号为7369、7566、7839、8899(不在)的雇员信息。

SELECT * FROM emp WHERE empno IN (7369,7566,7839,8899);

2.4 模糊查询

模糊查询可以制定查询的格式,无需进行完整的内容匹配,主要使用LIKE关键字,配合两个符号进行标记。

  • _

英文下划线,表示任意一个字符。

  • %

百分号,表示任意多个(0,1,2,......,n)字符。

【例子】查询所有姓名是A开头的雇员信息。

SELECT * FROM emp WHERE ename LIKE 'A%';

2.5 空判断

NULL是一种特殊的数值,使用IS NULL来进行判断。

在数据库中,反转逻辑结果使用NOT关键字,IS NULL的反转格式有两种:

  • NOT IS NULL
  • IS NOT NULL

【例子】查询不领取佣金(comm)的雇员信息。

SELECT * FROM emp WHERE comm IS NULL;

2.6 逻辑运算

计算机中都有逻辑运算:与或非。

与:所有的条件都满足,结果才满足,在数据库中与使用AND表示。

或:只要满足一个条件,结果就满足,在数据库中或使用OR表示。

非:结果反转,在数据库中非使用NOT表示。

【例子】查询所有工资高于1300的销售信息。

分析:需要同时满足职位是销售 且 工资大于1300

SELECT * FROM emp WHERE job='SALESMAN' AND sal>1300;

3. 查询排序

SQLiteSpy提供了一键排序的功能,只需要点击表名就可以切换顺序或倒序排序的方式。

语法如下:MELECT    列(别名),列(别名)                  限制列

                  FROM 表格(emp)                                           数据来源

                  WHERE                                                              限定条件

                  ORDER BY - 字段 -      ASC升序/DESC降序     数据排序

两种排序的方式:

  • 升序 ASC
  • 降序 DESC

【例子】查询所有雇员的信息,要求按照工资从高到低排序。

分析:只要是排序题,排序永远是最后一步。

SELECT * FROM emp ORDER BY sal DESC;

4. 分页查询

为了更好地显示大量的数据,可以一次性只展示一部分数据,采用多页的形式,这种查询就是分页查询。

SQLite中使用LIMIT子句与OFFSET子句限制查询的返回数量,实现分页查询,语法格式如下。

语法如下:MELECT    列(别名),列(别名)                  限制列

                  FROM 表格(emp)                                           数据来源

                  LIMIT(no of rows)       OFFSET(row num)

其中LIMIT表示结果的数量,OFFSET表示丢弃前几条记录,可以视情况使用。

【例子】

1. 查询前五个雇员的信息。

SELECT * FROM emp LIMIT 5;

2. 查询工资薪水最高的三个雇员信息。

分析:授课过程中不会把分页查询加入到最基础的子句顺序中,但是实际上其执行顺序在ORDER BY之后,所有分页查询题可以先不考虑分页的问题。

此题可以先变为“查询所有人的信息,按照工资降序排布”

SELECT * FROM emp ORDER BY sal DESC;

最后,筛选出前三个数据。

SELECT * FROM emp ORDER BY sal DESC LIMIT 3; 

3. 查询公司前一半雇佣(早期雇佣)的雇员信息。

SELECT * FROM emp ORDER BY hiredate ASC LIMIT 7;

此题能做出的前提是已知14人,如果对总人数未知,则需要先获得总人数。总人数的获取在后续课程中会介绍相关的函数。

4. 查询公司薪金第四名到第八名的雇员信息。

--查询公司所有雇员的信息,按照薪金从高到底排序。
SELECT * FROM emp ORDER BY sal DESC;

--保留五个人
SELECT * FROM emp ORDER BY sal DESC LIMIT 5;

--向后移动三个人
SELECT * FROM emp ORDER BY sal DESC LIMIT 5 OFFSET 3;

真正要使用分页查询可以基于以下的公式:

设每页显示的条数为n,当前页码为m,得分页查询公式为:

SELECT * FROM 表名 LIMIT n OFFSET (m-1)*n;

【例子】每页显示6条数据,查询第二页的内容。

分析:n=6,m=2

SELECT * FROM emp LIMIT 6 OFFSET 6;

—————————— —————
版权声明:本文为CSDN博主「qq_40503722」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40503722/article/details/129756996

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值