SQLite基本操作

SQLite的基本语法和MySQL的类似。

1.数据库操作

1.1 创建/打开数据库

直接使用sqlite3 DatabaseName.db就可以打开数据库了,如果数据库不存在,则创建。

  • .help:查看帮助
  • .databases:显示数据库列表
  • .exit/.quit:退出
  • .header on: 显示表头
  • .mode column: 左对齐的列,长太时会被忽略

如例:

[root@guoke3915 ~]# sqlite3 guoke.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

1.2 附加数据库

用时需要用到多库操作的时候,需要附加数据库了。

attach database 'file_name' as 'database_name';

例如

sqlite> attach database 'test.db' as 'test';
sqlite> .database
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /root/guoke.db                                            
2    test             /root/test.db    

1.3 分离数据库

只能分离attach添加的数据库,不能分离main

detach database 'name';
  • name为.satabase时显示的name

例如

sqlite> detach database 'test';
sqlite> .database
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /root/guoke.db                                            

2. 表操作

2.1 创建表

create table 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。

create table database_name.table_name(
   column1 datatype  primary key(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);
  • 如果只有一个db时,database_name可以不写,多可以时为.satabase时显示的name

例如:

sqlite> create table test(
   ...> id int primary key not null,
   ...> name text not null,
   ...> age int not null
   ...> );

sqlite> .tables
test

2.2 删除表

drop table 语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范

drop table database_name.table_name;

例如:

sqlite> drop table test;
sqlite> .tables

2.3 增

insert into 语句用于向数据库的某个表中添加新的数据行。

insert into table_name [(column1, column2, column3,...columnn)]  
values (value1, value2, value3,...valuen);

如果是全值添加可以简单化为

insert into table_name values (value1,value2,value3,...valueN);

例如:

sqlite> insert into test values(1,'guoke',30);
sqlite> insert into test values(2,'abc',25);

2.4 查

select 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集

select column1, column2, columnn from table_name;

如果查所有的可以用

select * from table_name;

可以在后面使用where显示查询的过滤条件

例如:

sqlite> .header on
sqlite> .mode column
sqlite> select * from test;
id          name        age       
----------  ----------  ----------
1           guoke       30        
2           abc         25        

sqlite> select * from test where age>28;
id          name        age       
----------  ----------  ----------
1           guoke       30        

2.5 改

update 查询用于修改表中已有的记录。可以使用带有 where 子句的 update 查询来更新选定行,否则所有的行都会被更新。

update table_name
set column1 = value1, column2 = value2...., columnn = valueN
where [condition];

例如:

sqlite> update test set age=31 where name='guoke';
sqlite> select * from test;
id          name        age       
----------  ----------  ----------
1           guoke       31        
2           abc         25  

2.6 删

delete 查询用于删除表中已有的记录。可以使用带有 where 子句的 delete 查询来删除选定行,否则所有的记录都会被删除。

delete from table_name where [condition];

例如:

sqlite> delete from test where name='abc';
sqlite> select * from test;
id          name        age       
----------  ----------  ----------
1           guoke       31   
0%