SQLite 语法快速入门

ops/2025/1/15 12:57:15/

SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。

提供一个免费的在线SQLite编辑器

(0)常用命令

# 格式化
.header on
.mode column
.timer on# 查看表格
.tables# 查看表结构(建表语句)
.schema table_name#备份
.backup database.db

PS:SQLite不区分大小写的,但也有一些命令是大小写敏感的,比如 GLOB 和 glob 在 SQLite 的语句中有不同的含义。

(1)创建与删除数据库

  • 创建数据库

    • 基础语法
    $ sqlite3 DatabaseName.db
    
  • 删除数据库

    • 在指定位置删除数据库文件即可。(无语句)

(2)创建表

  • 基础语法
    CREATE TABLE IF NOT EXISTS database_name.table_name(column1 datatype  PRIMARY KEY(one or more columns) AUTOINCREMENT,column2 datatype,column3 datatype,.....columnN datatype,
    );
    
    AUTOINCREMENT:自增

(3)删除表

  • 基础语法

    DROP TABLE database_name.table_name;
    

    PS:数据库名可省,代码当前数据库。

(4)插入数据

  • 基础语法

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

    PS:如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。*

  CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL);

在 COMPANY 表中创建六个记录:

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );
  • 或:
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

(5)修改数据

  • 基础语法
  UPDATE table_nameSET column1 = value1, column2 = value2...., columnN = valueNWHERE [condition];
  • 实例 更新 ID 为 6 的客户地址:

     UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6;
    

PS:where后可使用 AND 或 OR 运算符来结合 N 个数量的条件。

(6)删除数据

  • 基础语法

    DELETE FROM table_name
    WHERE [condition];
    
  • 实例

     DELETE FROM COMPANY WHERE ID = 7;
    

(7)查询数据

  • 基础语法

    SELECT column1, column2, columnN FROM table_name;
    

    SELECT * FROM table_name; -- 获取所有字段的数据
    

(8)条件查询

  • 基础语法

    SELECT column1, column2, columnN 
    FROM table_name
    WHERE [condition]
    
  • 实例1:下面的 SELECT 语句列出了 AGE 大于等于 25 工资大于等于 65000.00 的所有记录:

    select * from company where age>=25 and salary >=65000;
    
  • 实例2:下面的 SELECT 语句列出了 AGE 大于等于 25 工资大于等于 65000.00 的所有记录:

    select * from company where age>=25 or salary >=65000;
    
  • 实例3:下面的 SELECT 语句列出了 AGE 不为 NULL 的所有记录,结果显示所有的记录,意味着没有一个记录的 AGE 等于 NULL:

    select * from company where age is not null;
    
  • 实例4:下面的 SELECT 语句列出了 NAME 以 ‘Ki’ 开始的所有记录,‘Ki’ 之后的字符不做限制:

    select * from company where name like 'Ki%';
    
  • 实例5:下面的 SELECT 语句列出了 NAME 以 ‘Ki’ 开始的所有记录,‘Ki’ 之后的字符不做限制:

    select * from company where name GLOB 'Ki*';
    
  • 实例6:下面的 SELECT 语句列出了 AGE 的值为 25 或 27 的所有记录:

    select * from company where age in(25,27);
    
  • 实例7:下面的 SELECT 语句列出了 AGE 的值既不是 25 也不是 27 的所有记录:

    select * from company where age not in(25,27);
    
  • 实例8:下面的 SELECT 语句列出了 AGE 的值在 25 与 27 之间的所有记录:

    select * from company where age between 25 and 27
    

(9)聚合函数

序号函数 & 描述
1COUNT 函数 SQLite COUNT 聚集函数是用来计算一个数据库表中的行数。
2MAX 函数 SQLite MAX 聚合函数允许我们选择某列的最大值。
3MIN 函数 SQLite MIN 聚合函数允许我们选择某列的最小值。
4AVG 函数 SQLite AVG 聚合函数计算某列的平均值。
5SUM 函数 SQLite SUM 聚合函数允许为一个数值列计算总和。
  • 实例:SQLite COUNT 聚集函数是用来计算一个数据库表中的行数。下面是实例:
 SELECT count(*) FROM COMPANY;

