学习SQLite之路(四)
参考: http://www.runoob.com/sqlite/sqlite-tutorial.html 1. SQLite alter命令:不通过执行一个完整的转储和数据的重载来修改已有的表。 可以使用 ALTER TABLE 语句重命名表,使用 ALTER TABLE 语句还可以在已有的表中添加额外的列。 在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作(在其他数据库中可以改变表中列的数据类型,删除表中的列) (1)基本语法: 用来重命名已有的表的ALTER TABLE的基本语法如下: ALTER TABLE database_name.table_name RENAME TO new_table_name;
用来在已有的表中添加一个新的列的ALTER TABLE的基本语法如下: ALTER TABLE database_name.table_name ADD COLUMN column_def...;
(2)实例: alter_company.txt alter table company rename to old_company; -- 重命名表 alter table old_company add column sex char(1);-- 增加新列,新添加的列是以 NULL 值来填充的 2、SQLite Truncate Table:在 SQLite 中,并没有 TRUNCATE TABLE 命令。 但可以使用 SQLite 的DELETE命令从已有的表中删除全部的数据,但建议使用 DROP TABLE 命令删除整个表,然后再重新创建一遍。 (1):基本语法: DELETE 命令的基本语法如下: sqlite> DELETE FROM table_name;
DROP TABLE 的基本语法如下: sqlite> DROP TABLE table_name;
如果您使用 DELETE TABLE 命令删除所有记录,建议使用vacuum命令清除未使用的空间。 (2)实例: SQLite> DELETE FROM COMPANY; SQLite> VACUUM;
现在,COMPANY 表中的记录完全被删除,使用 SELECT 语句将没有任何输出。 3. SQLite 视图(view):是通过相关的名称存储在数据库中的一个 SQLite 语句。 视图(View)实际上是一个以预定义的 SQLite 查询形式存在的表的组合。 视图(View)可以包含一个表的所有行或从一个或多个表选定行。视图(View)可以从一个或多个表创建,这取决于要创建视图的 SQLite 查询。 (1)视图(View)是一种虚表,允许用户实现以下几点:
SQLite 视图是只读的,因此可能无法在视图上执行 DELETE、INSERT 或 UPDATE 语句。但是可以在视图上创建一个触发器,当尝试 DELETE、INSERT 或 UPDATE 视图时触发,需要做的动作在触发器内容中定义。 (2)创建视图: CREATE [TEMP | TEMPORARY] VIEW view_name AS SELECT column1, column2..... FROM table_name WHERE [condition];
(3)删除视图: DROP VIEW view_name;
(4)实例: view.txt create view company_view as select NAME,ID,SALARY from company where SALARY>2000; 删除: drop view company_view; 4、SQLite 事务(Transaction):一个对数据库执行工作单元。(就是一堆操作的集合) 是以逻辑顺序完成的工作单位或序列,可以是由用户手动操作完成,也可以是由某种数据库程序自动完成。 您可以把许多的 SQLite 查询联合成一组,把所有这些放在一起作为事务的一部分进行执行。 (1)事务的属性:(ACID)
(2)事务控制(语法):
(3)begin命令:BEGIN TRANSACTION 命令或简单的 BEGIN 命令来启动。此类事务通常会持续执行下去,直到遇到下一个 COMMIT 或 ROLLBACK 命令。不过在数据库关闭或发生错误时,事务处理也会回滚。 以下是启动一个事务的简单语法: BEGIN; or BEGIN TRANSACTION;
commit命令:COMMIT 命令是用于把事务调用的更改保存到数据库中的事务命令。 COMMIT 命令把自上次 COMMIT 或 ROLLBACK 命令以来的所有事务保存到数据库。 基本语法: COMMIT; or END TRANSACTION;
rollback命令:ROLLBACK 命令是用于撤消尚未保存到数据库的事务的事务命令。 ROLLBACK 命令只能用于撤销自上次发出 COMMIT 或 ROLLBACK 命令以来的事务 语法: rollback; (4)实例:commit.txt 这里提交了,已经做了修改 select * from company; (5)实例2: rollback.txt select * from company; 5、SQLite 子查询:在另一个 SQLite 查询内嵌入在 WHERE 子句中的查询。 使用子查询返回的数据将被用在主查询中作为条件,以进一步限制要检索的数据。 子查询可以与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用,可伴随着使用运算符如 =、<、>、>=、<=、IN、BETWEEN 等。 (1)几个原则:
(2)子查询中的select子句: subquery_select.txt SELECT column_name [, column_name ] FROM table1 [, table2 ] WHERE column_name OPERATOR (SELECT column_name [, table2 ] [WHERE]);
-- ID 大于4的人中找工资大于4000的 select * from (select * from company where ID > 4) where SALARY > 4000; -- ID 在 工资大于4000的范围内 select * from company where ID IN (select ID from company where SALARY > 4000); (3)子查询中的insert子句:subquery_insert.txt INSERT INTO table_name [ (column1 [, column2 ]) ] SELECT [ *|column1 [, column2 ] FROM table1 [, table2 ] [ WHERE VALUE OPERATOR ]
create table company_bak( -- 建一个和company一样的表 ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL ); -- 利用查询查来的ID,再往一张一样的表中插入数据 insert into company_bak select * from company where ID in(select ID from company); select * from company_bak; (4)子查询中的update子句:subquery_update.txt UPDATE table
SET column_name = new_value [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ]
-- 大于30岁的人涨1.5倍工资, (5)子查询中的delete子句:subquery_delete.txt DELETE FROM TABLE_NAME
[ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ]
-- 删除年龄大于30的客户记录 (6)运行效果图: 省略 6、SQLite Autoincrement(自动递增):AUTOINCREMENT是一个关键字,用于表中的字段值自动递增。 在创建表时在特定的列名称上使用AUTOINCREMENT关键字实现该字段值的自动增加。 关键字AUTOINCREMENT只能用于整型(INTEGER)字段。 (1)语法: CREATE TABLE table_name( column1 INTEGER AUTOINCREMENT, column2 datatype, column3 datatype, ..... columnN datatype, );
(2)实例: autoincrement.txt create table autoincrement_test ( ID INTEGER PRIMARY KEY AUTOINCREMENT,-ID 是自动递增的 NAME TEXT NOT NULL, AGE INT NOT NULL ); insert into autoincrement_test(NAME,AGE) values('Paul',3); -- 插入几条数据 insert into autoincrement_test(NAME,AGE) values('Kobe',24); insert into autoincrement_test(NAME,AGE) values('KD',35); insert into autoincrement_test(NAME,AGE) values('MJ',23); select * from autoincrement_test; 7、SQLite Explain(解释):在 SQLite 语句之前,可以使用 "EXPLAIN" 关键字或 "EXPLAIN QUERY PLAN" 短语,用于描述表的细节。 如果省略了 EXPLAIN 关键字或短语,任何的修改都会引起 SQLite 语句的查询行为,并返回有关 SQLite 语句如何操作的信息。
(1)语法: EXPLAIN语法: EXPLAIN [SQLite Query]
EXPLAIN QUERY PLAN语法: EXPLAIN QUERY PLAN [SQLite Query]
(2)实例:explain.txt explain select * from company where SALARY > 2000; 结果是一大堆什么鬼东西,我看不懂,有兴趣可以试试。 (3)说明:这个东西不太理解,先放一下,写完这些再说。 8、SQLite 时间日期: (1)支持下面5个时间和日期函数: 函数 说明 |
- 使用C#.NET进行字符串操作
- cJSON库(构建json与解析json字符串)-c语言
- Flex SDK 4.9找不到基类BitmapAsset
- 正则表达式 – gsub()中超过9个反向引用
- uploadify"ID SWFUpload_0 is already in use...
- ruby-on-rails – 需要来自rails的数据连接表,has_many:th
- ruby-on-rails – 如何使用rails和mongoid通过“count”关联
- ruby-on-rails – Rails:在嵌套表单中操作连接表
- 微信APP支付统一下单、加签、map转xml,java代码
- 为 VB.NET 的类增加自定义事件