您的位置:首页 > 数据库

SQLite 基本语句使用

2017-04-10 06:45 253 查看

SQLite 基本语句使用

来源:http://www.runoob.com/sqlite/sqlite-tutorial.html

SQLite 数据类型

SQLite 存储类

NULL 值为 NULL 值。

INTEGER 值为带符号整数。

REAL 值是一个浮点值。

TEXT 值是一个文本字符串。

BLOB 值为二进制数。

SQLite 亲和(Affinity)类型

TEXT : 数值型数据在被插入之前,先被转换为文本格式,之后再插入到目标字段中。

NUMERIC : 当文本数据被插入到亲缘性为NUMERIC的字段中时,如果转换操作不会导致数据信息丢失以及完全可逆,那么SQLite就会将该文本数据转换为INTEGER或REAL类型的数据,如果转换失败,SQLite仍会以TEXT方式存储该数据。对于NULL或BLOB类型的新数据,SQLite将不做任何转换,直接以NULL或BLOB的方式存储该数据。需要额外说明的是,对于浮点格式的常量文本,如”30000.0”,如果该值可以转换为INTEGER同时又不会丢失数值信息,那么SQLite就会将其转换为INTEGER的存储方式。

INTEGER : 对于亲缘类型为INTEGER的字段,其规则等同于NUMERIC,唯一差别是在执行CAST表达式时。

REAL : 其规则基本等同于NUMERIC,唯一的差别是不会将”30000.0”这样的文本数据转换为INTEGER存储方式。

NONE : 不做任何的转换,直接以该数据所属的数据类型进行存储。

还有 INT,INTEGER, CHARACTER, TEXT, BLOB, REAL, FLOAT, DOUBLE, NUMERIC, BOOLEAN, DATE, DATETIME, Boolean(布尔值被存储为整数 0-false 和 1-true)等等,所属的亲和类型不同。

Date 与 Time 数据类型:SQLite 没有单独的用于存储日期和时间的存储类,但 SQLite 会把日期和时间存储为 TEXT, REAL, INTEGER值。TEXT:格式为“YYYY-MM-DD HH:MM:SS:SSS”,REAL:从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。INTEGER:从 1970-01-01 00:00:00 UTC 算起的秒数。

语句

创建表

create table table_name (
_id integer primary key not null, (column1。可无,约束条件)
column2 datatype,
column3 datatype,
...
columnN datatype
);


删除表

drop table table_name;


insert 语句

两种方式:

insert into table_name (column1, column2, ..., columnN) values (values1, values2, ..., valuesN);


>

// values 值的个数需要与列数相同
inset into table_name (values1, values2, ..., valuesN);


select 语句

获取所需要查询的表的字段:

select column1, column2, ..., columnN from table_name;


获取所有字段值:

select * from table_name;


运算符

算术运算符

比较运算符

逻辑运算符

位运算符

>

SQLite 算数运算符

+:运算符两边相加

-:左减右

*:相乘

/:左除右

%:取模;左除右得到的余数

比较运算符

==、= :检查操作数的值是否相等。

!=、<> :检查操作数的值是否不相等。

> :左是否大于右。

< :做是否小于右。

>= :左是否大于等于右。

<= :左是否小于等于右。

!< :左是否不小于右。

!> :左是否不大于右。

逻辑运算符

AND - AND 允许在一个 where 语句中有多个条件存在。条件与

BETWEEN - 用于在给定最小值和最大值范围内搜索值

EXISTS - 用于在满足一定条件的指定表中搜索行的存在

IN - 用于把某个与一系列的值进行比较

NOT IN - IN 的对立,某个值与一系列值之间的否定比较

LIKE - 用于把某个值与使用通配符运算符的相似值进行比较

GLOB - 用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。

NOT - 所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。

OR - 用于结合一个 SQL 语句的 WHERE 子句中的多个条件。条件或

IS NULL - 用于把某个值与 NULL 值进行比较。

IS - 与 = 相似

IS NOT - 与 != 相似

|| - 连接两个不同的字符串,得到一个新的字符串

UNIQUE - 搜索指定表中的每一行,确保唯一性(无重复)

位运算符

& - 按位进行与运算

