SQLite数据库

目录

时间函数

1,时间查询函数菜鸟教程

 2,实例:

计算当年 10 月的第一个星期二的日期:

常用函数

数字函数

字符函数

实例:

sqlite_version 函数

 Autoincrement(自动递增)

子查询

select

form

exist

in(包括多行多列子查询)

Having

集合链接查询

并集

Unions 子句(去重)

UNION ALL 子句(不去重)

交集

INTERSECT

差集(minus不能使用)


 


时间函数

1,时间查询函数菜鸟教程

序号 函数 实例
1 date(timestring, modifier, modifier, ...) 以 YYYY-MM-DD 格式返回日期。
2 time(timestring, modifier, modifier, ...) 以 HH:MM:SS 格式返回时间。
3 datetime(timestring, modifier, modifier, ...) 以 YYYY-MM-DD HH:MM:SS 格式返回。
4 julianday(timestring, modifier, modifier, ...) 这将返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数。
5 strftime(format, timestring, modifier, modifier, ...) 这将根据第一个参数指定的格式字符串返回格式化的日期。具体格式见下边讲解。
  1. date(timestring, modifier, modifier, ...)以 YYYY-MM-DD 格式返回日期。
  2. time(timestring, modifier, modifier, ...)以 HH:MM:SS 格式返回时间。
  3. datetime(timestring, modifier, modifier, ...)以 YYYY-MM-DD HH:MM:SS 格式返回。
  4. julianday(timestring, modifier, modifier, ...)这将返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数
  5. strftime(format, timestring, modifier, modifier, ...)这将根据第一个参数指定的格式字符串返回格式化的日期

 2,实例:

计算当前日期

SELECT date('now');

计算当前月份的最后一天:

意思是先从这个月开始,向下查下一个月份,然后查询下一个月份第一天的前一天,就是这个月的最后一天

SELECT date('now','start of month','+1 month','-1 day');

计算给定 UNIX 时间戳 1092941466 的日期和时间:

给定毫秒数,然后转换成具体日期

 SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

计算当前的 UNIX 时间戳:

SELECT strftime('%s','now');
1367926057

计算美国"独立宣言"签署以来的天数:

也可以看成是,给定一个日期,然后计算两者之间的时间间隔

SELECT julianday('now') - julianday('1776-07-04');
86504.4775830326

计算从 2004 年某一特定时刻以来的秒数:

用了格式化函数

SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572
替换 描述
%d 一月中的第几天,01-31
%f 带小数部分的秒,SS.SSS
%H 小时,00-23
%j 一年中的第几天,001-366
%J 儒略日数,DDDD.DDDD
%m 月,00-12
%M 分,00-59
%s 从 1970-01-01 算起的秒数
%S 秒,00-59
%w 一周中的第几天,0-6 (0 is Sunday)
%W 一年中的第几周,01-53
%Y 年,YYYY
%% % symbol

计算当年 10 月的第一个星期二的日期:

计算今年第一个月在往后9个月的第一个星期二

SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01

常用函数

数字函数

序号 函数 & 描述
1 SQLite COUNT 函数
SQLite COUNT 聚集函数是用来计算一个数据库表中的行数。
2 SQLite MAX 函数
SQLite MAX 聚合函数允许我们选择某列的最大值。
3 SQLite MIN 函数
SQLite MIN 聚合函数允许我们选择某列的最小值。
4 SQLite AVG 函数
SQLite AVG 聚合函数计算某列的平均值。
5 SQLite SUM 函数
SQLite SUM 聚合函数允许为一个数值列计算总和。
6 SQLite RANDOM 函数
SQLite RANDOM 函数返回一个介于 -9223372036854775808 和 +9223372036854775807 之间的伪随机整数。
7 SQLite ABS 函数
SQLite ABS 函数返回数值参数的绝对值。

字符函数

8 SQLite UPPER 函数
SQLite UPPER 函数把字符串转换为大写字母。
9 SQLite LOWER 函数
SQLite LOWER 函数把字符串转换为小写字母。
10 SQLite LENGTH 函数
SQLite LENGTH 函数返回字符串的长度。
11 SQLite sqlite_version 函数
SQLite sqlite_version 函数返回 SQLite 库的版本。

 

实例:

先给一张表

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

 COUNT 函数

SELECT count(*) FROM COMPANY;

 UPPER 函数把字符串转换为大写字母。下面是实例:

SELECT upper(name) FROM COMPANY;
upper(name)
-----------
PAUL
ALLEN
TEDDY
MARK
DAVID
KIM
JAMES

 LOWER 函数把字符串转换为小写字母。下面是实例:

SELECT lower(name) FROM COMPANY;
lower(name)
-----------
paul
allen
teddy
mark
david
kim
james

 LENGTH 函数返回字符串的长度。下面是实例:

 SELECT name, length(name) FROM COMPANY;
NAME        length(name)
----------  ------------
Paul        4
Allen       5
Teddy       5
Mark        4
David       5
Kim         3
James       5

sqlite_version 函数

 sqlite_version 函数返回 SQLite 库的版本。下面是实例:

SELECT sqlite_version() AS 'SQLite Version';
SQLite Version
--------------
3.6.20

 Autoincrement(自动递增)

SQLite 的 AUTOINCREMENT 是一个关键字,用于表中的字段值自动递增。我们可以在创建表时在特定的列名称上使用 AUTOINCREMENT 关键字实现该字段值的自动增加。

关键字 AUTOINCREMENT 只能用于整型(INTEGER)字段。所以我们在建表的时候,主键只能用integer

建表语句

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

插入语句

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( 'Paul', 32, 'California', 20000.00 );

子查询

select

SELECT column1, column2, columnN FROM table_name;
SELECT * FROM table_name;

form

SELECT * FROM table_name;

exist

select * from dd1 where exists(select bh from dd2 where dd1.bh=dd2.bh)

in(包括多行多列子查询)

select * from tablename where userid in('张三','李四','王五');

Having

HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。

WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2
SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2;

集合链接查询

并集

Unions 子句(去重)

SQLite的 UNION 子句/运算符用于合并两个或多个 SELECT 语句的结果,不返回任何重复的行。

为了使用 UNION,每个 SELECT 被选择的列数必须是相同的,相同数目的列表达式,相同的数据类型,并确保它们有相同的顺序,但它们不必具有相同的长度

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION ALL 子句(不去重)

UNION ALL 运算符用于结合两个 SELECT 语句的结果,包括重复行

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION ALL

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

交集

INTERSECT

用查询语句将这两个表的MODEL列全部输出

(SELECT MODEL
FROM PRODUCT)
INTERSECT
(SELECT MODEL
FROM PC)

差集(minus不能使用)

但是我们可以用exist来代替minus

查出A表中B表不存在的信息

select *
from A a
where not exists(select 1 from B b
where a.name=b.name and a.age=b.age)

 

你可能感兴趣的:(SQLite数据库)