编译时需要自己的代码+sqlite3.c -lpthread -ldl
1、创建、打开数据库:
sqlite3 *.db
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:表示空值。
语法:
create table 表名称 (
列名称 1 数据类型,
列名称 2 数据类型,
列名称 3 数据类型, …);
创建一表格该表包含 3 列,列名分是:“id”、“name”、“addr”。
在终端下输入:
create table person (id int,name text,addr text);
在用 sqlite 设计表时,每个表都可以通过 primary key 手动设置主键,每个表只能有一个主键,设置为
主键的列数据不可以重复。
语法: create table 表名称 (
列名称 1 数据类型 primary key,
列名称 2 数据类型,
列名称 3 数据类型, …);
在终端下输入:
create table preson(id interger primary key ,name text, addr text);
在已有的表中添加或删除列以及修改表名。
语法:
(添加、删除-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;
给一行中的所有列赋值。
语法:
insert into 表名 values (列值 1, 列值 2, 列值 3,列值 4, …);
注意:
当列值为字符串时要加上‘’号。
在终端下输入:
1.全复制
insert into person values (1,'ws','beijing');
2.部分赋值
insert into person (id,name) values (1,'ws');
使用 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';
delect 语句
使用 where 根据匹配条件,查找一行或多行,根据查找的结果删除表中的查找到的行。
语法:
delete from 表名 [匹配条件];
注意:
当表中有多列、多行符合匹配条件时会删除相应的多行。
在终端下输入:
delect from person where name = 'ws';
delect from person where id = 1;
用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。
语法:
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;
一、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);
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;
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 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;