Sqlite3安装及使用

1.简介

SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。

文件类型的数据库

嵌入式数据库

2.安装

# 环境:linux-ubuntu
sudo apt update
sudo apt install sqlite3

3.使用

--新建一个数据库
sqlite3 testDB.db
--在“sqlite>”模式下打开一个数据库,若不存在,则自动创建
.open test1.db
--删除库就像删除一个文件那样
rm -r test1.db
--查看数据库所在路径
.database

--创建表
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

--查看数据库中的所有表的名称
.tables
--查看数据库中的所有表的结构信息
.schema
--删除表
drop table company;
--复制一张表
create table company_copy as select * from company;
--复制一张表的部分内容
create table company_part as select*from company where id = 6;
--修改表名
alter table tb rename to tbl;

增 INSERT

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
--或者
INSERT INTO COMPANY VALUES (1, 'Paul', 32, 'California', 20000.00 );

--例子
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES 
(1, 'Paul', 32, 'California', 20000.00 ),
(2, 'Allen', 25, 'Texas', 15000.00 ),
(3, 'Teddy', 23, 'Norway', 20000.00 ),
(4, 'Mark', 25, 'Rich-Mond ', 65000.00 ),
(5, 'David', 27, 'Texas', 85000.00 ),
(6, 'Kim', 22, 'South-Hall', 45000.00 ),
(7, 'James', 24, 'Houston', 10000.00 );

查 SELECT

--查询表的所有数据
select * from company;
--调整格式(显示表头,按列排)
.header on   --列名(表头)显示
.mode column --左对齐列
--查询指定字段
select id,name,salary from company;
--查询工资 大于 50000的所有记录
select * from company where salary > 50000;

1.且 或 AND OR

--且 AND
--查询年龄大于等于 25 且 工资大于等于 65000.00 的所有记录
select * from compay where age > 25 AND salary >65000;
--或 OR
--查询年龄大于等于 25 或 工资大于等于 65000.00 的所有记录
select * from compay where age > 25 OR salary >65000;

2.模糊查询(文本字段) LIKE,GLOB

--like ,GLOB
--查询名字开头为 Ki 的所有记录,两种方式 like , GLOB(只能大写)
select * from company where name LIKE 'ki%';
SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';

3.匹配数值 IN

--匹配 IN
--查询年龄的值为25,27或32 的所有记录
select * from company where age in (25,27,32);

4.范围 BETWEEN AND

--范围 BETWEEN AND
--查询年龄的值在25 到 27的所有记录
select * from company where age between 25 and 27;

5.限制 LIMIT

--限制 LIMIT
--查询前4个记录
select * from company limit 4;
--从第3个记录开始查询 4个记录 (偏移2个记录)
select * from company limit 4 offset 2;

6.排序 order by

--排序 order by
--升序 ASC
--按照工资升序排列查询所有记录
select * from company order by salary asc;
--降序 DESC
--按照工资降序排列查询所有记录
select * from company order by salary desc;

--查询 工资范围在20000到65000之间的升序排列的前3个记录
select * from (select * from company where salary between 20000 and 65000) order by salary asc limit 3;

7.分组 GROUP BY

--分组 GROUP BY
--查询 每个名字所拥有的工资总额
select name ,sum(salary) from company group by name;

8.过滤 分组结果 HAVING

--过滤 分组结果 HAVING
--查询姓名出现次数小于2的所有记录
select * from company group by name having count(name) <2;

9.去重 DISTINCT

--去重 DISTINCT
--查询姓名列(不能有重复记录)
select distinct name from company;

删 DELETE

--删除id为7的用户
delete from company where id = 7;
--删除表company中的所有记录
delete from company;

改 UPDATE

--将id为6的用户的地址修改为 Texas
update company set address = 'Texas' where id = 6;
--将所有用户的地址修改为 Texas
update company set address = 'Texas';

导出导入

--csv
--导出数据  sqlite>
.output company.csv    --设置导出文件
.header off            --去掉表头
.mode list             --列表化
select * from company; --要导出的表的信息
.output stdout         --执行导出

--导入数据
--前提:表company的表头结构符合要导入的数据结构
.import company.csv company   --将company.csv文件内的数据信息导入到表company中
--sql
--导出数据 
sqlite3 testDB.db .dump > testDB.sql
--导入数据
sqlite3 testDB.db < testDB.sql

事务

begin;  --开始一个事务,之后的所有操作都可以取消
commit; --使begin后的所有命令得到确认
rollback; --取消begin后的所有操作

--例子
begin;
delete form tbl;  --删除表
rollback;    --回滚

函数

文本处理函数

length()   --返回字符串的长度
lower()    --将字符串转换为小写
upper()    --将字符串转换为大写

--例子
select id,lower(name),length(address) from company1;

sqlite> select id,lower(name),length(address) from company1;
ID  lower(name)  length(address)
--  -----------  ---------------
1   paul         10
2   allen        5
3   teddy        6
4   mark         10
5   david        5
6   kim          10
7   james        7

聚集函数

avg()  --返回某列的 平均值
count() --行数
max()   --最大值
min()   --最小值
sum()   --之和

--例子
select avg(salary) as salary_avg from company;
select count(id) from company;
select count(*) from company;
select max(salary) from company;
select min(salary) from company;
select sum(salary) from company;

sqlite> select count(id) from company;
count(id)
---------
7
sqlite> select max(salary) from company;
max(salary)
-----------
85000.0
sqlite> select sum(salary) from company;
sum(salary)
-----------
260000.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值