【数据库】适用于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五种数据格式比较 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。

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

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

从对ML一窍不通到斩获AT等special offer,拿下大厂算法岗就靠它了
整理 | 一一出品 | AI科技大本营(ID:rgznai100)2019 年春招就要过去,秋招也就不远了。对于很多计算机专业的毕业生来说,大部分都还处于迷茫期,由于大学时的大部分时间都可能在划水,导致不知道现在如何准备就…

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

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

for死循环、怪异字符串、两次return……Python冷知识(三)
本文转载自Python编程时光(ID:Python-Time)冷知识系列,已经更新至第三篇。前两篇传送门小明给你准备好了,还没阅读的可以学习一下。谈谈 Python 那些不为人知的冷知识(一)谈谈 Python 那些不为人知的冷知识…

snmpd 子代理模式编译测试
1、参考链接 1)Net-snmp添加子代理示例https://blog.csdn.net/eyf0917/article/details/395466512、操作步骤1)网络拷贝下面的文件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二十、公用表表达式(CTE)WITH1、普通表达式2、递归表达式二十三、VACUUM二十四、UPSERT十七、重新引索REINDEX REINDEX命令用于从头开始删除和重新创建索引。 十八、…

算法系列15天速成——第二天 七大经典排序【中】
首先感谢朋友们对第一篇文章的鼎力支持,感动中....... 今天说的是选择排序,包括“直接选择排序”和“堆排序”。 话说上次“冒泡排序”被快排虐了,而且“快排”赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下。…

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

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

【C++】C++11 STL算法(九):番外篇
1、如果获取指针或迭代器指向的类型 详见:C 11:如何获取一个指针或迭代器指向的类型? decltype(*std::declval<Pointer>())decltype:c11关键字,类型推导。详见:【C】C11新增关键字详解 std::declva…

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

【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科技大本营(ID:rgznai100)你们不是嫌弃世界冠军 OG 团队实力太水吗?“你行你上”的机会来了。4 月 14 日凌晨,OpenAI Five 以 2:0 击败了 DOTA 世界冠军团队 OG 引发热议。比赛当天,OpenAI 也宣布…

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

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

AI算法在FPGA芯片上还有这种操作?| 技术头条
作者 | 杨付收出品 | CSDN(ID:CSDNnews)碾压与崛起AI算法的崛起并非一帆风顺的,现在的主流的NN类的卷积神经网络已经是第二波浪潮了,早在上个世纪80年代,源于仿生学,后又发展于概率学的早期AI算…

[Doctrine Migrations] 数据库迁移组件的深入解析三:自定义数据字段类型
自定义type 根据官方文档,新建TinyIntType类,集成Type,并重写getName,getSqlDeclaration,convertToPHPValue,getBindingType等方法。 TinyIntType.php完整代码: <?php namespace db\types; …

【网络编程】同步IO、异步IO、阻塞IO、非阻塞IO
IO分两阶段: 1.数据准备阶段:在该阶段,根据是否等待数据准备,将IO分成阻塞和非阻塞; 2.内核空间复制回用户进程缓冲区阶段:在该阶段,只要程序需要等待复制完成,才能往下运行…

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

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

交通图网络太大太复杂,没法处理?DMVST-Net巧妙处理
参加「CTA 核心技术及应用峰会」,请扫码报名 ↑↑↑作者 | Huaxiu Yao, Fei Wu, Jintao Ke, Xianfeng Tang等译者 | 一步一步望着天上星编辑 | Jane出品 | AI科技大本营(id:rgznai100)【导语】自 2018 年 6 月 DeepMind 发表论文“…

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

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

恶犬秒变萌汪:东京大学开源“治愈系”GAN图片拼贴工具 | 技术头条
参加「CTA 核心技术及应用峰会」,请扫码报名 ↑↑↑译者 | linstancy责编 | 琥珀出品 | AI科技大本营(id:rgznai100)教新手画画?字体风格迁移?换明星“假脸”?毫无疑问,在图像生成中…

【视频】视频传输协议: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和…