网易首页 > 网易号 > 正文 申请入驻

干货|Sqlite数据库知识必知必会(下篇)

0
分享至

大家好,我是IT共享者,人称皮皮。

前面几天给大家分享了MySQL数据库知识,没来得及看的小伙伴可以前往:Mysql查询语句进阶知识集锦,一篇文章教会你进行Mysql数据库和数据表的基本操作,关于数据库的安装可以参考:手把手教你进行Mysql5.x版本的安装及解决安装过程中的bug。

上篇文章主要给大家介绍了Sqlite数据库的安装、图形化管理系统、基本数据类型、基本关键字和数据库的相关操作,干货|Sqlite数据库知识必知必会(上篇),今天皮皮紧接上篇文章,继续给大家分享数据库知识,一起来看看吧。

前言

前面我们学习了很多数据库,虽然它们功能非常丰富,但是占用空间比较大,使得我们的系统负荷变大,这对于我们新手小白来说不是一个理想的选择,于是乎,Sqlite闪亮登场,它受人喜爱的真正原因正是因为它足够小,无需安装和管理配置,简单容易上手,支持数据库的大小也有2TB,足够我们个人开发爱好者使用了。

一、数据表相关操作

1).创建数据表

CREATE TABLE student (ID INTEGER DEFAULT '1406061' PRIMARY KEY AUTOINCREMENT NOT NULL,NAME NVARCHAR(100) UNIQUE NOT NULL,score INTEGER NOT NULL,time TIMESTAMP NOT NULL);

我们可以使用SqliteAdmin快速生成表,如下:

这样我们的表就建立成功了。这里小编在软件中用的是DEMO这个数据文件,而在命令窗口中用的是TEST这个数据库文件,因为一个数据库文件不允许在两个位置打开的缘故。

2).删除表

DROP TABLE people;

3).显示表名

.tables

4).数据表的增删改查

1)).增加

这里我们可以给刚创建的表添加一个数据,如下:

insert into student(ID,NAME,score,time) values(1406063,'任性的90后boy',90,'2020-07-06 12:23:32');

这里我插入了三行数据,其中有一行报错是因为我使用了相同的ID号,而我的数据库的ID号是不允许重复的,故而会报错,改成其它的就好了,如果你把ID设为自增的话,就不需要你去写了,这里我用到了自增,所以大家不必写Sqlite会自动填充进去的。这里也可以省掉字段名,直接写值,如下:

我们还可以给表添加新列,如下;

alter table people add column aa char(10);#添加列并且列名为aa

注:Sqlite3并不支持带有UNIQUE约束的列

2)).删除

delete from people;#删除表数据delete from people where score<20#删除people数据表score数值小于20的记录

3)).修改

其实就是更新操作,如下;

update people set score=100 where age=46;#当age=46时score设置为100

4)).查找

查找不管是在哪个数据库中方法都是相当多的,因为查询操作是最常见也是最频繁的,下面我们就来详细说说:

1))).查询所有的结果

select * from student;

我们可以看到虽然结果打印出了,但是并不是那么美观,我们将它的打印格式化一下,如下;

这下就完美多了。虽然这种方法很不错,但是如果数据列很多的话就无法完全显示了,这个时候我们就需要设置列的宽度,如下:

.width 10 20 15

2))).查询指定结果

select NAME,score from student; #打印出NAME和score列的结果select * from people where score<20 and age<40;#当score小于20并且age小于40的时候select *from people where score between 10 and 30;#当score为10~30之间时select *from people where NAME LIKE '放大%';#当name的开始处含有放大select *from people where NAME glob '放大*';#与上同select *from where score not in(12,23);#当score不属于12~23

3))).查找排序

select * from people order by score desc; #对score降序排序

4))).查找指定数量的数据

select * from people limit 3 offset 2#偏移2个单位然后输出三行数据,其实就是输出后三行数据

5))).查找重复数据并消除

select distinct * from people where score>10;#当score大于10的时候消除重复数据

6))).查找数据并进行分组

select NAME ,max(age) from people where score>10 group by age#返回score大于10的时候age的最大值

7))).查找数据进行分组并过滤分组

select NAME ,max(age) from people where score>10 group by age having count(NAME)>1;#名称计数大于1

5).表的重命名

alter table people rename to man;#将表名people改为man

6).数据表的连接

这里的连接分为内外交叉三种连接,使用好了可以极大提高我们的工作效率。这里我们再次创建一张表,如下:

1)).交叉连接

