SQLite

来源:互联网 发布:诺基亚6220c软件 编辑:程序博客网 时间:2024/06/06 10:05

转载请标明出处: http://blog.csdn.net/wu_wxc/article/details/51065678
本文出自【吴孝城的CSDN博客】


在安装完SDK后会自动安装SQLite3,在你的platform-tools文件可以看到

在linux系统上会自带sqlite

在终端输入

sqlite3
可以看到

如果没有上面的结果,说明你的电脑没有安装sqlite,去官网下载一个安装就行

新版的Mac OS X 也会有预装sqlite


大小写敏感:sqlite不区分大小写,但也有像GLOB和glob之类的是区分的

注释:在sqlite中,注释可以用"--",也可以用"/**/"

语句:sqlite可以用任意关键字开始,如CREATE、SELECT、DELETE、INSERT、UPDATE、ALTER、DROP等,每个语句用";"结束


创建数据库

想在哪创建数据库,就用cd定位到那个目录下,然后执行创建语句后就会在该目录下创建一个数据库,

如果数据库已存在,则会使用它,如果不存在就会创建一个

sqlite3 DatabaseName.db
wu@wu:~$ sqlite3 Test.dbSQLite version 3.8.10.2 2015-05-20 18:17:19Enter ".help" for usage hints.sqlite> 
当然,这时你打开该目录是看到到数据库的,想要看到可以执行

.databases
命令查看

之前就可以在该目录下看到刚刚创建的数据库了

sqlite> .databasesseq  name             file                                                      ---  ---------------  ----------------------------------------------------------0    main             /home/wu/Test.db                                          sqlite> 


创建表:
CREATE TABLE Database_name.table_name(        column1 datatype,        column2 datatype,);
下面我在数据库Test中创建一个表,名为TestTable,_id为主键,不能为空

sqlite> CREATE TABLE TestTable(        _id INT PRIMARY KEY NOT NULL,        name TEXT,         age INT);    sqlite> 
再创建一个表

sqlite> CREATE TABLE test (        _id INT,         title VARCHAR(20));sqlite> 
我们可以用

.tables
来查看是否创建成功

sqlite> .tablesTestTable  test     sqlite> 
可以用.schema来查看表的完整信息

sqlite> .schema TestTableCREATE TABLE TestTable(_id INT PRIMARY KEY NOT NULL,name TEXT, ag);sqlite> 


删除表:
可以用带数据库名的方法来删除表,也可以不带数据库

删除表test

sqlite> DROP TABLE test;sqlite> 


Insert:
INSERT INTO Table_Name(       column1, column2)       VALUES (        values1, values2);

如果要添加表中所有的字段,可以不写列名,就是column

但要确保插入的顺序要与表中列的顺序一致 

INSEERT INTO Table_Name VALUES(        values1,         values2)
向表TestTable插入数据,_id为10,name为"哈哈",age为20,_为11,name为"嘻嘻",age为21

sqlite> INSERT INTO TestTable VALUES (10,'哈哈',20);sqlite> INSERT INTO TestTable VALUES (11,'嘻嘻',21);sqlite>


SELECT:
查询数据

SELECT column1, column2 FROM Table_Name;
想要查询所有的数据,可用"*"替换掉要查询的字段column,

SELECT * FROM Table_Name;
Table_Name为你要查询的表名

WHERE:

查询age=22的字段的name的值

sqlite> SELECT name from TestTable WHERE age=22;


LIKE:所有name以tes开头的age

sqlite> SELECT age FROM TestTable WHERE name LIKE 'tes%';


NOT:
列出所有age既不是20,又不是22的name的值

sqlite> SELECT name FROM TestTable WHERE age NOT IN (20, 22);


列出所有age不为NULL的name的值

sqlite> SELECT name FROM TestTable WHERE age IS NOT NULL;



BETWEEN:列出所有age在22到24(包括22和24)的name的值

sqlite> SELECT name FROM TestTable WHERE age BETWEEN 22 AND 24;



Order By

Order By是用来基于一个或多个列按升序或降序排列数据

ASC是升序

DESC是降序

默认是升序

sqlite> SELECT name FROM TestTable ORDER BY age ASC;
sqlite> SELECT name FROM TestTable ORDER BY age DESC;


Group By:与SELECT语句一起使用,在SELECT语句中,Group By放在WHERE之后,Order By之前

根据name进行分组

sqlite> SELECT name FROM V GROUP BY name;

根据name进行分组并以age升序排序

sqlite> SELECT name FROM TestTable GROUP BY name ORDER BY age;


Having:对查询后的分组排序的结果集进行筛选

列出分组后age大于23的name

sqlite> SELECT name FROM TestTable GROUP BY age HAVING age > 23;


AS:设置别名,为了增强结果集的可读性,便于理解各列数据的含义,可以使用AS来设置结果集列的名称

sqlite> SELECT _id, name, _id AS 序号, name AS 名字 FROM TestTable WHERE age = 24;


还有很多其他,如

AVG:平均值

COUNT:计数

MAX:最大值

MIN:最小值

SUM:和

Glob子句等

Glob子句大小写敏感,使用的有“*”代表零个、一个或多个数字或符号,"?"代表一个单一的数据或字符,这些符号可以被组合使用

如:

查询以"1"开关可用‘1*’;

查询文本中包含一个"-"的可用'*-*';











0 0