(10)分组查询

  • GROUP BY对相同的数据进行分组。

  • 基础语法

    SELECT column-list
    FROM table_name
    WHERE [ conditions ]
    GROUP BY column1, column2....columnN
    ORDER BY column1, column2....columnN
    

    PS:GROUP BY 子句必须放在 WHERE 子句中的条件之后,必须放在 ORDER BY 子句之前。

  • 实例:如果您想查询不同年龄段的员工有多少个,则可以使用Group By查询,如下所示

SELECT AGE, COUNT(*) AS age_count
FROM COMPANY
GROUP BY AGE
ORDER BY AGE;

(11)Having子句

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

  • 基础语法

    SELECT column1, column2
    FROM table1, table2
    WHERE [ conditions ]
    GROUP BY column1, column2
    HAVING [ conditions ]
    ORDER BY column1, column2
    
  • 实例:显示年龄大于 25 岁的分组的平均工资:

SELECT AGE, AVG(SALARY) AS average_salary
FROM COMPANY
GROUP BY AGE
HAVING AGE > 25
ORDER BY AGE;

(12)Order by子句

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

  • 基础语法

    SELECT column-list 
    FROM table_name 
    [WHERE condition] 
    [ORDER BY column1, column2, .. columnN] [ASC | DESC];
    

    ASC 默认值,从小到大,升序排列

    DESC 从大到小,降序排列

  • 实例:将COMPANY表中的数据按 SALARY 降序排序。

    SELECT *
    FROM COMPANY
    ORDER BY SALARY DESC;
    

(13)Limit子句

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

  • 基础语法

    SELECT column1, column2, columnN 
    FROM table_name
    LIMIT [no of rows]
    

    下面是 LIMIT 子句与 OFFSET 子句一起使用时的语法:

    SELECT column1, column2, columnN 
    FROM table_name
    LIMIT [no of rows] OFFSET [row num]
    

    SQLite 引擎将返回从下一行开始直到给定的 OFFSET 为止的所有行.

  • 实例1:从COMPANY表中取前6条记录。

    SELECT * FROM COMPANY LIMIT 6;
    
  • 实例2:从COMPANY表中的第三条记录开始取3条记录。

    SELECT * FROM COMPANY LIMIT 3 OFFSET 3;
    SELECT * FROM COMPANY LIMIT 3,3;
    
  • 分页查询

    • 第一页(假设每页10条)

      select * from COMPANY LIMIT 10 OFFSET 0
      
    • 第二页(假设每页10条)

      select * from COMPANY LIMIT 10 OFFSET 10
      
    • 第三页(假设每页10条)

      select * from COMPANY LIMIT 10 OFFSET 20
      

分页公式:

