当前位置: 首页 > 编程日记 > 正文

【数据库】适用于SQLite的SQL语句(一)

目录

        • 一、统计函数
        • 二、表TABLE
          • 1、创建表CREATE TABLE
          • 2、更改表ALTER TABLE
          • 3、删除表DROP TABLE
        • 三、分析表ANALYZE
        • 四、附加数据库 ATTACH DATABASE
        • 五、事务
        • 六、核心函数
        • 七、索引INDEX
          • 1、创建索引:CREATE INDEX
          • 2、查看索引:
          • 3、使用索引 INDEXED BY
          • 4、删除索引:DROP INDEX
        • 八、触发器TRIGGER
          • 1、创建触发器CREATE TRIGGER
          • 2、删除触发器DROP TRIGGER

一、统计函数

avg(X) : 计算平均值,针对整数;
count(*):统计总行数;
count(X):统计X在组中不为NULL的行数;
group_concat(X):返回X非NULL值串联成的字符串,以逗号‘,’分隔
group_concat(X,Y):返回X非NULL值串联成的字符串,以‘Y’分隔
max(X):返回最大值
min(X):返回最小值
sum(X):如果所有非NULL输入均为整数,则sum的结果为整数值。否则返回一个浮点值。如果计算时整数溢出,Sum会抛出“整数溢出”异常;
total(X):返回的结果始终是浮点值;并且不会抛出“整数溢出”异常。

二、表TABLE

1、创建表CREATE TABLE
CREATE TABLE t(x INTEGER PRIMARY KEY , y, z);
CREATE TABLE t(x INTEGER PRIMARY KEY ASC , y, z);
CREATE TABLE t(x INTEGER, y, z, PRIMARY KEY(x ASC));
CREATE TABLE t(x INTEGER, y, z, PRIMARY KEY(x DESC));
2、更改表ALTER TABLE

更改表名:ALTER TABLE 旧表名 RENAME TO 新表名;
更改列名:ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名;
添加列:ALTER TABLE 表名 ADD 列名 类型;

3、删除表DROP TABLE

三、分析表ANALYZE

执行ANALYZE命令,会将分析结果保存在表sqlite_stat1中。

ANALYZE;
SELECT * FROM sqlite_stat1;
tbl|idx|stat
test1||1
tt||2

四、附加数据库 ATTACH DATABASE

ATTACH DATABASE语句将另一个数据库文件添加到当前数据库连接中。可以使用DETACH DATABASE命令分离以前附加的数据库文件。

添加数据库:ATTACH DATABASE 附加数据库文件名 AS 数据库别名;
分离数据库:DETACH DATABASE数据库别名;

例子:

attach 'test1.db' as test1;

如果“附加数据库文件名”存在则连接它,如果不存在则创建;连接后可以通过.database命令查看;

.database
main: /home/workspace/test/sql/test.db
test1: /home/workspace/test/sql/test1.db

使用,通过 数据库别名.表名 来使用附加数据库中的表;

select * from test1.test;
1|Xiao|20
2|Xiao1|21

五、事务

开始事务:BEGIN TRANSACTION
提交事务:END TRANSACTION、COMMIT
回滚事务:ROLLBACK TRANSACTION
保存点:SAVEPOINT 是一种创建事务的方法,类似于 BEGIN和COMMIT,不同之处在于SAVEPOINT和RELEASE可以命名并且可以嵌套。

六、核心函数

abs(X):返回X列的绝对值;
changes():返回最近更改(插入、删除、更新)的行数;
char(X1,X2,…,XN):返回以整数列X1…XN为unicode编码字符串;
注:下面例子中前两个值为18、19,对应的unicode字符不能显示,第三个为88,对应x

select char(age) from tt ;X

coalesce(X,Y,…):返回第一个不为NULL的副本;
glob(X,Y):和LIKE,模糊查找;
hex(X):将X视为BLOB,并返回一个字符串,该字符串是该blob内容的大写十六进制表示形式;
ifnull(X,Y):返回XY中第一个不为NULL的副本,等于只有两个参数的coalesce
instr(X,Y):在字符串X中查找Y
last_insert_rowid():然会最后插入的行ID;
length(X):对于字符串返回字符个数;对于BLOB返回字节数;对于整数返回字符串形式的长度;
like(X,Y):模糊查找
like(X,Y,Z):模糊查找
likelihood(X,Y):似然函数,用于统计学,最大似然估计;
likely(X):优化编译,将X为true时,要执行的代码编译到前面
load_extension(X)
load_extension(X,Y)
lower(X):小写
ltrim(X)
ltrim(X,Y):函数返回一个字符串,该字符串是通过从X的左侧删除出现在Y中的任何和所有字符形成的。如果省略Y参数,ltrim 将从X的左侧删除空格。
max(X,Y,…):最大值
min(X,Y,…):最小值
nullif(X,Y):参数相同返回NULL,参数不同,返回第一个
printf(FORMAT,…):格式化输出

