前提介绍:
SQL(色扣)是IBM公司推出的一种数据库语言,数据库的学习主要是学习SQL语句。
SQLite的特点是轻量级,因此在本地数据存储中非常常用。
关系型数据库分为三类:
1,DML(数据操作语言):主要是增,删,改,查。
2,DDL(数据定义语言):对数据表定义和设计。
3,DCL(数据控制言):企业有专人负责(初学者不涉及)。
简单查询:
select 列【1】,列【2】...from 表名
例子:select empno,job from emp;
分页查询:
在商业领域中,查询结果通常数据较大,根据实际需求和计算机性能而言,不需要同时把所有的查询结果展示,此时就可以使用分页查询,把所有结果分摊到多个页码中。
SQLite数据库主要通过LIMIT和OFFSET关键字来实现分页查询,这两个关键字仅影响查询结果的展示方式,并不影响查询本身。
其中LIMIT表示结果包含的记录数量(行数),OFFSET控制结果的起点。
例子:
1. 查询所有雇员信息,只显示前五个雇员的信息。
SELECT * FROM emp
LIMIT 5;
2. 查询公司基本工资前三名的雇员信息。
SELECT * FROM emp
ORDER BY sal DESC
LIMIT 3;
3. 查询公司编号位于3-5名的雇员编号和姓名。(limit和offset结合使用)
SELECT empno,ename
FROM emp
ORDER BY empno ASC
LIMIT 3 OFFSET 2;
小总节:
分页查询实际上就是套公式。
设每页显示的数量为n,当前页码为m
SELECT 列 FROM 表名 LIMIT n OFFSET (m-1)*n;
【例子】在百度数据库中查询4399小游戏,每页显示10条记录,当前为第7页。
SELECT * FROM youxi4399 LIMIT 10 OFFSET 60;
限定查询
限定查询就是在简单查询的基础上限制记录(行)。
WHERE子句筛选数据的方式可以分为六类:
- 关系运算
- 取值范围运算
- 基数范围运算
- 模糊查询
- 空判断
- 逻辑运算
关系运算
关系运算是最简单的运算符号:
> < >= <= <> != ==
【例子】查询工资高于3000的雇员信息(没说查什么信息,就是全查,全查可以用*)
- 查询基本工资小于1600的全部雇员信息
- 查询姓名是SMITH的雇员信息
注意:数据库中==可以替换成=,数据库中没有赋值这个概念; 单引号括起来表示字符串也就是文本。
3. 查询所有职位不是销售人员的信息
取值范围运算
取值范围运算使用BETWEEN...AND...
可以筛选两个数字之间的范围区间,这个区间是一个闭区间,包含两端。
【例子】查询所有在1981年雇佣的雇员信息。
1981年1月1日~1981年12月31日
【练习】查询工资范围在1200-3000之间的雇员信息。
基数范围运算
主要通过IN实现,IN后面的数据不能是NULL。
【例子】查询出雇员编号为7369/7566/7839/8899的信息。
【例子】查询出雇员编号不是7369/7566/7839/8899的信息。(加个NOT)
模糊查询
模糊查询使用LIKE关键字配合两个符号来进行标记:
- _
匹配任意一个字符
- %
匹配任意多个字符(0,1,2...n个)字符
【例子】查询出所有姓名以A开头的雇员信息。
【练习】
- 查询所有姓名第二个字母是A的所有雇员信息
- 查询姓名中包含A的所有雇员的信息
例子:
描述 |
语句 |
查找以 200 开头的任意值 |
WHERE XX LIKE '200%' |
查找任意位置包含 200 的任意值 |
WHERE XX LIKE '%200%' |
查找第二位和第三位为 00 的任意值 |
WHERE XX LIKE '_00%' |
查找以 2 开头,且长度至少为 3 个字符的任意值 |
WHERE XX LIKE '2__%' |
查找以 2 结尾的任意值 |
WHERE XX LIKE '%2' |
查找第二位为 2,且以 3 结尾的任意值 |
WHERE XX LIKE '_2%3' |
查找长度为 5 位数,且以 2 开头以 3 结尾的任意值 |
WHERE XX LIKE '2___3' |
空判断
在SQLiteSpy中,emp表的comm列,存在一些红色切无数据的情况。
这表示数据内容为空,也即是NULL。
【例子】查询公司不领取佣金的雇员信息。
没结果,说明NULL判断不能使用关系运算符,需要使用下面的方式判断空值:
- IS NULL
判断是否为空
- IS NOT NULL、NOT IS NULL
判断是否不为空
更改上面例题答案:
注意: IS NOT NULL和NOT IS NULL写法上稍有不同
SELECT * FROM emp WHERE NOT comm IS NULL;
SELECT * FROM emp WHERE comm IS NOT NULL;
逻辑运算
逻辑运算与C语言相同,包括:
与操作: AND
或操作: OR
非操作(取反): NOT
【例子】查询出公司基本工资高于1300的销售信息。
- 工资高于1300
- 销售
作业:
- 吸收今天所学内容,记住需要记住的,课上练习至少敲2遍截图。
- 完成以下练习:
【练习】
- 查询出工资范围不在1200~1300(闭区间)之间的员工信息。
- 查询出10部门的经理信息。
- 查询出工资高于3000,或者职位是柜员的全部雇员信息。
4. 查询出所有职位不是柜员的信息
- 查询排序
可以把查询结果按照从小到大或者从大到小进行排序。
两种排序方式:
ASC: 升序,从小到大
DESC:降序,从大到小
【例子】查询所有雇员信息,要求基本工资从高到低排序。
【练习】查询部门20和部门30的雇员信息,要求按照雇员编号降序排序。
【例子】按照基本工资从高到低排序,如果工资相同,按照雇佣日期从早到晚排序。