suchen
HeimDatenbankMySQL-Tutorial[Sqlite]移动嵌入式数据库Sqlite的日常SQL操作语句汇总

序言: 嵌入式数据库Sqlite的基本sql使用汇总,使用测试起来,与关系型数据库mysql在语法上有很多的相似之处,先准备测试数据: CREATE TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2)); INSERT INTO CO

序言:

嵌入式数据库Sqlite的基本sql使用汇总,使用测试起来,与关系型数据库mysql在语法上有很多的相似之处,先准备测试数据:

CREATE TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2));

INSERT INTO "COMPANY" VALUES(1,'Paul',32,'California',20000);

INSERT INTO "COMPANY" VALUES(2,'Allen',25,'Texas',15000);

INSERT INTO "COMPANY" VALUES(3,'Teddy',23,'Norway',20000);

INSERT INTO "COMPANY" VALUES(4,'Mark',25,'Rich-Mond',65000);

INSERT INTO "COMPANY" VALUES(5,'David',27,'Texas',85000);

INSERT INTO "COMPANY" VALUES(6,'Kim',22,'South-Hall',45000);

INSERT INTO "COMPANY" VALUES(7,'James',24,NULL,10000);

INSERT INTO "COMPANY" VALUES(8,'Xiaoteng',29,NULL,NULL);

1,分组统计排序

GROUP BY 进行分组统计数据,命令如下:

sqlite> SELECT NAME, SUM(SALARY) SALARY_SUM, COUNT(1) COUNT_NUM FROM COMPANY GROUP BY NAME; 

\

ORDER BY 进行排序,命令如下:

sqlite> SELECT NAME, SUM(SALARY) SALARY_SUM, COUNT(1) COUNT_NUM FROM COMPANY GROUP BY NAME ORDER BY SALARY_SUM ASC;

\

HAVING 字句过滤数据记录,命令如下:

SELECT c.*,COUNT(1) COUNT_NUM FROM COMPANY c GROUP BY c.NAME HAVING (COUNT_NUM) > 1 ORDER BY COUNT_NUM ;

PS:在一个查询中,HAVING 子句必须放在 GROUP BY 子句之后,必须放在 ORDER BY 子句之前。下面是包含 HAVING 子句的 SELECT 语句的语法:

\

2,Limit分页统计语句

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

第一页取值SQL: SELECT * FROM COMPANY ORDER BY ID LIMIT 0,3; 也可以从一个特定的偏移开始提取记录,从第四位开始提取 3 个记录,使用OFFSET关键字,SELECT * FROM COMPANY ORDER BY ID LIMIT 3 OFFSET 0;PS:首页从0开始取值。
\

第二页取值SQL: SELECT * FROM COMPANY ORDER BY ID LIMIT 3,3; 也可以从一个特定的偏移开始提取记录,从第四位开始提取 3 个记录,使用OFFSET关键字,SELECT * FROM COMPANY ORDER BY ID LIMIT 3 OFFSET 3;如下图所示:
\

3,Glob匹配字句

SQLite 的 GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。

星号 (*)

问号 (?)

星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。

下面一些实例演示了 带有 '*' 和 '?' 运算符的 GLOB 子句不同的地方:

\

下面是一个实例,它显示 COMPANY 表中 AGE 以 2 开头的所有记录,如下所示:

\ 

下面是一个实例,它显示 COMPANY 表中 ADDRESS 文本里包含一个连字符(-)的所有记录:

\

4,Distinct关键字过滤重复记录

SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。

有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。

5,字符串连接操作

问题地址:http://bbs.csdn.net/topics/390886865

sqlite> CREATE TABLE t1(id int, name varchar(60));

sqlite> INSERT INTO "t1" VALUES(4,'1@test.cn');

sqlite> select * from t1;

id name

---------- ----------

4 1@test.cn

sqlite> update t1 set name=(id/2)||substr(name,instr(name,'@'),length(name)-instr(name,'@')+1) where id=4;

sqlite> select * from t1;

id name

---------- ----------

4 2@test.cn

sqlite>

6,对Null值的处理

往表里面录入Null值

sqlite> INSERT INTO COMPANY(ID,NAME,AGE,ADDRESS,SALARY) VALUES(8,'Xiaoteng',29,NULL,18000);

sqlite>

修改某个字段为null值

sqlite> UPDATE COMPANY SET SALARY = NULL WHERE ID=8;

sqlite>

查询为null的记录

sqlite> SELECT * FROM COMPANY WHERE ADDRESS IS NULL;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

7 James 24 10000

8 Xiaoteng 29

sqlite>

查询不为null的记录

sqlite> SELECT * FROM COMPANY WHERE ADDRESS IS NOT NULL;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

1 Paul 32 California 20000

2 Allen 25 Texas 15000

3 Teddy 23 Norway 20000

4 Mark 25 Rich-Mond 65000

5 David 27 Texas 85000

6 Kim 22 South-Hall 45000

sqlite>

7,子查询

SELECt中的基本语法如下:

SELECT column_name [, column_name ]

FROM table1 [, table2 ]

WHERE column_name OPERATOR

(SELECT column_name [, column_name ]

FROM table1 [, table2 ]

[WHERE])

实例如下:

sqlite> SELECT * FROM COMPANY WHERE ID IN (SELECT ID FROM COMPANY WHERE SALARY > 45000);

INSERT语句中的子查询使用,基本语法:

INSERT INTO table_name [ (column1 [, column2 ]) ]

