SQLite 数据库介绍和基本用法
Ø 简介
SQLite 是一款轻量级的关系型数据库,同时也是一种嵌入式数据库,与 Oracle、MySQL、SQL Server 等数据库不同,它可以内嵌在程序中,是程序中的一个组成部分。所以,经常被应用在 Android、IOS、Html5 等移动设备上,而且它运行速度非常快,占用资源也较少,通常只需要几百 KB 的内存就够了。SQLite 不仅支持标准的 SQL 语法,还遵循了数据库的 ACID 事务,在功能上基本能满足数据库的常见操作。因为它是轻量级的本地存储数据库,完成本地数据的持久化,所以要求就不能向 Oracle、DB2 等关系型数据库那么高了。下面,分为以下几点来了解 SQLite 数据库:
1. SQLite 的优点
2. SQLite 的数据类型
3. SQLite 常用的 DDL 语法
4. SQLite 常用的 CRUD 语法
5. SQLite 的系统表
1. SQLite 的优点
1) 轻量级、内嵌式数据库,运行速度快,性能高。
2) 通常与程序一起编译,不需要独立维护,简约而不简单。最好不要把它看作一个数据库,而是一个文件系统。因为,它其实就是一个以 *.db 为后缀的一个文件。
3) 支持常见的 SQL 语法,和常见的数据库功能,比如:子查询、事物、索引、视图、触发器等,可以说是麻雀虽小五脏俱全。
4) 可移植性强,支持在 Unix、Linux、MAC、Windows 等系统上运行。
2. SQLite 的数据类型
SQLite 的数据类型也比较简单,大致分为以下四种:
1) Integer, 有符号的整数类型。
2) Real, 浮点型。
3) Text, 字符串类型,编码取决于 BD 的编码。
4) Blob, 二进制类型,用于存储二进制数据(比如:图片、视频等)。
5) Boolean, SQLite 并没有 bool 类型,通常使用 0 或 1 代替,0 表示 false, 1 表示 true。
6) DateTime,SQLite 也没有日期类型,通常使用 Text 类型代替。
3. SQLite 常用的 DDL 语法
1) 创建表
1. 直接创建表(已存在会报错)
CREATE TABLE Employee(
id integer PRIMARY KEY AUTOINCREMENT, --员工Id:主键,自增
name text not null, --姓名
age integer null, --年龄
salary real null, --薪资
pic blob null --照片
);
2. 不存在则创建,否则不创建
CREATE TABLE IF NOT EXISTS Employee(...);
3. 根据现有表,创建另一张表(并写入数据)
CREATE TABLE Employee2 AS SELECT id, name FROM Employee;
结果:CREATE TABLE Employee2(id INT,name TEXT);
2) 修改表
1. 修改表名
ALTER TABLE Employee RENAME TO Employees;
2. 添加字段
ALTER TABLE Employees ADD COLUMN birthday text;
3. 修改字段
不支持直接修改,但可以通过其他方式达到修改的目的。
4. 删除字段
也不支持直接删除,但可以通过其他方式达到删除的目的。
3) 删除表
1. 直接删除(不存在会报错)
DROP TABLE Employee2;
2. 存在删除,否则不删除
DROP TABLE IF EXISTS Employee2;
4. SQLite 常用的 CRUD 语法
1) 插入数据(必须指定列名)
INSERT INTO Employees(name, age, salary, pic)
VALUES('爱变成', 21, 8888.88, null),('程旭媛', 20, 6666.66, null)
,('张无忌', 26, 7890.00, null),('孙悟空', 50, 10000.00, null)
,('白骨精', 100, 10000.00, null);
2) 查询数据
1. 简单查询
SELECT * FROM Employees WHERE id = 1;

2. 模糊查询
SELECT * FROM Employees WHERE id < 4 AND name LIKE '张%';

3. 排序 + 分页
SELECT * FROM Employees WHERE id > 0 ORDER BY id ASC LIMIT 1, 2;

4. 分组 + 过滤(查询相同的工资)
SELECT salary FROM Employees WHERE id > 0 GROUP BY salary HAVING COUNT(*) > 1;

5. 常用的聚合函数
SELECT MAX(salary) 最高工资, MIN(salary) 最低工资, AVG(salary) 平均工资, SUM(salary) 总工资, COUNT(1) 总人数 FROM Employees;

6. 子查询 + IN 子句 + BETWEEN 子句
SELECT COUNT(1) AS '20~30岁的总人数' FROM Employees WHERE id IN(SELECT id FROM Employees WHERE age BETWEEN 20 AND 30);

7. 别名 + 左连接 + union 子句
SELECT T1.*, T2.user_name FROM Employees AS T1
LEFT JOIN (SELECT 1 id, 'aibiancheng' user_name union SELECT 2 id, 'chengxuyuan' user_name) AS T2 ON(T2.id=T1.id)
WHERE T1.id <= 3; --多表存在相同字段名时,必须指定别名

3) 修改数据
UPDATE Employees SET salary=salary+1
WHERE name='爱变成'; --爱变成的 SQLite 学会了工资必须加1块啊,哈哈哈~

4) 删除数据
DELETE FROM Employees WHERE name IN('孙悟空', '白骨精'); -- 删除西游记里的人物

