什么是
sqlite
它占用资源非常的低,在嵌入式设备中,可能只需要几百
K
的内存就够
了
什么是数据库
对象型数据库
常用关系型数据库
嵌入式
\
移动客户端
:
sqlite
create table Person (id_P int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(50));
创建表的时候生成主键,并且主键值自动增加
create table t_person (id integer primary key auto increment,LastName archer,)
向表Person插入一条数据
INSERT INTO 表名称 VALUES (值1,值2,....)
INSERT INTO table_name (列1,列2,...) VALUES (值1,....)
insert into Person values (100,'Gates','Bill','xuanwumen 10','beijing');
insert into Person (LastName,Address) values (’xiaosan’,‘beijing’);
从表Person中查询数据
select * from Person; //从表Peson里查询所有字段的所有数据
select LastName,FirstName from Person ; //从表Peron里查义字段为LastName,FirsName的所有记录的数据。
select * from Person where LastName = 'Gates'; //根据指定的条件,从表Person里查询相对应的数据,where后面跟的就是条件。
排序
select LastName,FirstName from Person where age >= 18 order by age asc;//(order by)排序 sac表示升序 desc表示降序
select LastName,FirstName from Person where age >= 18 order by age asc, num asc; //先按照age排序, 如果num相同, 则按照num排序
limit 常用来做分页查询。
使用limit可以精确地控制查询结果的数量,格式
select * from 表名 limit 数值1, 数值2;
select *from person limit 4,8; 可以理解为, 跳过最前面的4条数据, 然后再取8条数据。
从表Person中删除行数据
delete from Person where LastName='san'; //指的是将表Peson里LastName等san的这一行数据删除。
delete from Person //删表Person中的所有数据
delete * from Person //在标准sql语句也表示删除表Person的所有数据。 但是在**sqlite**里不能使用这个种语方法。
删除表格
drop table Person;//功能是删除整张表格
更新(更改)表Peson里的数据
update Person set Lastname='qingyun' where FirstName='Bill';//更新表Person FirstName='Bill' 这条数据的LastName为新值'qingyun'
update Person set LastName='henan',FirstName='zhengzhou' where id_P = 200; //按照条件,id_P=200,修改这条数据的两个字段值,FirstName改为zhengzhou,LastName 改为'henan'
在sqlite数据库里, 更新表结构
alter table Person add Age int; //更新Person表结构, 功能是添加新的一列
注意的是:标准sql里可以使用alert关键字来达到删除一列, 修改列名和列类型的功能。但是在sqlite环境里, 是不支持。
条件语句:
where
下面的运算符可在 WHERE 子句中使用:
注释:在某些版本的 sql 中,操作符 <> 可以写为 !=。
select count (*) from person; 查询表里一共有多少条数据;
select * from person limit 2; 限制每次查询的列数(即 条数)为2条;
简单约束:
建表时可以给特定的字段设置一些约束条件,常见的约束有
not null:规定字段的值不能为null
unique:规定字段的值必须唯一
default:指定字段的默认值
(建议:尽量给字段设定严格的约束,以保证数据的规范性)
示例
createtablet_student(idinteger,nametextnotnullunique,ageintegernotnulldefault1) ;
name字段不能为null,并且唯一
age字段不能为null,并且默认为1
外键约束:
利用外键约束可以用来建立表与表之间的联系
外键的一般情况是:一张表的某个字段,引用着另一张表的主键字段
新建一个外键
create tablet_student (idinteger primary keyautoincrement, name text,age integer,class_id integer,constraint fk_t_student_class_id_t_class_idforeign key(class_id) (id)) ;referencest_class
t_student表中有一个叫做fk_t_student_class_id_t_class_id的外键
这个外键的作用是用t_student表中的class_id字段引用t_class表的id字段
sqlite3 终端简单操作:
.save + sql文件名, 保存到文件。
.show 展现数据的状态
.shell + 终端命令, 可以查看当前位置, 文件等;
.mode 改变数据展现样式
.headers
.output 如果加个文件夹, 输出的内容到文件夹, 如果不加, 标准输出到屏幕;
TABLES 如果不指定表名, 则表示列出当前数据库里所有的表名, 如果指定了表名(可以使用通配符),则是列出当前数据库与指定的在模式匹配的表名。
schema 如果指定了表名,则可以列出创建此表的sql语句, 如果不指定表名, 则会列出当前数据库所有表的表结构(以sql语句形式列出)
read 后面跟文件名, 意思是读取文件里的sql语句, 并执行。
添加多行记录(
row
,每行存放多个字段对应的值)
关于sql
在程序运行过程中,要想操作(增删改查,CRUD)数据库中的数据,必须使用sql语句
DDL 数据定义语言
命令 描述
create 创建一个张新的表, 一个新的视图或者数据库里的其它对象
alter 修改数据库中的某个已有的数据库对象, 比如:可以修改一个表的结构
drop 删除整个表,删险视图,或者删除数据库中的其它数据库对象
DML 数据操作语言
命令 描述
insert 创建或者说是插入一条新的记录
update 修改表中的记录
delete 删除表中的记录
DQL 数据查询语言
命令 描术
select 从一个表或者是多个表中检索某些记录。
创建一张表:表名为Person
关于sql
在程序运行过程中,要想操作(增删改查,CRUD)数据库中的数据,必须使用sql语句
DDL 数据定义语言
命令 描述
create 创建一个张新的表, 一个新的视图或者数据库里的其它对象
alter 修改数据库中的某个已有的数据库对象, 比如:可以修改一个表的结构
drop 删除整个表,删险视图,或者删除数据库中的其它数据库对象
DML 数据操作语言
命令 描述
insert 创建或者说是插入一条新的记录
update 修改表中的记录
delete 删除表中的记录
DQL 数据查询语言
命令 描术
select 从一个表或者是多个表中检索某些记录。
create table Person (id_P int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(50));
创建表的时候生成主键,并且主键值自动增加
create table t_person (id integer primary key auto increment,LastName archer,)
向表Person插入一条数据
INSERT INTO 表名称 VALUES (值1,值2,....)
INSERT INTO table_name (列1,列2,...) VALUES (值1,....)
insert into Person values (100,'Gates','Bill','xuanwumen 10','beijing');
insert into Person (LastName,Address) values (’xiaosan’,‘beijing’);
从表Person中查询数据
select * from Person; //从表Peson里查询所有字段的所有数据
select LastName,FirstName from Person ; //从表Peron里查义字段为LastName,FirsName的所有记录的数据。
select * from Person where LastName = 'Gates'; //根据指定的条件,从表Person里查询相对应的数据,where后面跟的就是条件。
排序
select LastName,FirstName from Person where age >= 18 order by age asc;//(order by)排序 sac表示升序 desc表示降序
select LastName,FirstName from Person where age >= 18 order by age asc, num asc; //先按照age排序, 如果num相同, 则按照num排序
limit 常用来做分页查询。
使用limit可以精确地控制查询结果的数量,格式
select * from 表名 limit 数值1, 数值2;
select *from person limit 4,8; 可以理解为, 跳过最前面的4条数据, 然后再取8条数据。
从表Person中删除行数据
delete from Person where LastName='san'; //指的是将表Peson里LastName等san的这一行数据删除。
delete from Person //删表Person中的所有数据
delete * from Person //在标准sql语句也表示删除表Person的所有数据。 但是在**sqlite**里不能使用这个种语方法。
删除表格
drop table Person;//功能是删除整张表格
更新(更改)表Peson里的数据
update Person set Lastname='qingyun' where FirstName='Bill';//更新表Person FirstName='Bill' 这条数据的LastName为新值'qingyun'
update Person set LastName='henan',FirstName='zhengzhou' where id_P = 200; //按照条件,id_P=200,修改这条数据的两个字段值,FirstName改为zhengzhou,LastName 改为'henan'
在sqlite数据库里, 更新表结构
alter table Person add Age int; //更新Person表结构, 功能是添加新的一列
注意的是:标准sql里可以使用alert关键字来达到删除一列, 修改列名和列类型的功能。但是在sqlite环境里, 是不支持。
条件语句:
where
下面的运算符可在 WHERE 子句中使用:
操作符 | 描述 |
等于 | |
不等于 | |
大于 | |
小于 | |
大于等于 | |
小于等于 | |
在某个范围内 | |
搜索某种模式 |
select count (*) from person; 查询表里一共有多少条数据;
select * from person limit 2; 限制每次查询的列数(即 条数)为2条;
简单约束:
建表时可以给特定的字段设置一些约束条件,常见的约束有
not null:规定字段的值不能为null
unique:规定字段的值必须唯一
default:指定字段的默认值
(建议:尽量给字段设定严格的约束,以保证数据的规范性)
示例
createtablet_student(idinteger,nametextnotnullunique,ageintegernotnulldefault1) ;
name字段不能为null,并且唯一
age字段不能为null,并且默认为1
外键约束:
利用外键约束可以用来建立表与表之间的联系
外键的一般情况是:一张表的某个字段,引用着另一张表的主键字段
新建一个外键
create tablet_student (idinteger primary keyautoincrement, name text,age integer,class_id integer,constraint fk_t_student_class_id_t_class_idforeign key(class_id) (id)) ;referencest_class
t_student表中有一个叫做fk_t_student_class_id_t_class_id的外键
这个外键的作用是用t_student表中的class_id字段引用t_class表的id字段
sqlite3 终端简单操作:
.save + sql文件名, 保存到文件。
.show 展现数据的状态
.shell + 终端命令, 可以查看当前位置, 文件等;
.mode 改变数据展现样式
.headers
.output 如果加个文件夹, 输出的内容到文件夹, 如果不加, 标准输出到屏幕;
TABLES 如果不指定表名, 则表示列出当前数据库里所有的表名, 如果指定了表名(可以使用通配符),则是列出当前数据库与指定的在模式匹配的表名。
schema 如果指定了表名,则可以列出创建此表的sql语句, 如果不指定表名, 则会列出当前数据库所有表的表结构(以sql语句形式列出)
read 后面跟文件名, 意思是读取文件里的sql语句, 并执行。