一.SQLite 简介
目标
- 知道 SQLite 基本概念
- 知道关系型数据库的基本概念和术语
简介
- 是一款轻量级数据库
- 设计目标是嵌入式的
- 占用资源少
- 处理速度快
- 当前版本 3.13,MAC 内置已经安装了 SQLite
什么是 SQLite
-
SQLite
是一个 SQL 数据库引擎,具有:- 自给自足
- 不需要任何外部的依赖
- 无服务器
- 不需要一个单独的服务器进程或操作的系统
- 零配置
- 不需要安装或管理
一个完整的 SQLite 数据库就是一个单一的磁盘文件
- 轻量级
- 完全配置时小于 400K,省略可选功能配置时小于 250K
- 事务性支持
- 非常适合用于移动端的本地数据存储
- 自给自足
-
服务端使用的数据库,如:
Orcal
,SQL Server
,MySQL
...则需要独立的服务器,安装,配置,维护……
关系型数据库的特点
- 一个
列/字段(COL)
存储一个值,类似于对象的一个属性 - 一
行(ROW)
存储一条记录,类似于一个对象 - 一个
表(TABLE)
存储一系列数据,类似于对象数组 - 多个
表
之间存在一定关系
,类似于对象之间的关系,例如:一条微博数据中包含用户记录
术语
- 字段(
Col / Field
):一个字段存储一个值,可以存储INTEGER
,REAL
,TEXT
,BLOB
,NULL
五种类型的数据- SQLite 在存储时,本质上并不区分准确的数据类型
- 数据库主要的目的是做数据的检索,通常不会把无法检索的二进制数据保存在数据库中
- 主键:
Primary Key
,唯一
标示一条记录的字段,具有以下特点:- 名字:xxx_id
- 类型:Integer
- 自动增长
- 准确数值由数据库决定,程序员不用关心
- 外键:
Foreign Key
,对应其他关系表的标示,利用外键
可以和另外一个表
建立起"关系"- 方便数据维护
- 节约存储空间
-
二.常用 SQL 语句
目标
- 知道 SQL 语句的三个分类
- 掌握常用 SQL 语句的基本语法结构
- 做到能够基本看懂简单的 SQL 语句
- 在数据库开发中,针对数据库的操作都是通过 SQL 语句执行的
- 作为移动端的程序员,需要掌握简单/常用 SQL 语句的编写和维护能力
SQL 语句分类
DDL - 数据定义语言
命令 描述 CREATE 创建一个新的表,一个表的视图,或者数据库中的其他对象 ALTER 修改数据库中的某个已有的数据库对象,比如一个表 DROP 删除整个表,或者表的视图,或者数据库中的其他对象 - 不需要记忆,可以直接从客户端软件复制/粘贴
DML - 数据操作语言
命令 描述 INSERT 新增 UPDATE 修改 DELETE 删除 - 需要掌握,语法固定,简单
DQL - 数据查询语言
命令 描述 SELECT 查询 - 需要掌握一些简单的查询指令
三.SQL使用 速查
创建表
/* 创建数据表 CREATE TABLE '表名' ( '字段名' 类型(INTEGER, REAL, TEXT, BLOB) NOT NULL 不允许为空 PRIMARY KEY 主键 AUTOINCREMENT 自增长, '字段名2' 类型, ... ) 注意:在开发中,如果是从 Navicat 粘贴的 SQL,需要自己添加一个指令 IF NOT EXISTS 加在表名前,如果数据表已经存在,就什么也不做 */ CREATE TABLE IF NOT EXISTS "T_Person" ( "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "name" TEXT, "age" INTEGER, "heigth" REAL ) /* 简单约束 */ CREATE TABLE IF NOT EXISTS t_student ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER ); CREATE TABLE IF NOT EXISTS t_student ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE, age INTEGER ); /* 添加主键 */ CREATE TABLE IF NOT EXISTS t_student ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER, score REAL ); /* 添加主键 */ CREATE TABLE IF NOT EXISTS t_student ( id INTEGER, name TEXT, age INTEGER, score REAL, PRIMARY KEY(id) );
插入
INSERT INTO t_student (age, score, name) VALUES ('28', 100, 'zhangsan'); INSERT INTO t_student (name, age) VALUES ('lisi', '28'); INSERT INTO t_student (score) VALUES (100);
修改
UPDATE t_student SET name = 'MM' WHERE age = 10; UPDATE t_student SET name = 'WW' WHERE age is 7; UPDATE t_student SET name = 'XXOO' WHERE age < 20; UPDATE t_student SET name = 'NNMM' WHERE age < 50 and score > 10; /*更新记录的name*/ UPDATE t_student SET name = 'zhangsan';
删除
DELETE FROM t_student; DELETE FROM t_student WHERE age < 50;
查询
/* 分页 */ SELECT * FROM t_student ORDER BY id ASC LIMIT 30, 10; /* 排序 */ SELECT * FROM t_student WHERE score > 50 ORDER BY age DESC; SELECT * FROM t_student WHERE score < 50 ORDER BY age ASC , score DESC; /* 计量 */ SELECT COUNT(*) FROM t_student WHERE age > 50; /* 别名 */ SELECT name as myName, age as myAge, score as myScore FROM t_student; SELECT name myName, age myAge, score myScore FROM t_student; SELECT s.name myName, s.age myAge, s.score myScore FROM t_student s WHERE s.age > 50; /* 查询 */ SELECT name, age, score FROM t_student; SELECT * FROM t_student;
删除表
/*删除表*/ DROP TABLE IF EXISTS t_student;