5. SQLite 的系统表
1) sqlite_master, 查看表、视图、索引等结构
SELECT * FROM sqlite_master WHERE type='table' AND name LIKE '%Employee%';

2) sqlite_sequence, 查看自增长字段的下一个值(可使用 UPDATE 语句修改)
SELECT * FROM sqlite_sequence WHERE name='Employees';

Ø 总结
1. 本文简要的介绍了 SQLite 的基本概念,和基本的使用语法,更多的使用可参考:http://www.runoob.com/sqlite/sqlite-tutorial.html
2. 另外推荐一个 SQLite 的客户端工具 SQLite Expert,可在官网中下载,地址:http://www.sqliteexpert.com/download.html
SQLite 数据库介绍和基本用法的更多相关文章
- Android数据库(1)、SQLite数据库介绍
一.关系性数据库 关系型数据库主要有以下三个特征,尤为明显,如果没有这个三个特征约束,当多个客户端使用数据的时候就会出现各种各样的错误,所以关系型数据库定义这些约束,让客户端程序只要遵守这个规则便 ...
- Android 之Navicat for SQLite 数据库介绍
Navicat for SQLite 是一套专为SQLite 设计的强大数据库管理及开发工具 Navicat for SQLite 是一套专为SQLite 设计的强大数据库管理及开发工具.它可以 ...
- System.Data.SQLite数据库简介
SQLite介绍 在介绍System.Data.SQLite之前需要介绍一下SQLite,SQLite是一个类似于Access的单机版数据库管理系统,它将所有数据库的定义(包括定义.表.索引和数据本身 ...
- Windows Phone8 中如何引用 SQLite 数据库
SQLite数据库介绍 1.SQLite是一款轻型的嵌入式数据库,使用C++开发,使用非常广泛 2.SQLite是一款跨平台的数据库,支持Windows.Linux.Android.IOS.Windo ...
- Android数据存储之SQLite 数据库学习
Android提供了五种存取数据的方式 (1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中 (2) SQLite数据库,存放各种数据, ...
- SQLite数据库和JPA简单介绍
SQLite数据库和JPA简单介绍 一.SQLite简单使用 SQLite是遵循ACID的关系数据库管理系统,它的处理速度很快,它的设计目标是嵌入式的,只需要几百K的内存就可以了. 1.下载SQLit ...
- 【Win 10 应用开发】Sqlite 数据库的简单用法
如果老周没记错的话,园子里曾经有朋友写过如何在 UWP 项目中使用 Sqlite数据库的文章.目前我们都是使用第三方封装的库,将来,SDK会加入对 Sqlite 的支持. 尽管目前 UWP-RT 库中 ...
- iOS开发数据库篇—SQLite简单介绍
iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...
- Android SQLite 数据库详细介绍
Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...
随机推荐
- HR_Array Manipulation
第一版有7个时间超限,优化成了第二版: 1: #!/bin/python3 import math import os import random import re import sys # Com ...
- Neko's loop HDU-6444(网络赛1007)
题意就是给出n个数,在n个数上每次跳k个数,最多可以跳m次,你可以选择跳任意次,也可以都不跳,问你为了达到目标了快乐值至少在开始的需要多少快乐值. 题目可以转换成找出循环节,然后再循环节上疯狂试探我可 ...
- 洛谷 P3121 【[USACO15FEB]审查(黄金)Censoring (Gold)】
被自己学校OJ的毒瘤测评姬卡到自闭 Hash+栈+优化暴力 其实思路也很简单,就是把单词存进一个结构体,记录其哈希值和长度,然后就可以开始匹配了 但是,理论复杂度很高,为\(O(n*length)\) ...
- CF527E Data Center Drama(构造+欧拉回路)
题目链接 大意: 给你一个无向图. 要求加最少的边,然后给这些无向图的边定向,使得每一个点的出入度都是偶数. 输出定向后的边数和边集. n<=10^5 m<=2*10^5 很巧妙的构造题- ...
- 项目部署之nginx实现PC端和移动端自动跳转
假设PC端域名为 www.abc.com 移动端域名为m.abc.com PC端nginx配置文件server中加入如下代码: if ($http_host !~ "^www.abc ...
- uWSGI+Nginx安装、配置
1.关闭SELINUX: [root@PYTHON27 /]# vim /etc/selinux/config 将SELINUX=enforcing修改为SELINUX=disabled 2.关闭防火 ...
- express搭建服务器
学习express搭建node服务器 一.安装express框架 1.了解框架(百度) 2.下载框架 (1)使用npm命令下载 npm install express -g //全局安装,安装的是ex ...
- 【CF1154】题解
A 直接模拟即可. B 对数组中的值进行排序去重.发现若去重之后的数组中有大于 3 个数时无解,因为无法找到一个点到数轴上四个点的距离均相等.若去重之后的数组中只有三个值,则判断中间的值是否到两边的值 ...
- 【洛谷P1082】同余方程
题目大意:求关于 \(x\) 的同余方程 \[ax \equiv 1 \pmod {b}\] 的最小正整数解. 题解:exgcd 板子题. 代码如下 #include <bits/stdc++. ...
- luogu4211 LCA
题目链接 思路 我们换一种求\(dep[lca(i,j)]\)的方法. 将从根到\(i\)的路径上所有点的权值加\(1\),然后求从根节点到j路径上点的权值和.就是\(i\)和\(j\)的\(lca\ ...