创建唯一键索引
sqlite> create unique indexidx_unaddr on test(addr);
测试是不是真的唯一约束,添加addr字段值都为’a1’,第一次成功,第二次失败,查看执行结果,如下:
sqlite> insert into testselect 4,'a','a1';
sqlite> insert into testselect 5,'a','a1';
Error: UNIQUE constraint failed:test.addr
sqlite>
报错了,验证了,唯一约束idx_undaddr已经生效。
PS: Sqlite不支持聚集索引,android默认需要一个_id字段,这保证了你插入的数据会按“_id”的整数顺序插入,这个integer类型的主键就会扮演和聚集索引一样的角色。所以不要再在对于声明为:INTEGER PRIMARY KEY的主键上创建索引。
4.4,自增主键
CREATE TABLE test_auto_incre(idINT AUTO_INCREMENT,msg_to VARCHAR(20), TYPE CHAR(1), create_date DATE,PRIMARYKEY (id) );
4.5 查看所有表结构
方法一:
sqlite> .schema
CREATE TABLE "test"(idinteger primary key, username text default ‘’, addr varchar(60) not null default'');
CREATE INDEX idx_username ontest(username);
CREATE INDEX idx_addr ontest(addr,username);
CREATE UNIQUE INDEX idx_unaddron test(addr);
CREATE TABLE test_auto_incre(idINT AUTO_INCREMENT,msg_to VARCHAR(20), TYPE CHAR(1), create_date DATE,PRIMARYKEY (id) );
sqlite>
方法二:
sqlite> .header on –加上显示的表头列名
sqlite> select * fromsqlite_master;
type|name|tbl_name|rootpage|sql
table|test|test|4|CREATE TABLE"test"(id integer primary key, username text default ‘’, addrvarchar(60) not null default '')
index|idx_username|test|2|CREATEINDEX idx_username on test(username)
index|idx_addr|test|5|CREATEINDEX idx_addr on test(addr,username)
index|idx_unaddr|test|6|CREATEUNIQUE INDEX idx_unaddr on test(addr)
table|test_auto_incre|test_auto_incre|7|CREATETABLE test_auto_incre(id INT AUTO_INCREMENT,msg_to VARCHAR(20), TYPE CHAR(1),create_date DATE,PRIMARY KEY (id) )
index|sqlite_autoindex_test_auto_incre_1|test_auto_incre|8|
sqlite>
4.6 查看当前库下所有的表名字
sqlite> .table
test test_auto_incre
sqlite> .tables
test test_auto_incre
4.7 查看某一张表的结构,比如test_auto_incre表:
方法一:查询系统表
select * from sqlite_masterwhere name="test_auto_incre";
sqlite> .header on –加上显示的表头列名
sqlite> select * fromsqlite_master where name="test_auto_incre";
type|name|tbl_name|rootpage|sql
table|test_auto_incre|test_auto_incre|7|CREATETABLE test_auto_incre(id INT AUTO_INCREMENT,msg_to VARCHAR(20), TYPE CHAR(1),create_date DATE,PRIMARY KEY (id) )
sqlite>
方法二:使用.schema命令
sqlite> .schematest_auto_incre
CREATE TABLE test_auto_incre(idINT AUTO_INCREMENT,msg_to VARCHAR(20), TYPE CHAR(1), create_date DATE,PRIMARYKEY (id) );
sqlite>
sqlite> .schema test
CREATE TABLE "test"(idinteger primary key, username text default ‘’, addr varchar(60) not nulldefault '');
CREATE INDEX idx_username ontest(username);
CREATE INDEX idx_addr ontest(addr,username);
CREATE UNIQUE INDEX idx_unaddron test(addr);
sqlite>
4.8 创建虚拟表
CREATE VIRTUAL TABLEfts_message_table_0_tmp USING fts3(usernameid INTEGER DEFAULT 0, MesLocalIDINTEGER, CreateTime INTEGER DEFAULT 0, Message TEXT, reservedInt INTEGERDEFAULT 0, reservedText TEXT, PRIMARYKEY(usernameid,MesLocalID,CreateTime));
4.9 创建视图
CREATE TABLE test(id INTAUTO_INCREMENT,msg_to VARCHAR(20), TYPE CHAR(1), create_date DATE,PRIMARY KEY(id) );
INSERT INTOtest(msg_to,TYPE,create_date) SELECT 'm1','a','2014-08-18 12:12:23';
INSERT INTOtest(msg_to,TYPE,create_date) SELECT 'm1','b','2014-08-18 13:12:23';
INSERT INTOtest(msg_to,TYPE,create_date) SELECT 'm1','c','2014-08-18 10:12:23';
INSERT INTOtest(msg_to,TYPE,create_d