SQLite入门之四表的增删?查 (四)

2015-07-24 11:58:01 · 作者: · 浏览: 39
uston 10000.0 3 Teddy 23 Norway 20000.0 6 Kim 22 South-Hall 45000.0 // sqlite> SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000); ID NAME AGE ADDRESS SALARY 1 Paul 32 California 20000.0 sqlite> SELECT * FROM COMPANY WHERE AGE < (SELECT AGE FROM COMPANY WHERE SALARY > 65000); ID NAME AGE ADDRESS SALARY 7 James 24 Houston 10000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 6 Kim 22 South-Hall 45000.0

4.6.4 排序、分组、去重、时间

//通过内置函数查看一共有多少条数据
sqlite> SELECT COUNT(*) AS "RECORDS" FROM COMPANY;
RECORDS
7

//显示前4条
sqlite> SELECT * FROM COMPANY LIMIT 4;
ID  NAME    AGE ADDRESS SALARY
1   Paul    32  California  20000.0
7   James   24  Houston 10000.0
2   Allen   25  Texas   15000.0
3   Teddy   23  Norway  20000.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

//按SALARY升序排序
sqlite> SELECT * FROM COMPANY ORDER BY SALARY DESC;
ID  NAME    AGE ADDRESS SALARY
5   David   27  Texas   85000.0
4   Mark    25  Rich-Mond   65000.0
6   Kim 22  South-Hall  45000.0
1   Paul    32  California  20000.0
3   Teddy   23  Norway  20000.0
2   Allen   25  Texas   15000.0
7   James   24  Houston 10000.0

//按NAME和SALARY升序排序
sqlite> SELECT * FROM COMPANY ORDER BY AGE,SALARY DESC;
ID  NAME    AGE ADDRESS SALARY
6   Kim 22  South-Hall  45000.0
3   Teddy   23  Norway  20000.0
7   James   24  Houston 10000.0
4   Mark    25  Rich-Mond   65000.0
2   Allen   25  Texas   15000.0
5   David   27  Texas   85000.0
1   Paul    32  California  20000.0

// GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。

// 查询某个人的工资总数
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 // GROUP BY 和 ORDER BY一起用 sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME DESC; NAME SUM(SALARY) Teddy 20000.0 Paul 20000.0 Mark 65000.0 Kim 45000.0 James 10000.0 David 85000.0 Allen 15000.0 //HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。 //WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。 //在一个查询中,HAVING 子句必须放在 GROUP BY 子句之后,必须放在 ORDER BY 子句之前 //查询所有数据 qlite> SELECT * FROM COMPANY; ID NAME AGE ADDRESS SALARY 1 Paul 32 California 20000.0 7 James 24 Houston 10000.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 //查询AGE,并去重 sqlite> SELECT DISTINCT AGE FROM COMPANY; AGE 32 24 25 23 27 22 日期 & 时间 //把header关掉了 sqlite> . header off sqlite> SELECT date('now'); 2014-02-27 sqlite> SELECT datetime(1092941466, 'unixepoch'); 2004-08-19 18:51:06 sqlite> SELECT TIME('NOW'); 07:47:25?

4.6.5. 常用函数

//表行数
sqlite> SELECT count(*) FROM COMPANY;
7

//最大值
sqlite> SELECT max(salary) FROM COMPANY;
85000.0

//最小值 
sqlite> SELECT min(salary) FROM COMPANY;
10000.0

//平均值
sqlite> SELECT avg(salary) FROM COMPANY;
37142.8571428572
sqlite> SELECT sum(salary) FROM COMPANY;
260000.0

//转大写
sqlite> SELECT upper(name) FROM COMPANY;
PAUL
JAMES
ALLEN
TEDDY
MARK
DAVID
KIM

//转小写
sqlite> SELECT lower(name) FROM COMPANY;
paul
james
allen
teddy
mark
david
kim

//长度
sqlite> SELECT name, length(name) FR