SQLite学习(二)
来源:互联网 发布:年轻的程序员 编辑:程序博客网 时间:2024/05/29 10:19
UNION子句
SQLite的UNION子句、运算符用于合并两个或多个SELECT语句的结果,不返回任何重复的行,因此每个SELECT被选择的列数必须相同,相同数目的列表达式,相同的数据类型,并确保它们有相同的顺序,但它们不必具有相同长度。
UNION 的基本语法:
SELECT column1 [, column2 ]FROM table1 [, table2 ][WHERE condition]UNIONSELECT 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 Billing2 Allen Engineerin7 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 ALLSELECT 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 12 Engineering 23 Finance 74 Engineering 35 Finance 46 Engineering 57 Finance 6
结果:
EMP_ID NAME DEPT---------- -------------------- ----------1 Paul IT Billing2 Allen Engineerin3 Teddy Engineerin4 Mark Finance5 David Engineerin6 Kim Finance7 James Finance1 Paul IT Billing2 Allen Engineerin3 Teddy Engineerin4 Mark Finance5 David Engineerin6 Kim Finance7 James Finance
SQLite别名
定义别名即是将表或列重命名为一个临时的名字,在数据库中实际名称不会改变
表别名:
语法
SELECT column1, column2....FROM table_name AS alias_nameWHERE [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 Billing2 Allen 25 Engineerin7 James 24 Finance
列别名
语法:
SELECT column_name AS alias_nameFROM table_nameWHERE [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 Billing2 Allen 25 Engineerin7 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> .tableDEPARTMENT OLD_COMPANY
添加列
语法:
ALTER TABLE database_name.table_name ADD COLUMN column_def...;
实例:
原来的表:
ID NAME AGE ADDRESS SALARY---------- ---------- ---------- ---------- ----------1 Paul 32 California 20000.02 Allen 25 Texas 15000.03 Teddy 23 Norway 20000.04 Mark 25 Rich-Mond 65000.05 David 27 Texas 85000.06 Kim 22 South-Hall 45000.07 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.02 Allen 25 Texas 15000.03 Teddy 23 Norway 20000.04 Mark 25 Rich-Mond 65000.05 David 27 Texas 85000.06 Kim 22 South-Hall 45000.07 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后使用。
阅读全文
1 0
- sqlite 学习(二)
- SQLite学习(二)
- SQLite学习笔记(二)
- SQLite学习笔记(二)
- Sqlite全面学习(二)
- SQLite全面学习(二)
- Sqlite全面学习(二)
- Sqlite全面学习(二)
- Sqlite全面学习(二)
- Sqlite全面学习(二)
- Sqlite学习(二) sqlite操作入门(命令行操作)
- 学习SQLite之路(二)
- SQLite学习(二) - SQLite逻辑结构
- SQLite学习笔记之二
- Android之SQLite 学习二
- SQLite学习笔记之二
- Android学习笔记(四二):SQLite、ListView、ContextMenu
- Android学习笔记(四二):SQLite、ListView、ContextMenu
- React细节
- C的抽卡小游戏
- TF-IDF特征提取 用sklearn提取tfidf特征
- Python assert 断言
- android 多点触摸
- SQLite学习(二)
- java 多线程访问共享变量不安全因素分析
- SLAM学习——李群与李代数
- js代码规范
- HDU
- 揭开跨域的面纱(下)
- 期末算法作业
- 总结
- 跟我一起学C语言(第五天)