zoukankan      html  css  js  c++  java
  • SQLite 数据库介绍和基本用法

    Ø  简介

    SQLite 是一款轻量级的关系型数据库,同时也是一种嵌入式数据库,与 OracleMySQLSQL Server 等数据库不同,它可以内嵌在程序中,是程序中的一个组成部分。所以,经常被应用在 AndroidIOSHtml5 等移动设备上,而且它运行速度非常快,占用资源也较少,通常只需要几百 KB 的内存就够了。SQLite 不仅支持标准的 SQL 语法,还遵循了数据库的 ACID 事务,在功能上基本能满足数据库的常见操作。因为它是轻量级的本地存储数据库,完成本地数据的持久化,所以要求就不能向 OracleDB2 等关系型数据库那么高了。下面,分为以下几点来了解 SQLite 数据库:

    1.   SQLite 的优点

    2.   SQLite 的数据类型

    3.   SQLite 常用的 DDL 语法

    4.   SQLite 常用的 CRUD 语法

    5.   SQLite 的系统表

     

    1.   SQLite 的优点

    1)   轻量级、内嵌式数据库,运行速度快,性能高。

    2)   通常与程序一起编译,不需要独立维护,简约而不简单。最好不要把它看作一个数据库,而是一个文件系统。因为,它其实就是一个以 *.db 为后缀的一个文件。

    3)   支持常见的 SQL 语法,和常见的数据库功能,比如:子查询、事物、索引、视图、触发器等,可以说是麻雀虽小五脏俱全。

    4)   可移植性强,支持在 UnixLinuxMACWindows 等系统上运行。

     

    2.   SQLite 的数据类型

    SQLite 的数据类型也比较简单,大致分为以下四种:

    1)   Integer, 有符号的整数类型。

    2)   Real, 浮点型。

    3)   Text, 字符串类型,编码取决于 BD 的编码。

    4)   Blob, 二进制类型,用于存储二进制数据(比如:图片、视频等)。

    5)   Boolean, SQLite 并没有 bool 类型,通常使用 0 1 代替,0 表示 false 1 表示 true

    6)   DateTimeSQLite 也没有日期类型,通常使用 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;

    clip_image001[6]

     

    2.   模糊查询

    SELECT * FROM Employees WHERE id < 4 AND name LIKE '%';

    clip_image002[6]

     

    3.   排序 + 分页

    SELECT * FROM Employees WHERE id > 0 ORDER BY id ASC LIMIT 1, 2;

    clip_image003[6]

     

    4.   分组 + 过滤(查询相同的工资)

    SELECT salary FROM Employees WHERE id > 0 GROUP BY salary HAVING COUNT(*) > 1;

    clip_image004[6]

     

    5.   常用的聚合函数

    SELECT MAX(salary) 最高工资, MIN(salary) 最低工资, AVG(salary) 平均工资, SUM(salary) 总工资, COUNT(1) 总人数 FROM Employees;

    clip_image005[6]

     

    6.   子查询 + IN 子句 + BETWEEN 子句

    SELECT COUNT(1) AS '20~30岁的总人数' FROM Employees WHERE id IN(SELECT id FROM Employees WHERE age BETWEEN 20 AND 30);

    clip_image006[6]

     

    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; --多表存在相同字段名时,必须指定别名

    clip_image007[6]

     

    3)   修改数据

    UPDATE Employees SET salary=salary+1

    WHERE name='爱变成'; --爱变成的 SQLite 学会了工资必须加1块啊,哈哈哈~

    clip_image008[6]

     

    4)   删除数据

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

    clip_image009[6]

     

    5.   SQLite 的系统表

    1)   sqlite_master, 查看表、视图、索引等结构

    SELECT * FROM sqlite_master WHERE type='table' AND name LIKE '%Employee%';

    clip_image011[6]

     

    2)   sqlite_sequence, 查看自增长字段的下一个值(可使用 UPDATE 语句修改)

    SELECT * FROM sqlite_sequence WHERE name='Employees';

    clip_image012[6]

     

    Ø  总结

    1.   本文简要的介绍了 SQLite 的基本概念,和基本的使用语法,更多的使用可参考:http://www.runoob.com/sqlite/sqlite-tutorial.html

    2.   另外推荐一个 SQLite 的客户端工具 SQLite Expert,可在官网中下载,地址:http://www.sqliteexpert.com/download.html

  • 相关阅读:
    PHP把下划线分隔命名的字符串与驼峰式命名互转
    Cocos2d-JS/Ajax用Protobuf与NodeJS/Java通信
    gulp 实现 js、css,img 合并和压缩
    转:入门Webpack,看这篇就够了
    微信开发教程:用户账号绑定到微信公众号的方法分享
    C#RSA算法实现+如何将公钥为XML格式转为PEM格式,给object-C使用
    php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密
    Windows下将nginx安装为服务运行
    转载:Centos7 从零编译配置Memcached
    转载:Centos7 从零编译Nginx+PHP+MySql 二
  • 原文地址:https://www.cnblogs.com/abeam/p/8996852.html
Copyright © 2011-2022 走看看