SQLite备忘笔记

作者: 熊爸天下_56c7 | 来源:发表于2021-06-30 17:30 被阅读0次

    一. SQLite简介

    SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。
    就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

    SQLite特点

    • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
    • SQLite 不需要配置,这意味着不需要安装或管理。
    • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
    • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
    • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
    • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
    • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
    • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
    • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

    二. 安装SQLite

    1. 下载
      https://www.sqlite.org/download.html 我们直接选择预编译版本就行了
    1. 安装
      创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。

    2. 创建环境变量
      添加 C:\sqlite 到 PATH 环境变量

    3. 测试环境
      命令行输入: sqlite3 --version可以查看版本信息 输入sqlite3可以进入sqlite3

    三. SQLite 的点命令

    如需获取可用的点命令的清单,可以在任何时候输入 ".help"

    具体点命令

    1. 退出 SQLite 提示符
    .exit
    .quit
    
    2. 显示各种设置的当前值
    .show
    
    3. 开启或关闭统计
    .stats ON|OFF
    #例如:
    .stats ON
    
    4. 超时时间
    .timeout MS
    
    5. 开启或关闭头部显示
    .header(s) ON|OFF
    
    6. 设置输出模式
    .mode MODE
    
    MODE 说明
    csv CSV文件, 逗号分隔值的输出
    column 左对齐的列输出
    html HTML 的 <table> 代码
    line 每行一个值
    list 由 .separator 字符串分隔的值
    tabs 由 Tab 分隔的值
    insert TABLE 表的 SQL 插入(insert)语句
    tcl TCL 列表元素
    7. 备份数据库到文件
    .backup ?DB? FILE
    # 例如:
    .backup main c:\sqlite
    
    8. 发生错误后是否停止
    .bail ON|OFF
    # 例如:
    .bail ON
    
    9. 列出数据库的名称及其所依附的文件
    .databases
    

    四. 数据库操作

    1. 创建数据库

    #在命令行中
    sqlite3 students.db
    # 或者在sqlite3命令行中: 
    .open students.db
    # 存在则直接会打开,不存在就创建它。
    

    五. 表操作

    1. 创建表

    CREATE TABLE database_name.table_name(
       column1 datatype  PRIMARY KEY(one or more columns),
       column2 datatype,
       column3 datatype,
       .....
       columnN datatype,
    );
    
    • 可以使用 SQLIte 命令中的 .tables 命令来验证表是否已成功创建
    • 可以使用 .schema查看创建信息 (也可以只查看单个的.schema SCHOOL)

    关于每一列的约束.可以参考下表:

    约束 说明
    NOT NULL 确保某列不能有 NULL 值
    UNIQUE 确保某列中的所有值是不同的
    PRIMARY KEY 唯一标识数据库表中的各行/记录
    DEFAULT 当某列没有指定值时,为该列提供默认值
    AUTOINCREMENT 自动递增
    CHECK CHECK 约束确保某列中的所有值满足一定条件

    例如:

    CREATE TABLE COMPANY(
       ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL UNIQUE,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL    DEFAULT 50000.00,
       TAXRATE       REAL    CHECK(TAXRATE> 0)
    );
    

    2. 删除表

    DROP TABLE database_name.table_name;
    #例如: DROP TABLE TEST
    

    六. 数据操作

    1. 插入数据(Insert 语句)

    方法1: 要确保值的顺序与列在表中的顺序一致

    INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
    

    方法2:

    INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
    VALUES (value1, value2, value3,...valueN);
    

    在这里,column1, column2,...columnN 是要插入数据的表中的列的名称。

    例如

    INSERT INTO STUDENT VALUES (1,'TOM',13,'tingshua');
    

    2. 更新数据

    UPDATE table_name
    SET column1 = value1, column2 = value2...., columnN = valueN
    WHERE [condition];
    

    例如:

    UPDATE STUDENT SET AGE=16 WHERE NAME='TOM';
    

    3. 删除数据

    DELETE FROM table_name
    WHERE [condition];
    

    七. 查询操作

    1. SELECT语句

    SELECT * FROM table_name;
    SELECT column1, column2, columnN FROM table_name;
    
    

    2. 带条件的查询

    SELECT * FROM STUDENT WHERE AGE>12;
    SELECT * FROM STUDENT WHERE AGE%2 == 1;
    SELECT * FROM STUDENT WHERE AGE IN (11,13);
    SELECT * FROM STUDENT WHERE AGE BETWEEN 10 AND 15;
    SELECT * FROM STUDENT WHERE NAME LIKE 'a%%';
    

    下面是sqlite常用的运算符

    3. 方言LIMIT OFFSET

    SQLite 的 LIMIT 子句用于限制由 SELECT 语句返回的数据数量。

    4. 排序 ORDER BY

    SQLite 的 ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。

    5. 分组 GROUP BY

    SQLite 的 GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。

    在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。

    假设我们有这样一个表:

    我们看到里面有三个James, 两个paul , 我们可以把他们分别视为一组来统计

    6. HAVING子句 (子筛选)

    HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。
    WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。

    7. DISTINCT 消除所有重复

    SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。
    有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。

    SELECT DISTINCT column1, column2,.....columnN 
    FROM table_name
    WHERE [condition]
    

    八. 常用函数

    1. COUNT 函数

    COUNT 聚集函数是用来计算一个数据库表中的行数。

    SELECT COUNT(AGE) FROM STUDENT WHERE AGE>14;
    

    2. MAX 函数

    MAX 聚合函数允许我们选择某列的最大值

    SELECT MAX(salary) FROM COMPANY;
    

    3. MIN 函数

    MIN 聚合函数允许我们选择某列的最小值

    4. AVG 函数

    SELECT AVG(salary) FROM COMPANY;
    

    5. SUM 函数

    SUM 聚合函数允许为一个数值列计算总和。

    SELECT SUM(salary) FROM COMPANY;
    

    6. ABS 函数

    ABS 函数返回数值参数的绝对值。

    SELECT ABS(salary) FROM COMPANY;
    

    7. UPPER 函数 / LOWER 函数

    UPPER 函数把字符串转换为大写字母。 / SQLite LOWER 函数把字符串转换为小写字母。

    SELECT UPPER(NAME),AGE FROM STUDENT;
    

    8. LENGTH 函数

    LENGTH 函数返回字符串的长度。

    SELECT UPPER(NAME),AGE FROM STUDENT WHERE LENGTH(NAME)=3;
    

    九. 事务控制

    1. 开始事务

    BEGIN;
    

    2. 提交事务

    COMMIT;
    

    3. 回滚事务

    ROLLBACK;
    

    相关文章

      网友评论

        本文标题:SQLite备忘笔记

        本文链接:https://www.haomeiwen.com/subject/fjwlultx.html