当前位置: 首页 > 工具软件 > c2sqlite > 使用案例 >

Sqlite3 数据库的简单功能介绍

禹兴安
2023-12-01

编译时需要自己的代码+sqlite3.c -lpthread -ldl

【1】创建一个sqlite3数据库

1、创建、打开数据库:
sqlite3 *.db

  • 提示:
  • 当*.db 文件不存在时,sqlite 会创建并打开数据库文件。*
  • 当*.db 文件存在时,sqlite 会打开数据库文件。
  • 2、退出数据库命令: .quit 或 .exit

【2】从大到小

order by +列名 desc;

显示列表名:.header on

左对齐: .mode column

编译:加 -lpthread -ldl

两个- -代表注释

查看表; .table

查看数据表的结构: .schema[表名]

1、integer:带符号的整型(最多 64 位)。

2、real:8 字节表示的浮点类型。

3、text:字符类型,支持多种编码(如 UTF-8、UTF-16),大小无限制。

4、blob:任意类型的数据,大小无限制。 BLOB(binary large object)二进制大对象,使用二进制保存数据

5、null:表示空值。

【3】创建一个表

语法:

​ create table 表名称 (

​ 列名称 1 数据类型,

​ 列名称 2 数据类型,

​ 列名称 3 数据类型, …);

创建一表格该表包含 3 列,列名分是:“id”、“name”、“addr”。

在终端下输入:

create table person (id int,name text,addr text);

【4】设置一个主键

在用 sqlite 设计表时,每个表都可以通过 primary key 手动设置主键,每个表只能有一个主键,设置为

主键的列数据不可以重复。

语法: create table 表名称 (

​ 列名称 1 数据类型 primary key,

​ 列名称 2 数据类型,

​ 列名称 3 数据类型, …);

在终端下输入:

create table preson(id interger primary key ,name text, addr text);

【5】修改表

在已有的表中添加或删除列以及修改表名。

语法:

​ (添加、删除-sqlite3 暂不支持、重命名)

​ alter table 表名 add 列名 数据类型;

1.添加列
alter table person add sex text;
2.修改表名

(alter 修改表名)

alter table 表名 rename to 新表名

alter table person rename to new_person;

## 【6】删除表

用于删除表(表的结构、属性以及表的索引也会被删除) 

语法:

drop table 表名称; 

```sql
drop table person;

【7】插入新数据

给一行中的所有列赋值。

语法:

insert into 表名 values (列值 1, 列值 2, 列值 3,列值 4, …);

注意:

当列值为字符串时要加上‘’号。

在终端下输入:

1.全复制

insert into person values (1,'ws','beijing');

2.部分赋值

insert into person (id,name) values (1,'ws');

【8】修改表中的数据

使用 where 根据匹配条件,查找一行或多行,根据查找的结果修改表中相应行的列值(修改哪一列由

列名指定)。

语法:

update 表名 set 列 1 = 值 1 [, 列 2 = 值 2, …] [匹配条件];

匹配:where 子句

where 子句用于规定匹配的条件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xSv5LQyu-1571114386110)(1565344407063.png)]

匹配条件语法:(基础)

where 列名 操作符 列值

在终端下输入:

updata person set id= 2,addr = 'beinjing' where name = 'ws';

【9】删除表中的数据

delect 语句

使用 where 根据匹配条件,查找一行或多行,根据查找的结果删除表中的查找到的行。

语法:

delete from 表名 [匹配条件];

注意:

当表中有多列、多行符合匹配条件时会删除相应的多行。

在终端下输入:

delect from person where name = 'ws';
delect from person where id = 1;

【10】查询语句

用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。

语法:

1、select * from 表名 [匹配条件];

2、select 列名 1[, 列名 2, …] from 表名 [匹配条件];

提示:星号(*)是选取所有列的通配符。

在终端下输入:

1,查看表中所有

select *from person;

2.查看ID=1 的信息

select *from person where id = 1;

3.只查看名字或者成绩

select name from person;
select scoer from person;

【11】匹配条件语句

一、in 操作符

二、and 操作符

三、or 操作符

四、between and 操作符

五、like 操作符

六、not 操作符

二、and 操作符

三、or 操作符

四、between and 操作符

五、like 操作符

六、not 操作符

in 允许我们在 where 子句中规定多个值。

​ 匹配条件语法:

​ where 列名 in (列值 1, 列值 2, …)

例:

​ 1、select * from 表名 where 列名 in (值 1, 值 2, …);

​ 2、select 列名 1[,列名 2,…] from 表名 where 列名 in (列值 1, 列值 2, …)

在终端下输入:

1.只查看ID为1—10的信息

select *from person where id in(1,10);

扩展

SQL

空值 NULL

NULL表示 不可用、未赋值、不知道、不适用 , 它既不是0 也不是空格

一个数值与NULL进行四则运算,结果都是NULL

NULL与任何数值做判断结果都是假

-- create
create table t (c1 int, c2 text);
-- insert
insert into t(c1) values(1);
insert into t(c2) values( 'hello');
insert into t values( 3,'hello');
-- select
select * from t where c1 = 1;
--select * from t where c2 = ;
select * from t where c2 = '';
select * from t where c2 != 'hello';
select * from t where c2 is null;

字符串连接 ||

select c1 || '---' || c2 from t;

去重 distinct

insert into t values( 3,'hello');
insert into t values( 3,'hello');
select * from t;
select distinct * from t;

函数

函数说明
trim去除空字符
substr字符串截取,从1开始计数
round取n位小数
datetime日期+时间
time时间
date日期
coalesce返回第一个非空参数,没有则返回空
insert into t values(4, '   a');
select trim(c2) from t;
select substr(c2, 1, 3) from t;
select substr(c2, -3) from t;
select round(3.1415926, 2);
select date();
select time();
select datetime();
select strftime('YYYY/MM/DD HH:MM:SS');
select coalesce(c2,'asd') from t;

子查询

sql语句中允许嵌套sql语句,其结构集相当于一个临时表

如果子查询返回一行一列,则可以与其它值进行运算

select (select date()) from t;
select * from t where c2 < (select datetime());
select * from t where c1 > (select avg(c1) from t);

select t1.class, avg, num
from (select class, avg(score) avg
      from persons t1, grade t2
      where t1.id = t2.id
      group by class) t1,
     (select class, count(1) num
      from persons
      group by class) t2
where t1.class = t2.class;

with

with与视图类似,但是不在数据库中存储

with t1 as(
    select class, avg(score) avg
        from persons t1, grade t2
        where t1.id = t2.id
        group by class
),
t2 as(
    select class, count(1) num
      from persons
      group by class
)
select t1.class, avg, num
from t1, t2
where t1.class = t2.class;
 类似资料: