1.java中的数据类型与sqlite中的对应关系
Boolean 对应 INTEGER Byte 对应 INTEGER Short 对应 INTEGER Integer 对应 INTEGER Long 对应 INTEGER Float 对应 REAL Double 对应 REAL String 对应 TEXT Byte[] 对应 BLOB Date 对应 INTEGER
2.sqlite 数据库导入导出:.dump 命令
$sqlite3 testDB.db .dump > testDB.sql
==>将 testDB.db 数据库的内容到转储到 ASCII 文本文件 testDB.sql 中$sqlite3 testDB.db < testDB.sql
==>将testDB.sql中的数据恢复(插入)到数据库testDB.db中
3.sqlite创建表:
sqlite> CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL );
4.sqlIte 命令中的 .tables 命令来验证表是否已成功创建
sqlite>.tables COMPANY DEPARTMENT
5.sqlite 删除表
sqlite>DROP TABLE COMPANY;--删除表 sqlite>.tables;查看删除后的表
6.sqlite Insert 语句
创建表:
sqlite> CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL,SALARY REAL );
插入数据
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1,'Paul',32,'California',20000.00 );
也可对应所有字段全部插入:
INSERT INTO COMPANY VALUES (7,'James',24,'Houston',10000.00 );
也可使用一个表来填充另一个表
INSERT INTO first_table_name [(column1,column2,... columnN)] SELECT column1,...columnN FROM second_table_name [WHERE condition];
7.sqlite 逻辑运算符
- AND
- BETWEEN
- BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。
- qlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
- EXISTS
- IN
- IN 运算符用于把某个值与一系列指定列表的值进行比较。
- sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25,27 );
- NOT IN
- NOT IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。
- sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25,27 );
- LIKE
- GLOB
- NOT
- NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。
- OR
- IS NULL
- NULL 运算符用于把某个值与 NULL 值进行比较。
- IS NOT
- IS NOT 运算符与 != 相似。
- sqlite> SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
- IS
- IS 运算符与 = 相似。
- ||
- 连接两个不同的字符串,得到一个新的字符串。
- UNIQUE
- UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。
8.sqlite Update 语句
更新 ID 为 6 的客户地址 sqlite> UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6; 修改 COMPANY 表中 ADDRESS 和 SALARY 列的所有值 sqlite> UPDATE COMPANY SET ADDRESS = 'Texas',SALARY = 20000.00;
9.sqlite Delete 语句
删除 ID 为 7 的客户 sqlite> DELETE FROM COMPANY WHERE ID = 7; 从 COMPANY 表中删除所有记录 sqlite> DELETE FROM COMPANY;
10.sqlite Like 子句
sqlite 的 LIKE 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。 这里有两个通配符与 LIKE 运算符一起使用: 百分号 (%) 下划线 (_) 百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。 SELECT FROM table_name WHERE column LIKE 'XXXX%' or SELECT FROM table_name WHERE column LIKE '%XXXX%' or SELECT FROM table_name WHERE column LIKE 'XXXX_' or SELECT FROM table_name WHERE column LIKE '_XXXX' or SELECT FROM table_name WHERE column LIKE '_XXXX_' WHERE SALARY LIKE '200%' 查找以 200 开头的任意值 WHERE SALARY LIKE '%200%' 查找任意位置包含 200 的任意值 WHERE SALARY LIKE '_00%' 查找第二位和第三位为 00 的任意值 WHERE SALARY LIKE '2_%_%' 查找以 2 开头,且长度至少为 3 个字符的任意值 WHERE SALARY LIKE '%2' 查找以 2 结尾的任意值 WHERE SALARY LIKE '_2%3' 查找第二位为 2,且以 3 结尾的任意值 WHERE SALARY LIKE '2___3' 查找长度为 5 位数,且以 2 开头以 3 结尾的任意值 注意区分:_下划线和,-减号: 显示 COMPANY 表中 ADDRESS 文本里包含一个连字符(-)的所有记录: sqlite> SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%';
11.sqlite GLOB 子句
sqlite 的 GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true), 也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。 星号 (*) 问号 (?) 星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用 SELECT FROM table_name WHERE column GLOB 'XXXX*' or SELECT FROM table_name WHERE column GLOB '*XXXX*' or SELECT FROM table_name WHERE column GLOB 'XXXX?' or SELECT FROM table_name WHERE column GLOB '?XXXX' or SELECT FROM table_name WHERE column GLOB '?XXXX?' or SELECT FROM table_name WHERE column GLOB '????' WHERE SALARY GLOB '200*' 查找以 200 开头的任意值 WHERE SALARY GLOB '*200*' 查找任意位置包含 200 的任意值 WHERE SALARY GLOB '?00*' 查找第二位和第三位为 00 的任意值 WHERE SALARY GLOB '2??' 查找以 2 开头,且长度至少为 3 个字符的任意值 WHERE SALARY GLOB '*2' 查找以 2 结尾的任意值 WHERE SALARY GLOB '?2*3' 查找第二位为 2,且以 3 结尾的任意值 WHERE SALARY GLOB '2???3' 查找长度为 5 位数,且以 2 开头以 3 结尾的任意值
12.sqlite Limit 子句
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 从表中提取的行数:sqlite> SELECT * FROM COMPANY LIMIT 6; 从跳过2行提取3条记录:sqlite> SELECT * FROM COMPANY LIMIT 3 OFFSET 2;
13.sqlite Order By 子句
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 安装SALARY升序排列: sqlite> SELECT * FROM COMPANY ORDER BY SALARY ASC; 结果: ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 7 James 24 Houston 10000.0 2 Allen 25 Texas 15000.0 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0 6 Kim 22 South-Hall 45000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 ========================================================= 将结果按 NAME 和 SALARY 升序排序:(顺序从左到右,先按NAME排序,得到结果集在按SALARY排序(不影响第一次排序的基础上排序)) 如:有Allen1和Allen2,第二次排序只是对此两者的SALARY进行排序 sqlite> SELECT * FROM COMPANY ORDER BY NAME,SALARY ASC; 结果: ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000.0 5 David 27 Texas 85000.0 7 James 24 Houston 10000.0 6 Kim 22 South-Hall 45000.0 4 Mark 25 Rich-Mond 65000.0 1 Paul 32 California 20000.0 3 Teddy 23 Norway 20000.0 按 NAME 降序排序: sqlite> SELECT * FROM COMPANY ORDER BY NAME DESC; ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 3 Teddy 23 Norway 20000.0 1 Paul 32 California 20000.0 4 Mark 25 Rich-Mond 65000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 5 David 27 Texas 85000.0 2 Allen 25 Texas 15000.0
14.sqlite Group By
下面给出了 GROUP BY 子句的基本语法。GROUP BY 子句必须放在 WHERE 子句中的条件之后,必须放在 ORDER BY 子句之前。 如: SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1,column2....columnN ORDER BY column1,column2....columnN 数据表如下: ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 如果您想了解每个客户的工资总额,则可使用 GROUP BY 查询, 如下所示: sqlite> SELECT NAME,SUM(SALARY) FROM COMPANY GROUP BY NAME; 这将产生以下结果: NAME SUM(SALARY) ---------- ----------- Allen 15000.0 David 85000.0 James 10000.0 Kim 45000.0 Mark 65000.0 Paul 20000.0 Teddy 20000.0 我们的表具有重复名称的记录,如下所示: ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 8 Paul 24 Houston 20000.0 9 James 44 Norway 5000.0 10 James 45 Texas 5000.0 让我们用同样的 GROUP BY 语句来对所有记录按 NAME 列进行分组, 如下所示: sqlite> SELECT NAME,SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME; 这将产生以下结果: NAME SUM(SALARY) ---------- ----------- Allen 15000 David 85000 James 20000 Kim 45000 Mark 65000 Paul 40000 Teddy 20000
sqlite Having 子句
下面是 HAVING 子句在 SELECT 查询中的位置 SELECT FROM WHERE GROUP BY HAVING ORDER BY LIMIT OFFSET 在一个查询中,HAVING 子句必须放在 GROUP BY 子句之后,必须放在 ORDER BY 子句之前。下面是包含 HAVING 子句的 SELECT 语句的语法: SELECT column1,column2 FROM table1,table2 WHERE [ conditions ] GROUP BY column1,column2 HAVING [ conditions ] ORDER BY column1,column2 COMPANY 表有以下记录: ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 8 Paul 24 Houston 20000.0 9 James 44 Norway 5000.0 10 James 45 Texas 5000.0 下面是一个实例,它将显示名称计数小于 2 的所有记录: sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2; 这将产生以下结果: ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000 5 David 27 Texas 85000 6 Kim 22 South-Hall 45000 4 Mark 25 Rich-Mond 65000 3 Teddy 23 Norway 20000 下面是一个实例,它将显示名称计数大于 2 的所有记录: sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) > 2; 这将产生以下结果: ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 10 James 45 Texas 5000
sqlite Distinct 关键字
sqlite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。 有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义, 它只获取唯一一次记录,而不是获取重复记录。 语法 用于消除重复记录的 DISTINCT 关键字的基本语法如下: SELECT DISTINCT column1,.....columnN FROM table_name WHERE [condition] 实例 假设 COMPANY 表有以下记录: ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0 8 Paul 24 Houston 20000.0 9 James 44 Norway 5000.0 10 James 45 Texas 5000.0 首先,让我们来看看下面的 SELECT 查询,它将返回重复的工资记录: sqlite> SELECT name FROM COMPANY; 这将产生以下结果: NAME ---------- Paul Allen Teddy Mark David Kim James Paul James James 现在,让我们在上述的 SELECT 查询中使用 DISTINCT 关键字: sqlite> SELECT DISTINCT name FROM COMPANY; 这将产生以下结果,没有任何重复的条目: NAME ---------- Paul Allen Teddy Mark David Kim James