select * from people cross join woman;

2)).内连接

select * from people inner join woman;

3)).外连接

select * from people outer join woman;

注:Sqlite3只支持左外连接。

7).表的复制

create table man as select * from people where 1=0;#复制表结构create table woman as select * from people;#复制表结构和数据

8).临时表

有时候我们不需要存储所有表的数据,这个时候临时表就很有使用的必要了。如下:

#创建一个临时表create temporary table temp_table( id int primary key, name varchar(50) unique not null, age int not null);#查看临时表temp.temp_table#删除临时表drop table temp.temp_table;

5.索引操作

1).创建索引

create index user on people(score);#在people表的score字段上设置索引create unique name on people(NAME);#在people表的score字段上设置唯一索引create index pa on people(score,age)#在people表的score和age字段上设置索引

2).查看索引

SELECT * FROM sqlite_master WHERE type = 'index';

这里我们之前仅仅只是创建了一个索引,那就是”user“,为何会有两个索引了,而且最上面的索引好像跟我们并没有什么关系,也不像是自己创建的,其实,这个就是隐式索引,这个隐式索引在我们创建表的时候就连带着一起创建了的,只是为了让查询更加快速而已,影响不大。

3).使用索引

这里涉及到两个关键字请配套使用,表示索引来自于哪里的意思。

select * from people indexed by user where score>10;

4).删除索引

drop index user;

注:数据量较小不应使用索引,以免给系统增压。

6.视图操作

1).创建视图

create view name as select NAME from people;#创建NAME字段的视图

2).使用视图

select *from name;

这样就可以直接输出视图字段的所有值了。

3).删除视图

drop view name;

7.触发器

触发器就是使得多个表的交互增强,互相调用,满足条件就调用哪个表,语法格式如下:

create trigger 触发器 after(before) insert(delete update)on 表1begininsert into 表2(表2字段,表2字段,n) VALUES(表1值, 表1值,,,,n);END;

1).创建触发器

#给people表创建一个触发器create trigger cfafter insert on peoplebegininsert into woman(w_ID,NAME,SCORE,date) values(new.ID,'向前插入',100,datetime('now'));end;

2).查看触发器

select * from sqlite_master where type = 'trigger'AND tbl_name='people';#查看people表的触发器

3).删除触发器

drop trigger cf;

8.事务

有了事务可以让我们的Sqlite语句工作的更加有条不紊,一般大致分为事务开始 提交 回滚 结束,下面来看看:

begin;#开始insert into people('gf',65,datetime('now'));rollback; #回滚就是撤销COMMIT;提交保存数据end;#结束

这里的数据没有插入到“people”表中哦,是不是超级简单了?

二、总结

这篇文章主要介绍了Sqlite数据库的数据表、索引、视图、触发器和事务操作知识,干货满满。

皮皮自从学过Sqlite之后,就果断卸载了Mysql和Mongo了,主要是目前还用不着Mysql数据库和Mongo那么强大的数据,够用就好。

我是皮皮,如果觉得文章不错,记得三连噢,大家有问题也可以点击下方的图片,加我好友,交个朋友也好呀~

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
世预赛18强分档出炉,中国毫无意外,避开死亡之组,可晋级世界杯

世预赛18强分档出炉,中国毫无意外,避开死亡之组,可晋级世界杯

刺头体育
2024-06-13 19:49:18
“多名男子当街打人,最后将被打者塞进车内离开”?临沂警方:4人被依法行拘

“多名男子当街打人,最后将被打者塞进车内离开”?临沂警方:4人被依法行拘

环球网资讯
2024-06-13 23:18:09
王思聪回应:你爹来了!黄一鸣骄傲改口怼网友:他让我想生就生!

王思聪回应:你爹来了!黄一鸣骄傲改口怼网友:他让我想生就生!

综艺拼盘汇
2024-06-14 02:31:56
中国人写给犹太人的文章,一针见血!

中国人写给犹太人的文章,一针见血!

华山穹剑
2024-06-13 20:11:49
27岁女子在家被捅死,保安被指“不作为”,众大V:保安没有执法权

27岁女子在家被捅死,保安被指“不作为”,众大V:保安没有执法权

可达鸭面面观
2024-06-13 09:18:50
越闹越大!原国安教练李章洙公开讨要自己的房子,网友评论区炸锅

越闹越大!原国安教练李章洙公开讨要自己的房子,网友评论区炸锅

180°视角
2024-06-13 12:15:25
日本官方最新数据:人均海鲜年消费量暴跌50%!只因核污水排海?