select printf("age = %d", age) from test;
age = 18
age = 19

quote(X):返回结果的文本格式,如果是字符串返回的文本带单引号;
random():伪随机函数;
randomblob(N):返回N个字节伪随机BLOB值;
replace(X,Y,Z):使用Z替换X中的Y;
round(X):返回X四舍五入的整数;
round(X,Y):返回X四舍五入小数点后Y位的浮点数;
rtrim(X)
rtrim(X,Y):和ltrim类似,这次从右侧删除;
soundex(X):返回soundex编码?
sqlite_compileoption_get(N):返回用于构建SQLite的第N个编译时选项
sqlite_compileoption_used(X):返回是否使用X作为编译选项;
sqlite_offset(X):没理解
sqlite_source_id():返回源码版本;
sqlite_version():SQLite库的版本
substr(X,Y)
substr(X,Y,Z):从X的第Y个字符开始的Z长度的字符串;
total_changes():自打开当前数据库连接以来,更改过的行数;
trim(X)
trim(X,Y):等于ltrim+rtrim,从两端删除;
typeof(X):返回类型的字符串形式;
unicode(X):和char相反,返回字符串第一个字符对应的unicode值
unlikely(X):优化编译,将X为false时,要执行的代码编译到前面
upper(X):返回大写;
zeroblob(N):返回N个值为0的BLOB类型值

七、索引INDEX

创建索引是为了给数据库内部使用,加快查询;不是直接给用户使用。

1、创建索引:CREATE INDEX

创建简单索引

CREATE INDEX index_name ON table_name (column_name);

创建唯一索引

CREATE UNIQUE INDEX index_name ON table_name (column_name);
2、查看索引:
.indexes
haha
.headers on
SELECT * FROM sqlite_master WHERE type = 'index';
type|name|tbl_name|rootpage|sql
index|haha|tt|6|CREATE INDEX haha on tt(age)
3、使用索引 INDEXED BY

在DELETE、SELECT或UPDATE上强制使用索引;INDEXED BY短语是SQLite的扩展,不能移植到其他SQL数据库引擎中。

4、删除索引:DROP INDEX
DROP INDEX index_name;

八、触发器TRIGGER

当对数据库执行插入INSERT、更新UPDATE、删除DELETE操作时,可以自动触发关联动作。

1、创建触发器CREATE TRIGGER

官方demo

// 创建更新触发器
CREATE TRIGGER update_customer_address UPDATE OF address ON customers BEGINUPDATE orders SET address = new.address WHERE customer_name = old.name;END;// 执行更新操作
UPDATE customers SET address = '1 Main St.' WHERE name = 'Jack Jones';// 下面语句会自动执行
UPDATE orders SET address = '1 Main St.' WHERE customer_name = 'Jack Jones';
2、删除触发器DROP TRIGGER
DROP TRIGGER trigger-name;

相关文章:

谷歌大神Jeff Dean点赞网红博士论文:改进分布式共识机制 | 技术头条

作者 | Heidi Howard编译 | 刘静本文转载自公众号图灵TOPIA(ID:turingtopia)本文作者Heidi Howard,是剑桥大学计算机科学与技术系系统研究小组的分布式系统研究员。Heidi的研究领域一直围绕分布式系统中的一致性,容错性和性能并且…

使用Nginx做前端服务器时让Apache得到真实IP的方法

一:nginx.conf proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 其实这个proxy.conf里面默认都有,在nginx.conf使用include proxy.conf就可以 二:apa…

Hadoop生态圈-hive五种数据格式比较

Hadoop生态圈-hive五种数据格式比较 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。

华为巨资收购为云计算趟平道路?

华为巨资收购为云计算趟平道路&#xff1f;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />文 小刀马众所周知&#xff0c;华为在全球的技术能力和市场地位也是有目共睹的&#xff0c;这是华为多少年兢兢业业守成的一种回报。更…

【数据库】适用于SQLite的SQL语句(二)

目录九、视图VIEW1、创建视图2、删除视图十、虚拟表1、创建虚拟表2、删除虚拟表十一、时间和日期的函数十二、分析和故障排除十三、SQL语句中的表达式1、运算符2、字面值3、参数十四、插入 INSERT十五、SQLite关键字十六、解决冲突 ON CONFLICT九、视图VIEW 视图是基于真实数据…

从对ML一窍不通到斩获AT等special offer,拿下大厂算法岗就靠它了

整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;2019 年春招就要过去&#xff0c;秋招也就不远了。对于很多计算机专业的毕业生来说&#xff0c;大部分都还处于迷茫期&#xff0c;由于大学时的大部分时间都可能在划水&#xff0c;导致不知道现在如何准备就…

