SQLite学习(二)
2017-07-09 21:08
127 查看
UNION子句
SQLite的UNION子句、运算符用于合并两个或多个SELECT语句的结果,不返回任何重复的行,因此每个SELECT被选择的列数必须相同,相同数目的列表达式,相同的数据类型,并确保它们有相同的顺序,但它们不必具有相同长度。UNION 的基本语法:
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
实例:
表一
sqlite> select * from company; ID NAME AGE ADDRESS SALARY SEX ---------- ---------- ---------- ---------- ---------- ---------- 1 Paul 32 Califronia 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
表二:
sqlite> select * from department; ID DEPT EMP_ID ---------- ---------- ---------- 1 IT Billing 1 2 Engineerin 2 3 Finance 7
用UNION子句连接两个表:
sqlite> SELECT EMP_ID,NAME,DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID UNION SELECT EMP_ID,NAME,DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID; EMP_ID NAME DEPT ---------- ---------- ---------- David Kim Mark Teddy 1 Paul IT Billing 2 Allen Engineerin 7 James Finance
可见产生的结果,NAME取自表一,EMP_ID和DEPT取自表二,表二的EMP_ID是1,2,7,则表一的NAME也选1,2,7,以及对应的DEPT。因为我的两个表的列数不一样,所以呢结果不是很好看。
UNION ALL子句
与UNION一样,只是显示重复行。语法:
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition] UNION ALL SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
实例:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID UNION ALL SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
这里将表二内容改一下,为了方便,改成与表一相同的列数:
ID DEPT EMP_ID ---------- -------------------- ---------- 1 IT Billing 1 2 Engineering 2 3 Finance 7 4 Engineering 3 5 Finance 4 6 Engineering 5 7 Finance 6
结果:
EMP_ID NAME DEPT ---------- -------------------- ---------- 1 Paul IT Billing 2 Allen Engineerin 3 Teddy Engineerin 4 Mark Finance 5 David Engineerin 6 Kim Finance 7 James Finance 1 Paul IT Billing 2 Allen Engineerin 3 Teddy Engineerin 4 Mark Finance 5 David Engineerin 6 Kim Finance 7 James Finance
SQLite别名
定义别名即是将表或列重命名为一个临时的名字,在数据库中实际名称不会改变表别名:
语法SELECT column1, column2.... FROM table_name AS alias_name WHERE [condition];
实例(以开始的两个表为例):
select c.id,c.name,c.age,d.dept from company as C,department as D where C.ID = D.EMP_ID; ID NAME AGE DEPT ---------- ---------- ---------- ---------- 1 Paul 32 IT Billing 2 Allen 25 Engineerin 7 James 24 Finance
列别名
语法:SELECT column_name AS alias_name FROM table_name WHERE [condition];
实例:
sqlite> SELECT C.ID AS COMPANY_ID, C.NAME AS COMPANY_NAME, C.AGE, D.DEPT FROM COMPANY AS C,DEPARTMENT AS D WHERE C.ID = D.EMP_ID; COMPANY_ID COMPANY_NAME AGE DEPT ---------- ------------ ---------- ---------- 1 Paul 32 IT Billing 2 Allen 25 Engineerin 7 James 24 Finance
SQLite Alter命令
ALTER TABLE命令可以重命名表以及在已有表中添加列,但是不支持其他操作重命名表
语法ALTER TABLE database_name.table_name RENAME TO new_table_name;
实例:
sqlite> ALTER TABLE COMPANY RENAME TO OLD_COMPANY;
查看表:
sqlite> .table DEPARTMENT OLD_COMPANY
添加列
语法:ALTER TABLE database_name.table_name ADD COLUMN column_def...;
实例:
原来的表:
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
添加列:
sqlite> ALTER TABLE OLD_COMPANY ADD COLUMN SEX char(1); ID NAME AGE ADDRESS SALARY SEX ---------- ---------- ---------- ---------- ---------- --- 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
看结果可知添加了SEX列,但是新添加的列用NULL来填充。
DELETE和DROP TABLE
DELETE删除表中全部数据,DROP TABLE命令删除整个表,然后再重建一遍语法:
sqlite> DELETE FROM table_name;
sqlite> DROP TABLE table_name; sqlite> VACUUM;
VACUUM命令清除未使用的空间,一般在DROP TABLE后使用。
相关文章推荐
- 我们一起学习 sqlite 的应用
- 学习+翻译《SQL As Understood By SQLite》--INSERT
- sqlite的学习笔记转载
- 2010年SQLite学习笔记之二
- 2010年SQLite3学习笔记之四(性能优化篇)
- 2010年SQLite学习笔记之三
- SQLite学习笔记1
- 牛腩学习sqlite - 简记
- SQLite学习笔记(1)
- [转载]SQlite 常用函数学习笔记
- SQLite 学习笔记(一)
- Sqlite 源码学习 -- Utility Module
- Android(OPhone) 学习笔记 - SQLite
- Sqlite学习(二) sqlite操作入门(命令行操作)
- 学习+翻译《SQL As Understood By SQLite》--ON CONFLICT clause
- 学习SQlite-语法示例
- SQLITE 学习
- SQLite学习笔记2
- 传智播客学习之SQLite数据存储
- 2010年SQLite3学习笔记之五(进阶SQLite3中级编程知识线路图)