sqlite3命令方式操作大全
SQLite3命令操作大全 SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令。本文档提供一个样使用sqlite3的简要说明.一.qlite3一些常用Sql语句操作创建表:create table 表名(元素名 类型,); 删除表:drop table 表名; 插入数据:insert into 表名 values(, , ,) ; 创建索引:create unique index 索引名on 表名(col.); 删除索引:drop index 索引名(索引是不可更改的,想更改必须删除重新建)删除数据:delete from 表名; 更新数据:update 表名 set 字段=修改后的内容 where 条件; 增加一个列:Alter table 表名 add column 字段 数据类型; 选择查询: select 字段(以”,”隔开) from 表名 where 条件; 日期和时间: Select datetime('now') 日期: select date('now'); 时间: select time('now'); 总数:select count(*) from table1;求和:select sum(field1) from table1;平均:select avg(field1) from table1;最大:select max(field1) from table1;最小:select min(field1) from table1;排序:select 字段 from table1 order by 字段(desc或asc) ;(降序或升序)分组:select 字段 from table1 group by 字段,字段 ;限制输出:select 字段 from table1 limit x offset y; = select 字段 from table1 limit y , x;(备注:跳过y行,取x行数据)(操作仍待完善)SQLite支持哪些数据类型些?NULL 值为NULLINTEGER 值为带符号的整型,根据类别用1,2,3,4,6,8字节存储REAL 值为浮点型,8字节存储TEXT 值为text字符串,使用数据库编码(UTF-8, UTF-16BE or UTF-16-LE)存储BLOB 值为二进制数据,具体看实际输入但实际上,sqlite3也接受如下的数据类型:smallint 16 位元的整数interger 32 位元的整数decimal(p,s) p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值 ,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。float 32位元的实数。double 64位元的实数。char(n) n 长度的字串,n不能超过 254。varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。graphic(n) 和 char(n) 一样,不过其单位是两个字元 double-bytes, n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。date 包含了 年份、月份、日期。time 包含了 小时、分钟、秒。timestamp 包含了 年、月、日、时、分、秒、千分之一秒。如果将声明表的一列设置为 INTEGER PRIMARY KEY,则具有:1每当你在该列上插入一NULL值时, NULL自动被转换为一个比该列中最大值大1的一个整数;2如果表是空的, 将会是1;算术函数abs(X)返回给定数字表达式的绝对值。max(X,Y,.)返回表达式的最大值。min(X,Y,.)返回表达式的最小值。random(*)返回随机数。round(X,Y)返回数字表达式并四舍五入为指定的长度或精度。字符处理函数length(X)返回给定字符串表达式的字符个数。lower(X)将大写字符数据转换为小写字符数据后返回字符表达式。upper(X)返回将小写字符数据转换为大写的字符表达式。substr(X,Y,Z)返回表达式的一部分。randstr()quote(A)like(A,B)确定给定的字符串是否与指定的模式匹配。glob(A,B)条件判断函数coalesce(X,Y,.)ifnull(X,Y)nullif(X,Y)集合函数avg(X)返回组中值的平均值。count(X)返回组中项目的数量。max(X)返回组中值的最大值。min(X)返回组中值的最小值。sum(X)返回表达式中所有值的和。其他函数typeof(X)返回数据的类型。last_insert_rowid()返回最后插入的数据的 ID 。sqlite_version(*)返回 SQLite 的版本。change_count()返回受上一语句影响的行数。last_statement_change_count()二.有关事务的操作(成批操作的时候,启动事务,比不启动事务快n倍)开始事物处理BEGIN TRANSACTION;.进行对数据库操作.事物提交COMMIT;具体事例如下:假设有一个 t1 表,其中有 "a", "b", "c" 三列, 如果要删除列 c ,以下过程描述如何做:BEGIN TRANSACTION;CREATE TEMPORARY TABLE t1_backup(a,b);INSERT INTO t1_backup SELECT a,b FROM t1;DROP TABLE t1;CREATE TABLE t1(a,b);INSERT INTO t1 SELECT a,b FROM t1_backup;DROP TABLE t1_backup;COMMIT;事物三.启动sqlite3程序仅仅需要敲入带有SQLite数据库名字的"sqlite3"命令即可。如果文件不存在,则创建一个新的(数据库)文件。然后 sqlite3程序将提示你输入SQL。敲入SQL语句(以分号“;”结束),敲回车键之后,SQL语句就会执行。 例如,创建一个包含一个表"tb11"名字为"ex1"的SQLite数据库,你可以这样做:数据库、表的建立,记录的添加、查询、修改和删除F:>sqlite3 database.dbsqlite> create table admin(username text,age integer);sqlite> insert into admin values('kuang',25);sqlite> select * from admin;sqlite> update admin set username='kk',age=24 where username='kuang' and age=25;sqlite> delete from admin where username='kk'注:每条sql语句后必须以""号结尾!$sqlite3 ex1Enter ".help" for instructionssqlite> create table tbl1(one varchar(10), two smallint);sqlite> insert into tbl1 values('hello!', 10);sqlite> insert into tbl1 values('goodbye', 20);sqlite> select * from tbl1;hello!|10goodbye|20sqlite> 你可以通过敲你所用系统的文件结束符(通常是Ctrl + D)或者中断字符(通常是Ctrl + C)。来终止sqlite3程序。确定你在每个SQL语句结束敲入分号!sqlite3程序通过查找分号来决定一个SQL语句的结束。如果你省略分 号,sqlite3将给你一个连续的命令提示符并等你给当前的SQL命令添加更多的文字。这个特点让你输入多行的多个SQL语句,例如:sqlite> create table tbl2( .> f1 varchar(30) primary key, .> f2 text, .> f3 real .> );sqlite>四.题外话:查询SQLITE_MASTER表 SQLite数据库的框架被保存在一个名叫"sqlite_master"的特殊的表中。你可以像查询其它表一样通过执行“SELECT”查询这个特殊的表。例如:$ sqlite3 ex1Enter ".help" for instructionssqlite> select * from sqlite_master; type = table name = tbl1tbl_name = tbl1rootpage = 3 sql = create table tbl1(one varchar(10), two smallint)sqlite> 但你不能在sqlite_master表中执行诸如DROP TABLE, UPDATE, INSERT 或者DELETE命令。sqlite_master表在你创建、删除和索引数据库时自动更新这个表。你不能手工更改sqlite_master表。 TEMPORARY表的结构没有存储在"sqlite_master"表中,由于TEMPORARY表对应用是不可见的,而不是应用程序创建这个表。 TEMPORARY表结构被存储在另外一个名叫"sqlite_temp_master"的特定的表中。"sqlite_temp_master"表是临 时表自身。五.sqlite3的特殊命令 大多数候,sqlite3读入输入行,并把它们传递到SQLite库中去运行。但是如果输入行以一个点(“.”)开始,那么这行将被sqlite3程序自 己截取并解释。这些“点命令”通常被用来改变查询输出的格式,或者执行鞭个预封包(预定义prepackaged)的查询语句。你可以在任何时候输入“.help”,列出可用的点命令。例如sqlite> .help.bail ON|OFF Stop after hitting an error. Default OFF(遇到错误时不再继续, 默认为OFF).databases List names and files of attached databases(列出附加到数据库的数据库和文件).dump ?TABLE? . Dump the database in an SQL text format(保存表到SQL格式的文件中, 没有指表名, 则保存所有. 如果要保存到磁盘上需要结合 .output 命令.)