select * fromLIMIT PAGESIZE OFFSET (PAPGER-1*PAGESIZE

凡是过去,皆为序章;凡是未来,皆有可期。


命令:

命令描述
.backup ?DB? FILE备份 DB 数据库(默认是 “main”)到 FILE 文件。
.bail ON|OFF发生错误后停止。默认为 OFF。
.databases列出数据库的名称及其所依附的文件。
.dump ?TABLE?以 SQL 文本格式转储数据库。如果指定了 TABLE 表,则只转储匹配 LIKE 模式的 TABLE 表。
.echo ON|OFF开启或关闭 echo 命令。
.exit退出 SQLite 提示符。
.explain ON|OFF开启或关闭适合于 EXPLAIN 的输出模式。如果没有带参数,则为 EXPLAIN on,即开启 EXPLAIN。
.header(s) ON|OFF开启或关闭头部显示。
.help显示消息。
.import FILE TABLE导入来自 FILE 文件的数据到 TABLE 表中。
.indices ?TABLE?显示所有索引的名称。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表的索引。
.load FILE ?ENTRY?加载一个扩展库。
.log FILE|off开启或关闭日志。FILE 文件可以是 stderr(标准错误)/stdout(标准输出)。
.mode MODE设置输出模式,MODE 可以是下列之一:csv 逗号分隔的值column 左对齐的列html HTML 的 代码insert TABLE 表的 SQL 插入(insert)语句line 每行一个值list 由 .separator 字符串分隔的值tabs 由 Tab 分隔的值tcl TCL 列表元素
.nullvalue STRING在 NULL 值的地方输出 STRING 字符串。
.output FILENAME发送输出到 FILENAME 文件。
.output stdout发送输出到屏幕。
.print STRING…逐字地输出 STRING 字符串。
.prompt MAIN CONTINUE替换标准提示符。
.quit退出 SQLite 提示符。
.read FILENAME执行 FILENAME 文件中的 SQL。
.schema ?TABLE?显示 CREATE 语句。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表。
.separator STRING改变输出模式和 .import 所使用的分隔符。
.show显示各种设置的当前值。
.stats ON|OFF开启或关闭统计。
.tables ?PATTERN?列出匹配 LIKE 模式的表的名称。
.timeout MS尝试打开锁定的表 MS 毫秒。
.width NUM NUM为 “column” 模式设置列宽度。
.timer ON|OFF开启或关闭 CPU 定时器。

http://www.ppmy.cn/ops/150289.html

相关文章

纯 Python、Django、FastAPI、Flask、Pyramid、Jupyter、dbt 解析和差异分析

一、纯 Python 1.1 基础概念 Python 是一种高级、通用、解释型的编程语言,以其简洁易读的语法和丰富的标准库而闻名。“纯 Python” 在这里指的是不依赖特定的 Web 框架或数据分析工具,仅使用 Python 原生的功能和标准库来开发应用程序或执行任务。 1.…

今年的电商年货节,主流的营销策略是怎样?

随着一年的年关将近,新一年的CNY营销也逐渐拉开帷幕。考虑到此时消费需求的膨胀,这个时间不论对于线上还是线下市场而言,都是重要的营销节点。今年CNY营销,电商平台上的主流营销策略是这样?就让我们来简单了解下概况。…

谷歌浏览器的音视频播放设置与优化

在数字媒体时代,音视频内容已成为人们日常生活中不可或缺的一部分。作为最流行的网络浏览器之一,谷歌浏览器凭借其强大的功能和灵活的设置选项,为用户提供了卓越的音视频播放体验。本文将详细介绍如何通过优化谷歌浏览器设置来提升音视频播放…

Mac Mini 最优雅的备份方式:使用极空间实现自动整机备份

Mac Mini 最优雅的备份方式:使用极空间实现自动整机备份 哈喽小伙伴们好,我是Stark-C~ 目前Mac mini M4到手已经一个多月,处理器性能大幅提升,内存也是破天荒的翻倍升级,再加上国补之后3500左右的价格,真…

Mybatis-底层是如何解决sql注入增删改查操作--删除操作

目录 什么是sql注入? SQL注入如何解决? 如何在Mybatis 中实现删除操作? 方式一: 方式二: 编写单元测试方法进行测试: 小结: 什么是sql注入? SQL注入:通过控制输入…

如何规模化实现完全自动驾驶?Mobileye提出解题“新”思路

在CES 2025上,Mobileye展示了端到端自动驾驶系统Mobileye Drive™,通过高度集成的传感器、算法和计算平台,可以实现自动驾驶功能的全覆盖。 Mobileye创始人兼首席执行官Amnon Shashua教授 期间,Mobileye创始人兼首席执行官Amnon …

linux手动安装mysql5.7

一、下载mysql5.7 1、可以去官方网站下载mysql-5.7.24-linux-glibc2.12-x86_64.tar压缩包: https://downloads.mysql.com/archives/community/ 2、在线下载,使用wget命令,直接从官网下载到linux服务器上 wget https://downloads.mysql.co…

30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <1> 5分钟快速创建一个springboot web项目

快速导航 <1> 5分钟快速创建一个springboot web项目 <2> 5分钟集成好最新版本的开源swagger ui&#xff0c;并使用ui操作调用接口 <3> 5分钟集成好druid并使用druid自带监控工具监控sql请求 <4> 5分钟集成好mybatisplus并使用mybatisplus generator自…