SQLite学习笔记之二

一.创建数据库

sqlite3 test.db  不存在则建立 存在则打开能够,能够指定目录好比sqlite3 d:/test/test.db
html

C:\Users\Administrator>g:
进入到含有要使用的sqlite3.exe的目录否则会用环境变量里的sqlite3.exe,本机中有两个 分别是版本3.7.11 和版本3.8.2
G:\>cd G:\sqlite_file 本目录里没有指定的sqlite3.exe

G:\sqlite_file>sqlite3 test.db  生成test数据库
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>  
若是进入后sqlite>后什么也不作 则不会生成数据库 若是建表或者执行某些命令好比.database则会在当前目录中生成数据库
sqlite> .database 
seq  name             file
---  ---------------  -------------------------------------
0    main             G:\sqlite_file\test.db    在当前目录中生成了数据库
1    temp
sqlite>
使用指定的sqlite3.exe 在指定的目录下生成数据库 sql

G:\sqlite_file>cd G:\sqlite_file\sqlite-shell-win32-x86-3080200 本目录里有指定的sqlite3.exe
G:\sqlite_file\sqlite-shell-win32-x86-3080200>sqlite3 g:/sqlite_file/db/test.db
SQLite version 3.8.2 2013-12-06 14:53:30
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .table
sqlite>
在指定的目录(g:/sqlite_file/db/)里生成了数据库注意路径必须现存在否则没法建立 shell



二.双击sqlite-3_6_16目录下的程序sqlite3.exe,便可运行
三.退出
.exit  或者 .quit
四.SQLite支持以下5种数据类型
1.NULL:空值。
2.INTEGER:带符号的整型,具体取决有存入数字的范围大小。
3.REAL:浮点数字,存储为8-byte IEEE浮点数。
4.TEXT:字符串文本。
5.BLOB:二进制对象。
  五.联系人表格结构以下
create table contact(id integer primary key autoincrement,
lastname varchar(20),firstname varchar(20),
mobile varchar(30), telephone varchar(20),
email  varchar(30), company varchar(50),
department varchar(16),address varchar(80),
id1 interger,id2 integer, updatetime datetime);
 
六.查看数据库有哪些数据表
命令是:.tables
七.如何插入一条记录
insert into contact(lastname,firstname,mobile,telephone,updatetime) values('刘','畅','13910128132','010-81749136','2009-07-22');
八.查看数据表的结构
针对整个数据库
.schema
针对仅仅是contact联系人该表
.schema  contact 注意没有分号
  九.如何打开一个已经建立的数据库
sqlite3  test.db
十.如何解决以下问题
SQL error: near "sqlite3": syntax error
  SQL指令都是以分号(;)结尾的。若是遇到两个减号(--)则表明注解,sqlite3会略过去
  十一.如何创建索引
create index index_name on table_name(field_to_be_indexed);
十二.如何删除一张数据表
drop table contact;
  十三.查看当前的数据库
.database
  十四.如何删除一个数据表的数据
delete from contact;
十五.如何导入一个文件到某个表中
.import  文件路径  表名
注意这是非SQL语句,因此不加分号
.import e:/contact.txt contact
十六.如何设置文件字段的分隔符
.separator   “,”
十七.如何查看当前sqllite字段的分隔符是什么?
.show
十八.如何将查询结果导出到一个文件
第一步:.output a.txt
第二步:执行要导出的SQL语句

第三步:.output stdout 数据库

sqlite> .output g:/sqlite_file/db/test.txt   没有;号  导出文件到指定的目录
sqlite> select * from contact;                   查询要导出的数据
sqlite> .output stdout                           没有;号  
sqlite> delete from contact;                    为看效果清楚数据后在导入
sqlite> select * from contact;
sqlite> .import g:/sqlite_file/db/test.txt contact  没有;号
当导入的数据的分隔符可能和表中的分隔符不一样,
先用.show 看表中的分隔符若是不一样用.separator   “文件里的分隔符”替换。 