SELECT [ *|column1 [, column2 ]

FROM table1 [, table2 ]

[ WHERE VALUE OPERATOR ]

实例如下:

sqlite> INSERT INTO COMPANY_BKP

SELECT * FROM COMPANY

WHERE ID IN (SELECT ID

FROM COMPANY) ;

UPDATE语句中的子查询使用,基本语法如下:

UPDATE table

SET column_name = new_value

[ WHERE OPERATOR [ VALUE ]

(SELECT COLUMN_NAME

FROM TABLE_NAME)

[ WHERE) ]

实例如下:

sqlite> UPDATE COMPANY

SET SALARY = SALARY * 0.50

WHERE AGE IN (SELECT AGE FROM COMPANY_BKP

WHERE AGE >= 27 );

DELETE语句中的子查询使用,语法如下:

DELETE FROM TABLE_NAME

[ WHERE OPERATOR [ VALUE ]

(SELECT COLUMN_NAME

FROM TABLE_NAME)

[ WHERE) ]

实例如下:

sqlite> DELETE FROM COMPANY

WHERE AGE IN (SELECT AGE FROM COMPANY_BKP

WHERE AGE > 27 );

8,EXPLAIN分析

没有建立索引之前,分析都是表扫描:

sqlite> EXPLAIN SELECT * FROM COMPANY WHERE Salary

addr opcode p1 p2 p3 p4 p5 comment

---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------

0 Trace 0 0 0 00

1 Integer 20000 1 0 00

2 Goto 0 16 0 00

3 OpenRead 0 2 0 5 00

4 Rewind 0 14 0 00

5 Column 0 4 2 00

6 Ge 1 13 2 collseq(BI 6b

7 Column 0 0 4 00

8 Column 0 1 5 00

9 Column 0 2 6 00

10 Column 0 3 7 00

11 Column 0 4 8 00

12 ResultRow 4 5 0 00

13 Next 0 5 0 01

14 Close 0 0 0 00

15 Halt 0 0 0 00

16 Transactio 0 0 0 00

17 VerifyCook 0 1 0 00

18 TableLock 0 2 0 COMPANY 00

19 Goto 0 3 0 00

sqlite> EXPLAIN QUERY PLAN SELECT * FROM COMPANY WHERE Salary

order from detail

---------- ---------- -------------

0 0 TABLE COMPANY

sqlite>

建立索引,再进行EXPLAIN分析查看结果,走了idx_sal索引扫描:

sqlite> CREATE INDEX idx_sal ON COMPANY(SALARY);

sqlite> EXPLAIN SELECT * FROM COMPANY WHERE Salary

addr opcode p1 p2 p3 p4 p5 comment

---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------

0 Trace 0 0 0 00

1 Integer 20000 1 0 00

2 Goto 0 25 0 00

3 OpenRead 0 2 0 5 00

4 OpenRead 1 3 0 keyinfo(1, 00

5 Affinity 2 0 0 cb 00

6 Rewind 1 22 2 0 00

7 SCopy 1 2 0 00

8 IsNull 2 22 0 00

9 Affinity 2 1 0 cb 00

10 IdxGE 1 22 2 1 00

11 Column 1 0 3 00

12 IsNull 3 21 0 00

13 IdxRowid 1 3 0 00

14 Seek 0 3 0 00

15 Column 0 0 4 00

16 Column 0 1 5 00

17 Column 0 2 6 00

18 Column 0 3 7 00

19 Column 1 0 8 00

20 ResultRow 4 5 0 00

21 Next 1 10 0 00

22 Close 0 0 0 00

23 Close 1 0 0 00

24 Halt 0 0 0 00

25 Transactio 0 0 0 00

26 VerifyCook 0 2 0 00

27 TableLock 0 2 0 COMPANY 00

28 Goto 0 3 0 00

sqlite> EXPLAIN QUERY PLAN SELECT * FROM COMPANY WHERE Salary

order from detail

---------- ---------- --------------------------------

0 0 TABLE COMPANY WITH INDEX idx_sal

sqlite>

9,删除重复数据并且保留最新一条记录

录入测试数据

sqlite> .dump

PRAGMA foreign_keys=OFF;

BEGIN TRANSACTION;

CREATE TABLE COMPANY(ID INT NOT NULL, NAME VARCHAR(20),AGE INT,ADDRESS VARCHAR(20),SALARY DECIMAL(7,2));

INSERT INTO "COMPANY" VALUES(2,'Allen',25,'Texas',15000);

INSERT INTO "COMPANY" VALUES(3,'Teddy',23,'Norway',20000);

INSERT INTO "COMPANY" VALUES(4,'Mark',25,'Rich-Mond',65000);

INSERT INTO "COMPANY" VALUES(5,'David',27,'Texas',85000);

INSERT INTO "COMPANY" VALUES(6,'Kim',22,'South-Hall',45000);

INSERT INTO "COMPANY" VALUES(7,'James',24,'Houston',10000);

INSERT INTO "COMPANY" VALUES(7,'James',28,'Houston',20000);

INSERT INTO "COMPANY" VALUES(4,'Mark',29,'Rich-Mond',95000);

COMMIT;

sqlite> 

查看重复记录数

sqlite> select * from company order by name;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

2 Allen 25 Texas 15000

5 David 27 Texas 85000

7 James 24 Houston 10000

7 James 28 Houston 20000

6 Kim 22 South-Hall 45000

4 Mark 25 Rich-Mond 65000

4 Mark 29 Rich-Mond 95000

3 Teddy 23 Norway 20000

sqlite>

通过rowid来删除重复记录

sqlite> DELETE FROM COMPANY WHERE rowid NOT IN(SELECT MAX(rowid) rowid FROM COMPANY GROUP BY NAME);

sqlite> 

再查看最新的数据记录,已经删除了重复NAME的记录

sqlite> select * from company;

ID NAME AGE ADDRESS SALARY

---------- ---------- ---------- ---------- ----------

2 Allen 25 Texas 15000

3 Teddy 23 Norway 20000

5 David 27 Texas 85000

6 Kim 22 South-Hall 45000

7 James 28 Houston 20000

4 Mark 29 Rich-Mond 95000

sqlite>

\

\

参考文章:http://www.w3cschool.cc/sqlite/sqlite-tutorial.html

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
如何使用PHP和SQLite创建用户登录系统如何使用PHP和SQLite创建用户登录系统Jul 28, 2023 pm 09:27 PM

如何使用PHP和SQLite创建用户登录系统在当今互联网时代,用户登录系统是许多网站和应用程序的基本功能之一。本文将介绍如何使用PHP和SQLite创建一个简单而强大的用户登录系统。SQLite是一个嵌入式数据库引擎,它是一个零配置的、服务器端的数据库引擎。PHP是一种流行的服务器端脚本语言,它与SQLite结合使用可以创建出灵活且高效的用户登录系统。通过以

使用PHP和SQLite实现用户权限和访问控制使用PHP和SQLite实现用户权限和访问控制Jul 29, 2023 pm 02:33 PM

使用PHP和SQLite实现用户权限和访问控制在现代的web应用程序中,用户权限和访问控制是非常重要的一部分。通过正确的权限管理,可以确保只有经过授权的用户能够访问特定的页面和功能。在本文中,我们将学习如何使用PHP和SQLite来实现基本的用户权限和访问控制。首先,我们需要创建一个SQLite数据库来存储用户和其权限的信息。下面是简单的用户表和权限表的结构

PHP和SQLite:如何进行数据压缩和加密PHP和SQLite:如何进行数据压缩和加密Jul 29, 2023 am 08:36 AM

PHP和SQLite:如何进行数据压缩和加密在许多Web应用程序中,数据的安全性和存储空间的利用率是非常重要的考虑因素。PHP和SQLite是两个非常广泛使用的工具,本文将介绍如何使用它们来进行数据压缩和加密。SQLite是一种轻量级的嵌入式数据库引擎,它没有独立的服务器进程,而是直接与应用程序进行交互。PHP是一种流行的服务器端脚本语言,被广泛用于构建动态

创建一个简单的博客:使用PHP和SQLite创建一个简单的博客:使用PHP和SQLiteJun 21, 2023 pm 01:23 PM

随着互联网的发展,博客成为越来越多人分享自己生活、知识和想法的平台。如果你也想创建一个自己的博客,那么本文将介绍如何使用PHP和SQLite来创建一个简单的博客。确定需求在开始创建博客之前,我们需要确定自己想要实现的功能。例如:创建博客文章编辑博客文章删除博客文章显示博客文章列表显示博客文章详情用户认证和权限控制安装PHP和SQLite我们需要安装PHP和S

如何使用PHP和SQLite进行数据导入和导出如何使用PHP和SQLite进行数据导入和导出Jul 28, 2023 am 11:43 AM

如何使用PHP和SQLite进行数据导入和导出导入和导出数据是在开发网站或应用程序时常见的任务之一。使用PHP和SQLite,我们可以轻松地将数据从外部文件导入到SQLite数据库中,并从数据库导出数据到外部文件。本文将介绍如何使用PHP和SQLite进行数据导入和导出,并提供相应的代码示例。数据导入首先,我们需要准备一个包含要导入的数据的外部文件。这个文件

使用PHP和SQLite实现数据图表和可视化使用PHP和SQLite实现数据图表和可视化Jul 28, 2023 pm 01:01 PM

使用PHP和SQLite实现数据图表和可视化概述:随着大数据时代的到来,数据图表和可视化成为了展示和分析数据的重要方式。在本文中,将介绍如何使用PHP和SQLite实现数据图表和可视化的功能。以一个实例为例,展示如何从SQLite数据库中读取数据,并使用常见的数据图表库来展示数据。准备工作:首先,需要确保已经安装了PHP和SQLite数据库。如果没有安装,可

PHP和SQLite:如何处理长连接和断线重连PHP和SQLite:如何处理长连接和断线重连Jul 29, 2023 am 09:05 AM

PHP和SQLite:如何处理长连接和断线重连引言:在Web开发中,PHP和SQLite是两个常用的技术。然而,长连接和断线重连是在使用PHP和SQLite时经常遇到的一些问题。本文将介绍如何在PHP中处理长连接和断线重连的问题,并提供一些实例代码,以帮助开发者更好地理解和解决这些问题。一、长连接问题在使用PHP连接SQLite数据库时,长连接(Persis

如何使用PHP和SQLite进行全文搜索和索引策略如何使用PHP和SQLite进行全文搜索和索引策略Jul 29, 2023 pm 08:45 PM

如何使用PHP和SQLite进行全文搜索和索引策略引言:在现代的应用程序开发中,全文搜索功能在许多领域中都是不可或缺的。无论是在博客、新闻网站还是在电子商务平台上,用户都习惯使用关键字进行搜索。因此,为了提高用户体验并提供更好的搜索结果,我们需要使用适当的搜索和索引策略来提供全文搜索功能。在本文中,我们将探讨如何使用PHP和SQLite数据库来实现全文搜索和

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software