| - 按位进行或运算

~ - 补码运算符。具有”翻转”位效应,即0变成1,1变成0。

<< - 左移运算符。左操作数的值向左移动右操作数指定的位数。

>> - 右移运算符。左操作数的值向右移动指定的位数。

SQLite 表达式

布尔表达式

SQLite 的布尔表达式在匹配单个值的基础上获取数据。

SELECT column1, column2, columnN
FROM table_name
WHERE SINGLE VALUE MATCHTING EXPRESSION;


数值表达式

这些表达式用来执行查询中的任何数学运算。

SELECT numerical_expression as  OPERATION_NAME
[FROM table_name WHERE CONDITION] ;


这里,numerical_expression 用于数学表达式或任何公式。有几个内置的函数,比如 avg()、sum()、count(),等等,执行被称为对一个表或一个特定的表列的汇总数据计算。

select count(*) as "records" from table_name;


日期表达式

日期表达式返回当前系统日期和时间值,这些表达式将会用于各种数据操作。

select current_timestamp;


where 子句

SQLite的 where 子句用于指定从一个表或多个表中获取数据的条件。如果满足给定的条件,即为真,则从表中返回特定的值。可以使用 where 子句来进行数据过滤。where 子句不仅可以在 select 语句中使用,在 update、delete 等语句中也可以使用。

语法

select column1, column2, ..., columnN from table_name where (codition);


AND/OR 运算符

SQLite 的 AND 和 OR 运算符用于编译多个条件来缩小在 SQLite 语句中所选的数据。这两个运算符被称为连接运算符。即指的是与和或的运算。

Update 语句

SQLite 的 UPDATE 查询用于修改表中已有的记录。可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。

语法

带有 where 子句的 update 查询。

update table_name set column1 = value1, column2 = value2, ..., columnN = valueN where (condition);


即:把条件成立的对应数据的字段设置为 value1, value2, …, valueN。如果想修改表中某个字段的所有值,则不需要 where 子句。

delete 语句

用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。也可以结合 and 或者 or 运算符使用执行多行删除。

delete from table_name where (condition);


like 子句

用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。这里有两个通配符与 LIKE 运算符一起使用:

百分号 (%)

下划线 (_)

百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。如:

表示已“xxx”开头的所有记录。

select from table_name where column like 'xxx%'


表示包含“xxx”的记录。

select from table_name where column like '%xxx%'


表示“xxx”后只跟一个字符或数字的记录。

select from table_name where column like 'xxx_'


glob 子句

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

星号(*)

问号(?)

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

limit 子句

limit 子句用于限制由 select 语句返回的数据数量。

语法

select column1, column2... from table_name limit [number of rows]


亦可以和 offset 子句一起使用:

select column1, column2,... from table_name limit [number of rows] offset [row number]


表示将返回从下一行开始直到给定的 offset 为止的所有行。也就是说,查询出来的数据从 offset 开始下一条数据开始,查出给定数量的数据。即将查询的数据做了 offset 设定的偏移量。

order by

用来基于一个或多个列按升序或降序顺序排列数据。

语法

select column-list from table_name [where condition] [order by column1, column2, ...] [ASC|DESC]


可以在 ORDER BY 子句中使用多个列。确保使用的排序列在列清单中。

升序排列:ASC;降序排列:DESC

group by

group by 子句用于与 select 语句一起使用,来对相同数据进行分组。在 select 语句中,group by 子句放在 where 子句之后,放在 order by 子句之前。

语法

select column-list from table_name where [conditions] group by column1, column2,... order by column1, column2, ... [ASC|DESC]


可以在 GROUP BY 子句中使用多个列。确保您使用的分组列在列清单中。即:把条件查询得出的结果按照指定列分组并按照指定列升序或降序排列。

having 子句

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

语法

select from where group by having order by


在一个查询中,HAVING 子句必须放在 GROUP BY 子句之后,必须放在 ORDER BY 子句之前。

select column1, column2... from table1, table2, where [condition] group by column1,
column2 having [condition] order by column1, comlumn2


distinct 关键字

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

语法

select distinct column1, column2,... from table_name where [condition]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sqlite android-sqlite