十九.SQL查询语句
select * from film order by year limit 10;
select * from film order by year desc limit 10;
select count(*) from film;
select * from film where starring like 'Jodie%'; 
select * from film where starring='Jodie Foster';
select title, year from film order by year desc limit 10;
select columns from table_name where expression;
最多见的用法,固然是倒出全部数据库的内容:
select * from film;
若是资料太多了,咱们或许会想限制笔数:
select * from film limit 10;
或是照着电影年份来排列:
select * from film order by year limit 10;
或是年份比较近的电影先列出来:
select * from film order by year desc limit 10;
或是咱们只想看电影名称跟年份:
select title, year from film order by year desc limit 10;
 查全部茱蒂佛斯特演过的电影:
 select * from film where starring='Jodie Foster';
 查全部演员名字开头叫茱蒂的电影('%' 符号即是 SQL 的万用字符):
 select * from film where starring like 'Jodie%';
 查全部演员名字以茱蒂开头、年份晚于1985年、年份晚的优先列出、最多十笔,只列出电影名称和年份:
 select title, year from film where starring like 'Jodie%' and year >= 1985 order by year desc limit 10;
 有时候咱们只想知道数据库一共有多少笔资料:
 select count(*) from film;
 有时候咱们只想知道1985年之后的电影有几部:
 select count(*) from film where year >= 1985;
 (进一步的各类组合,要去看SQL专书,不过你大概已经知道SQL为何这么流行了:这种语言容许你将各类查询条件组合在一块儿──而咱们还没提到「跨数据库的联合查询」呢!)
 如何更改或删除资料
了解select的用法很是重要,由于要在sqlite更改或删除一笔资料,也是靠一样的语法。
 例若有一笔资料的名字打错了:
update film set starring='Jodie Foster' where starring='Jodee Foster';
就会把主角字段里,被打成'Jodee Foster'的那笔(或多笔)资料,改回成Jodie Foster。
delete from film where year < 1970;
就会删除全部年代早于1970年(不含)的电影了。
其余sqlite的特别用法
sqlite能够在shell底下直接执行命令:
sqlite3 film.db "select * from film;"
输出 HTML 表格:
sqlite3 -html film.db "select * from film;"
将数据库「倒出来」:
sqlite3 film.db ".dump" > output.sql
利用输出的资料,创建一个如出一辙的数据库(加上以上指令,就是标准的SQL数据库备份了):
sqlite3 film.db < output.sql
在大量插入资料时,你可能会须要先打这个指令:
begin;
插入完资料后要记得打这个指令,资料才会写进数据库中:
commit;
express

G:\sqlite_file\sqlite-shell-win32-x86-3080200>sqlite3  g:/sqlite_file/db/test.db
 ".dump" > output.sql
output.sql文件内容
   
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE contact (id integer primary key autoincrement,lastname varchar(20),
firstname varchar(20),mobile varchar(30),telephone varchar(20),email varchar(30)
,company varchar(50),department varchar(16),address varchar(80),id1 integer,id2
integer ,updatetime datetime);
INSERT INTO "contact" VALUES(1,'刘','畅','13910128132','010-81749136','','','','','','','2009-07-22');
INSERT INTO "contact" VALUES(2,'刘','畅','13910128132','010-81749136','','','','','','','2009-07-22');
INSERT INTO "contact" VALUES(7,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO "contact" VALUES(8,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
INSERT INTO "contact" VALUES(9,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
DELETE FROM sqlite_sequence;
INSERT INTO "sqlite_sequence" VALUES('contact',9);
COMMIT;

二十.如何更新表中数据
update contact set lastname=’江南七怪’where id = 1028
update contact set lastname='江南七怪', mobile='13912345678' where id=1028;
二十一.如何一次插入多个数据
Insert into SAMPLE(PRJNUM, PRJNAME, EMYNUM, EMYNAME, SALCATEGORY, SALPACKAGE)
values(100001, 'TPMS', 200001, 'Johnson', 'A', 2000), (100001, 'TPMS', 200002,
'Christine', 'B', 3000), (100001, 'TPMS', 200003, 'Kevin', 'C', 4000), (100002,
'TCT', 200001, 'Johnson', 'A', 2000), (100002, 'TCT', 200004, 'Apple', 'B',
3000);


ui

相关文章
相关标签/搜索