日本官方最新数据:人均海鲜年消费量暴跌50%!只因核污水排海?

不掉线电波
2024-06-13 23:16:14
拯救国足,桑尼手机消息爆炸!家人惊了:中国人都在感谢你

拯救国足,桑尼手机消息爆炸!家人惊了:中国人都在感谢你

叶青足球世界
2024-06-13 20:52:50
记者:张玉宁以前留洋回国时贴钱买商务舱票,坐经济舱有受伤风险

记者:张玉宁以前留洋回国时贴钱买商务舱票,坐经济舱有受伤风险

直播吧
2024-06-13 14:14:13
曝豆得儿曾为王思聪打过胎,看到黄一鸣爆料后破防,本人发文怒斥

曝豆得儿曾为王思聪打过胎,看到黄一鸣爆料后破防,本人发文怒斥

拾娱先生
2024-06-13 15:04:40
《悯农》争议再起:“锄禾日当午”遭质疑,专家建议剔除课本

《悯农》争议再起:“锄禾日当午”遭质疑,专家建议剔除课本

鬼谷子思维
2024-06-13 13:36:54
乔尔杰维奇卸任后正式发声:感谢篮协+姚明 祝福中国男篮和球员

乔尔杰维奇卸任后正式发声:感谢篮协+姚明 祝福中国男篮和球员

醉卧浮生
2024-06-13 20:40:36
曝王刚卖掉北京价值上亿四合院,移民美国,本人回应:我不是和珅

曝王刚卖掉北京价值上亿四合院,移民美国,本人回应:我不是和珅

拾娱先生
2024-06-12 15:27:22
王思聪黄一鸣牵手照曝光,黄一鸣挺着大孕肚,挑选母婴用品!

王思聪黄一鸣牵手照曝光,黄一鸣挺着大孕肚,挑选母婴用品!

柠檬有娱乐
2024-06-13 11:20:07
坎耶29岁娇妻现身日本东京,连体衣内搭空气,让店员看得目瞪口呆

坎耶29岁娇妻现身日本东京,连体衣内搭空气,让店员看得目瞪口呆

译言
2024-06-13 22:01:18
提前晋级奥运!中国女排锁定巴黎奥运资格

提前晋级奥运!中国女排锁定巴黎奥运资格

懂球帝
2024-06-13 19:13:53
俄向克里米亚部署最先进的S500,阿根廷向乌克兰援助超级军旗

俄向克里米亚部署最先进的S500,阿根廷向乌克兰援助超级军旗

史政先锋
2024-06-13 19:53:16
冤家路窄!中国足球又抽到韩国,抗韩三部曲来临,必须把他们打怕

冤家路窄!中国足球又抽到韩国,抗韩三部曲来临,必须把他们打怕

时刻体育正版
2024-06-13 22:45:39
后续!女孩瓦屋山飞石砸亡:身份被曝光,家境太凄惨,目击者发声

后续!女孩瓦屋山飞石砸亡:身份被曝光,家境太凄惨,目击者发声

影像温度
2024-06-13 17:26:28
官宣!多特宣布欧冠亚军教头下课,3年2次被解雇,35岁功臣继任

官宣!多特宣布欧冠亚军教头下课,3年2次被解雇,35岁功臣继任

阿超他的体育圈
2024-06-13 19:19:26
2024-06-14 07:28:49
Python学习交流
Python学习交流
人生苦短,我用Python
419文章数 4850关注度
往期回顾 全部

科技要闻

小红书员工仅1/5工龄满2年 32岁就不让进了

头条要闻

欧盟拟加税 玉渊谭天:中方可对欧盟白兰地等采取行动

头条要闻

欧盟拟加税 玉渊谭天:中方可对欧盟白兰地等采取行动

体育要闻

乔丹最想单挑的男人走了

娱乐要闻

森林北报案,称和汪峰的感情遭受压力

财经要闻

私募大佬孙强:中国为什么缺少耐心资本

汽车要闻

升级8155芯片 新款卡罗拉锐放售12.98-18.48万

态度原创

艺术
家居
游戏
数码
旅游

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

家居要闻

大城小室 质朴自然的心灵居所

《乐高地平线大冒险》使用虚幻5开发 支持光追

数码要闻

三星 Galaxy Watch 首款 FE 产品正式发布,199 美元起

旅游要闻

山西文旅厅厅长与董宇辉拉家常:中午回家吃了饭

无障碍浏览 进入关怀版