在命令行使用sql语句操作sqlite
1. 创建数据库文件(db)
$: sqlite3 databasename.db
创建成功后,会自动进入sqlite命令行的界面” sqlite> “
eg:
$: sqlite3 testdb.db // 打开名为testdb的数据文件,不存在则创建
2. 输入” .database ” 查看数据库文件信息
seq // 序号
name // 数据库名
file // 数据库文件名
文件权限:- rw- r– r–
3. 创建数据表 ‘语法’
create table table_name (
列名1 类型1 [约束],
列名2 类型2 [约束],
…);
【注】sql语句中不区分大小写,习惯把’关键字'(create table)写成大写
eg:
创建一个公司员工信息表company,
列包含:id、姓名、年龄、地址、薪资
sqlite> create table company(
…> id int primary key not null,
…> name text not null,
…> age int not null,
…> address text,
…> salary real not null);
sqlite> .table —> ‘ .table ‘ // 查看表的名字 .ta
company
sqlite> .schema —> ‘ .schema ‘ // 查看创建表详细信息 .sc
create table company(
id int primary key not null,
name text not null,
age int not null,
address text,
salary real not null);
‘[约束]’:
primary key // 主键约束,数据唯一,并且可以加快数据访问
not null // 非空,限制插入数据不能为空
‘类型关键字’:
int 整型
text 文本字符串
real 浮点数
练习:
创建学生成绩的数据表
表名:student
列名:id(int) name(text) score(real)
要求id唯一,每一列的数据非空。
sqlite> create table student(
…> id int primary key not null,
…> name text not null,
…> score real not null);
4. 删除数据库表 ‘语法’
drop table 表名;
eg:
drop table student;
将student表删除,里面的数据也会被删除,且数据恢复比较困难。
5. 插入数据 ‘语法’
insert into 表名
(列名1, 列名2, 列名3…)
values(数据1, 数据2, 数据3…);
eg:向company表中插入数据
10086 “张飞” 30岁 “四川” 800.5
10011 “关羽” 31岁 801.5
insert into company
(id, name, age, address, salary)
values(10086, “张飞”, 30, “四川”, 800.5);
insert into company
(id, name, age, salary)
values(10011, “关羽”, 31, 800.5);
6. 查询数据 ‘语法’
select * from company;
eg:
sqlite> select * from company ;
10011|关羽|31|成都|801.5
10011|关羽|31|成都|801.5
10086|张飞|30|四川|800.5
10000|曹操|35||999.9
10002|刘备|34|河南|855.5
10013|关兴|28|湖南|600.5
10015|刘禅|18|北京|300.0
10014|曹植|16|广东|1200.5
10008|赵云|26|上海|888.8
7. 删除数据 ‘语法’
delete from 表名 where [条件] // 一般使用唯一属性进行匹配删除
eg:// 比如 id
delete from company where id = 10000;
8. 修改数据 ‘语法’
update 表名 set 列名1 = 数值1, 列名2 = 数值2… where [条件];
// 一般使用唯一属性进行匹配修改单条信息
eg:
update company set age= 26 where id= 10014;
update company set address= “上海” where id < 10014;
// 算数:+ – * / % 比较:== = != <> > < >= <= !< !>
// 逻辑:and between exists in like
// 逻辑:glob not or is unique
9. 查询数据 ‘语法’
// 所有列,可以用 * 替换
select 列名1, 列名2, 列名3… from 表名;
select 列名1, 列名2, 列名3… from 表名 where [条件];
select 列名1, 列名2, 列名3… from 表名 where [条件]
order by 列名 asc/desc ; // asc 升序,desc 降序
eg:
select id, name from company;
select id, name from company where id > 10014;
select * from company where salary < 1000;
select id,name from company order by id asc;