WWDC2018总结

本人的第一篇文章&#xff08;现在写文章是为了提升自己的语句表达能力&#xff09; 欢迎大家观看本文章&#xff0c;是略微总结一下WWDC2018发布的iOS12的新东西 iOS12略微总结&#xff08;持续更新。。。&#xff09; iOS12 变化 iOS 12新功能汇总&#xff08;后面希望可以上…

make报错:/usr/bin/ld: cannot find -lXXX

在编译php时报错如下&#xff1a; # make 。。。 /usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [libphp5.la] Error 1 问题原因&#xff1a; 该问题一般是由于ld在进行库的连接时找不到库文件所致&#xff1a; 解决方案&#xff1a; 出现该…

for死循环、怪异字符串、两次return……Python冷知识(三)

本文转载自Python编程时光&#xff08;ID:Python-Time&#xff09;冷知识系列&#xff0c;已经更新至第三篇。前两篇传送门小明给你准备好了&#xff0c;还没阅读的可以学习一下。谈谈 Python 那些不为人知的冷知识&#xff08;一&#xff09;谈谈 Python 那些不为人知的冷知识…

snmpd 子代理模式编译测试

1、参考链接 1&#xff09;Net-snmp添加子代理示例https://blog.csdn.net/eyf0917/article/details/395466512、操作步骤1&#xff09;网络拷贝下面的文件http://www.net-snmp.org/tutorial/tutorial-5/toolkit/mib_module/NET-SNMP-TUTORIAL-MIB.txthttp://www.net-snmp.org/t…

【数据库】适用于SQLite的SQL语句(三)

目录十七、重新引索REINDEX十八、查询SELECT1、简单查询2、复合查询十九、更新UPDATE二十、公用表表达式&#xff08;CTE&#xff09;WITH1、普通表达式2、递归表达式二十三、VACUUM二十四、UPSERT十七、重新引索REINDEX REINDEX命令用于从头开始删除和重新创建索引。 十八、…

算法系列15天速成——第二天 七大经典排序【中】

首先感谢朋友们对第一篇文章的鼎力支持&#xff0c;感动中....... 今天说的是选择排序&#xff0c;包括“直接选择排序”和“堆排序”。 话说上次“冒泡排序”被快排虐了&#xff0c;而且“快排”赢得了内库的重用&#xff0c;众兄弟自然眼红&#xff0c;非要找快排一比高下。…

如何构建优质的推荐系统服务?| 技术头条

作者丨gongyouliu来源 | 大数据与人工智能&#xff08;ID:ai-big-data&#xff09;任何一个优质的软件服务都必须考虑高性能、高可用(HighAvailability)、可伸缩、可拓展、安全性等5大核心要素&#xff0c;推荐系统也不例外。所以&#xff0c;我们会围绕这5个点来说明&#xff…

DispatcherServlet之HandlerAdapter的handle

2019独角兽企业重金招聘Python工程师标准>>> 注&#xff1a;SpringFramework的版本是4.3.x。 1.DispatcherServlet的doService方法时序图 图1 DispatcherServlet的doService方法时序图 2.AnnotationMethodHandlerAdapter的handle方法时序图 图2的原图在Gith…

【C++】C++11 STL算法(九):番外篇

1、如果获取指针或迭代器指向的类型 详见&#xff1a;C 11&#xff1a;如何获取一个指针或迭代器指向的类型&#xff1f; decltype(*std::declval<Pointer>())decltype&#xff1a;c11关键字&#xff0c;类型推导。详见&#xff1a;【C】C11新增关键字详解 std::declva…

IBM Tivoli Netview在企业网络管理中的实践(附视频)

今天我为大家介绍的一款高端网管软件名叫IBM Tivoli NetView&#xff0c;他主要关注是IBM整理解决方案的用户&#xff0c;分为Unix平台和Windwos平台两种&#xff0c;这里视频演示的是基于Windows 2003 server下的IBM Tivoli NetView 6.1在企业中的部署应用&#xff0c;可以为大…

【C++】C++11 STL算法(十):使用STL实现排序算法

