> 文章列表 > SQLite数据库简单小入门学习(一)

SQLite数据库简单小入门学习(一)

SQLite数据库简单小入门学习(一)

目录

  • 一、认识数据库
    • (一)数据库简介
    • (二)数据库类型
  • 二、SQLite数据库
    • (一)SQLite简介
    • (二)学习所需工具
      • (1)scott.db
      • (2)SQLiteSpy.exe
    • (三)SQL语言
      • SQL语言分类
      • 1.简单查询
      • 2.限定查询
        • (1)关系运算
        • (2)取值范围运算
        • (3)基数范围运算
        • (4)模糊查询
        • (5)空判断
        • (6)逻辑运算

一、认识数据库

(一)数据库简介

简单来说数据库是用于持久化存储数据的软件,数据库本质上是把程序中的数据保存到计算机硬盘中,在需要的时候可以对数据进行增、删、修、查。

(二)数据库类型

数据库产品非常多,常见的有两类:

  • 关系型数据库:行与列的格式,例如Excel表格的形式。常见的是SQLite、MySQL、SQLServer、Oracle、DB2…
  • 非关系型数据库:使用JSON格式。常见的有MongoDB。

二、SQLite数据库

(一)SQLite简介

SQLite是一种轻量级的关系型数据库,本体只有几兆大小。SQLite常见的数据操作都有,但是由于本体较小,相比其它数据库:

  • 语法结构不严格
  • 在很多系统或软件框架中自带
  • 主要进行本体数据库存储和管理,不太擅长高并发的服务器系统

(二)学习所需工具

链接:https://pan.baidu.com/s/15bOv56PzRBMf978cCdw__Q?pwd=1luw
提取码:1luw

(1)scott.db

.db或.db3格式是SQLite数据库的格式,scott.db内部存储的是本次的学习数据。
SQLite数据库简单小入门学习(一)
scott.db中用到的表的关键信息:
SQLite数据库简单小入门学习(一)
SQLite数据库简单小入门学习(一)
SQLite数据库简单小入门学习(一)

(2)SQLiteSpy.exe

SQLite数据库简单小入门学习(一)

这是一个免安装直接打开就能使用的SQLite操作软件,内置了SQLite数据库。

使用SQLiteSpy打开学习数据的操作步骤如下:

  1. 双击打开SQLiteSpy软件
  2. 在软件中点击File,点击Open Database
  3. 在弹出的窗口中选中scott.db就可也以打开学习数据了
    在SQLite中,.db文件是数据库文件,这个文件可以认为等效于.xlsx表格文件。

在Excel中,点击下方的标签,切换一个又一个的表(Sheet),在数据库中使用表(Table)来表示相同含义。

(三)SQL语言

为了统一不同的数据库产品的操作方式,IBM公司在上世纪70年代发明了SQL语言,SQL语言已经成为关系型数据库的通用操作语言。

SQL语言分类

SQL语言可以分为三类:
(1) 数据操作语言 DML
  ①数据查询语言 DQL
    通过各种条件的限制,筛选和整理出需要数据。
  ②更新操作
    包括对数据的增删改,网络编程与Qt等课程中学习。
(2) 数据定义语言 DDL
  定义数据库格式,常见于设计数据库表,一般由软件架构师负责。
(3)数据控制语言 DCL
  用于操作数据库账户的控制权限,一般由数据库管理员负责。

1.简单查询

简单查询的结果包含所有的行(记录),依次展示每条数据,但是可以控制显示哪些列(字段)。
请添加图片描述

[]表示可选填内容 |表示或者
*表示全查 DISTINCT表示去掉重复行

例1:查询emp表中的所有内容,相当于在SQLiteSpy中双击表名。

SELECT * FROM emp;

在SQLiteSpy中填写上述语句,点击键盘F9或依次鼠标点击Execute→Execute SQL

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

SELECT empno,ename,job,sal
FROM emp;

例3:查询每个雇员的编号、姓名和基本年薪(基本工资x12)

SELECT empno,ename,sal*12 FROM emp;

也可以给每个列起别名

SELECT empno,ename,sal*12 年薪 FROM emp;

给列起别名(特别是中文别名)后期用的不算多,也不建议使用中文。

练:查询每个雇员的编号、姓名、职位、年薪,每个月有200元的餐补,有200元的交通补助,夏天每个月有300元的高温补贴,年底奖金3个月
薪资。

SELECT empno,ename,job,sal*15+12*(200+200)+3*300 income 
FROM emp;

