目录
时间函数
1,时间查询函数菜鸟教程
2,实例:
计算当年 10 月的第一个星期二的日期:
常用函数
数字函数
字符函数
实例:
sqlite_version 函数
Autoincrement(自动递增)
子查询
select
form
exist
in(包括多行多列子查询)
Having
集合链接查询
并集
Unions 子句(去重)
UNION ALL 子句(不去重)
交集
INTERSECT
差集(minus不能使用)
序号 | 函数 | 实例 |
---|---|---|
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, ...) | 这将根据第一个参数指定的格式字符串返回格式化的日期。具体格式见下边讲解。 |
计算当前日期
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 |
计算今年第一个月在往后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 库的版本。下面是实例:
SELECT sqlite_version() AS 'SQLite Version';
SQLite Version
--------------
3.6.20
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 column1, column2, columnN FROM table_name;
SELECT * FROM table_name;
SELECT * FROM table_name;
select * from dd1 where exists(select bh from dd2 where dd1.bh=dd2.bh)
select * from tablename where userid in('张三','李四','王五');
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;
SQLite的 UNION 子句/运算符用于合并两个或多个 SELECT 语句的结果,不返回任何重复的行。
为了使用 UNION,每个 SELECT 被选择的列数必须是相同的,相同数目的列表达式,相同的数据类型,并确保它们有相同的顺序,但它们不必具有相同的长度
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION ALL 运算符用于结合两个 SELECT 语句的结果,包括重复行。
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION ALL
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
用查询语句将这两个表的MODEL列全部输出
(SELECT MODEL
FROM PRODUCT)
INTERSECT
(SELECT MODEL
FROM PC)
但是我们可以用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)