一、快速排序 1、适用于c11版本 template <class ForwardIt> void quicksort(ForwardIt first, ForwardIt last) {if(first last) return;auto pivot *std::next(first, std::distance(first,last)/2);ForwardIt middle1 std::partition(first, last, [pivot](con…

“你行你上”:有本事跟OpenAI Five打一把DOTA?| 极客头条

整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;你们不是嫌弃世界冠军 OG 团队实力太水吗&#xff1f;“你行你上”的机会来了。4 月 14 日凌晨&#xff0c;OpenAI Five 以 2:0 击败了 DOTA 世界冠军团队 OG 引发热议。比赛当天&#xff0c;OpenAI 也宣布…

Java学习笔记二十五:Java面向对象的三大特性之多态

Java面向对象的三大特性之多态 一&#xff1a;什么是多态&#xff1b; 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口&#xff0c;使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现。 现实中&#xff0c;比如我们按下 F1 键这个动作&am…

省钱之道--图解域域树域林根域的含义

省钱之道--图解域域树域林根域的含义 标签&#xff1a;域 域林 图解域域树域林根域的含义 域树 根域原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://angerfire.blog.51cto.com/198455/1…

AI算法在FPGA芯片上还有这种操作?| 技术头条

作者 | 杨付收出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;碾压与崛起AI算法的崛起并非一帆风顺的&#xff0c;现在的主流的NN类的卷积神经网络已经是第二波浪潮了&#xff0c;早在上个世纪80年代&#xff0c;源于仿生学&#xff0c;后又发展于概率学的早期AI算…

[Doctrine Migrations] 数据库迁移组件的深入解析三:自定义数据字段类型

自定义type 根据官方文档&#xff0c;新建TinyIntType类&#xff0c;集成Type&#xff0c;并重写getName&#xff0c;getSqlDeclaration&#xff0c;convertToPHPValue&#xff0c;getBindingType等方法。 TinyIntType.php完整代码&#xff1a; <?php namespace db\types; …

【网络编程】同步IO、异步IO、阻塞IO、非阻塞IO

IO分两阶段&#xff1a; 1.数据准备阶段&#xff1a;在该阶段&#xff0c;根据是否等待数据准备&#xff0c;将IO分成阻塞和非阻塞&#xff1b; 2.内核空间复制回用户进程缓冲区阶段&#xff1a;在该阶段&#xff0c;只要程序需要等待复制完成&#xff0c;才能往下运行&#xf…

PowerDesigner 使用的一些技巧(转)

-> Generate Database &#xff0c;在弹出的 Database Generation 对话框中选择脚本存取路径及脚本文件名称 3、点击确定后生成数据库建库脚本(*.sql) 二、生成脚本时报错&#xff1a; Column Code maxinum lenght 原因&#xff1a;字段超过15字符就发生错误&…

【网络编程】epoll 笔记

一、最大连接数 1、select select在单进程中最多同时监听1024个fd&#xff1b;要想实现百万并发需要一千个进程&#xff0c;并且性能会很差、内存消耗巨大。所以select只适用于连接数在一千个以下的场景。 2、epoll epoll本身不限制连接数&#xff0c;但是连接数会受到系统…

交通图网络太大太复杂,没法处理?DMVST-Net巧妙处理

参加「CTA 核心技术及应用峰会」&#xff0c;请扫码报名 ↑↑↑作者 | Huaxiu Yao, Fei Wu, Jintao Ke, Xianfeng Tang等译者 | 一步一步望着天上星编辑 | Jane出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;【导语】自 2018 年 6 月 DeepMind 发表论文“…

小程序这件事 撸起袖子加油干

写在前面的话&#xff1a; 初次接触小程序&#xff0c;便被它开发的简易与便捷所吸引。总按耐不住对未知的探索欲望&#xff0c;于是乎撸起袖子来干一个吧。附&#xff1a;小程序开发文档 项目介绍 艺龙酒店小程序实践 使用<swiper>标签实现网页轮播图的效果&#xff0c;…

mutt使用小技巧 指定发件人 添加附件

经常我们需要从linux服务器上直接发送一些邮件到自己&#xff0c;或者用户的邮箱里&#xff0c;mail命令固然重要&#xff0c;但是缺点是不能方便的进行插入附件。这里选择使用mutt&#xff0c;方便又好用。 实例&#xff1a; echo "邮件内容" | mutt -e "my_hd…

恶犬秒变萌汪:东京大学开源“治愈系”GAN图片拼贴工具 | 技术头条

参加「CTA 核心技术及应用峰会」&#xff0c;请扫码报名 ↑↑↑译者 | linstancy责编 | 琥珀出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;教新手画画&#xff1f;字体风格迁移&#xff1f;换明星“假脸”&#xff1f;毫无疑问&#xff0c;在图像生成中…

【视频】视频传输协议:RTSP、RTP、RTCP、RTMP、HTTP

一、RTSP、RTP、RTCP RTSP、RTP、RTCP是一组协议,其中RTSP在应用层、RTP和RTCP在传输层。RTP用于传输流媒体数据,而RTCP对RTP进行控制、同步。 二、RTSP、RTMP、HTTP 1、共同点 RTSP、RTMP、HTTP都是用在应用层。理论上这三种协议都可以做直播和点播,但直播一般用RTSP和…