例4:查询公司的职位有哪些?

SELECT job FROM emp;

优化👇:

-- 增加DISTINCT关键字可以消除重复项
SELECT DISTINCT job FROM emp;
-- 需要注意的是,重复项指的是每一列的数据都相同。

2.限定查询

在简单查询的基础上限制结果的行数,就是限定查询。
限定查询主要通过WHERE子句完成,支持六种运算:
关系运算、取值范围运算、基数范围运算、模糊查询、空判断、逻辑运算

(1)关系运算

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

符号 意思
> 大于
>= 大于等于
<= 小于等于
!=或<> 不等于
==或= 等于

例1:查询薪金在2000以上的雇员信息。

SELECT * FROM emp WHERE sal>2000;

练1:查询基本工资小于1600的雇员信息。

SELECT *
FROM emp
WHERE sal<1600;

练2:查询姓名是SMITH的雇员信息。

SELECT * FROM emp WHERE ename='SMITH';

练3:查询职位不是销售的雇员信息。

SELECT *
FROM emp
WHERE job!="SALESMAN";

(2)取值范围运算

使用BETWEEN a AND b表示一个[a,b]的闭区间。

例1:查询工资在1000-2000区间的雇员信息。

SELECT *
FROM emp
WHERE sal BETWEEN 1000 AND 2000;

例2:查询在1981年雇佣的雇员信息。
分析:雇佣日期在1981年1月1日到1981年12月31日。
时间和日期一定要按照标准格式的字符串编写。

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

练1:查询员工编号在7500-7800之间的雇员信息。

SELECT *
FROM emp
WHERE empno BETWEEN 7500 AND 7800;

(3)基数范围运算

数据在几个可选的选项中存在,使用IN操作完成。

例1:查询出雇员编号为7369、7566、7839和8899(不存在)的雇员。

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

例2:查询出雇员编号不为7369、7566、7839和8899(不存在)的雇员。

-- NOT是取反
SELECT *
FROM emp
WHERE empno NOT IN (7369,7566,7839,8899);

练1:查询出公司的柜员(CLERK)和销售(SALESMAN)的信息。

SELECT * FROM emp WHERE job IN ('CLERK','SALESMAN');

🚨IN不能与NULL一起使用,一起使用没有任何效果。

(4)模糊查询

模糊查询可以只通过部分内容查询所完成的数据,使用LIKE配合两个标记符:

符号 含义
_ 匹配任意一个字符
% 匹配任意多个(0,1,…,n)字符
_ 匹配任意一个字符
% 匹配任意多个(0,1,…,n)字符

例1:查询所有姓名以字母A开头的雇员信息。

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

练习:
① 查询姓名第二个字母是A的雇员信息。

SELECT * FROM emp WHERE ename LIKE "_A%";

②查询姓名中包含字母A的雇员信息。

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

(5)空判断

NULL是一种特殊的数据状态,表示无内容。

例1:查询不领取佣金的雇员信息。

-- 错误的写法:NULL不能使用关系运算符判断❌
SELECT *
FROM emp
WHERE comm=NULL;

使用IS NULL来判断一个数据是否为空。
使用IS NOT NULL或者NOT IS NULL判断非空。

-- 上面的例子的正确写法✅
SELECT *
FROM emp
WHERE comm IS NULL;

例2:查询领取佣金的雇员信息。

SELECT *
FROM emp
WHERE comm IS NOT NULL;

SELECT *
FROM emp
WHERE NOT comm IS NULL;

(6)逻辑运算

符号 含义
AND 所有条件都满足,结果才满足
OR 所有的条件满足一个,结果就满足
NOT 反转结果

例1:查询出工资高于1300的销售人员信息。
分析:要同时满足两个筛选条件 sal>1300 job=‘SALESMAN’

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

例2:查询出公司的柜员(CLERK)和销售(SALESMAN)的信息。

SELECT *
FROM emp
WHERE job='CLERK' OR job='SALESMAN';

练:
(1)查询出工资范围不在1200-1300区间的雇员信息。

SELECT *
FROM emp
WHERE sal NOT BETWEEN 1200 AND 1300;

(2)查询出10部门的经理信息。

SELECT *
FROM emp
WHERE job='MANAGER' AND deptno=10;

(3)查询出工资高于3000或者职位是柜员的雇员信息。

SELECT * FROM emp WHERE sal>3000 OR job=='CLARK';

(4)查询出所有职位不是柜员的雇员信息。

SELECT * 
FROM emp 
WHERE NOT job='CLERK';