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