一些零碎的小知识点(数据库)
Posted 是璇子鸭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些零碎的小知识点(数据库)相关的知识,希望对你有一定的参考价值。
零碎知识点
主键列需满足的条件:
不含空值和重复值
不允许修改和删除
最好与业务无关
SQLite的时间表示方法
1、文本类型TEXT
2、整数类型INTEGER
文本格式
年-月-日 时:分:秒
整数格式
Unix时间戳(时点,便于计算)
越晚发生的日期,数值越大
关于关键字
①关键字表示所选字段 select;
②关键字指明数据来源 from;
关键字大写,其他内容一律小写(SQL本身不区分大小写和忽略空行换行)
排序 order by
默认为升序(从低到高)
多层排序时,逗号间隔,从外到内
ASC 升序排序关键字(默)
DESC 降序排序关键字
限制查询结果数量 LIMIT
LIMIT(起始位置,返行数)
起始位置:起始行号 - 1(默认为0)
SELECT
FROM
WHERE
ORDER BY
LIMIT
GROUP BY 子句
类似于excel中的分类汇总,SQL先执行GROUP BY,才执行SELECT;
HAVING 对分组结果进行筛选
HAVING作用于分组结果,用于筛选分组(WHERE作用于原数据表,筛选行)
JOIN(平等)
默认为INNER JOIN
与FROM型联结一样,先列出数据表的笛卡尔积,再把完全符合关联条件的行检索出来
LEFT JOIN(主次)
拼接
SQLite等数据库管理软件中,并没有“百分比”这样的数据类型,故需动手将数值与‘%’拼接起来;
SQLite中使用“||”将左右两边内容拼接;
||为 SQLite 特有的设计。
在 mysql 等其它数据库管理软件中需要使用concat()函数,写成concat(内容1, 内容2, …, 内容N)的形式。
单行函数
原字段与结果字段行数一致
datetime()
datetime (pay_time, ‘unixepoch’),利用datetime函数,把’unixepoch’(Unix时间戳)格式的pay_time列转换为标准日期格式
substring()
从制定位置提取字符串
substring(需处理字段,开始提取位置,提取字符个数)
iif()
聚合函数
count()
count(*) 统计行(含NULL)
count(fruit_price) 统计字段中非空值行的个数
count(DISTINCT fruit_name) 统计字段中唯一非空值行的个数
SELECT count(
iif((delivery_time - pay_time) / 3600 >= 48, 1, NULL)
)
AS 延迟发货订单数
FROM orders;
即当参数为某个字段时,count()函数只会统计非空值
min()、max()
可处理整数、浮点数、文本
avg()、sum()
只处理整数、浮点数,不能处理文本类型数据
单行函数为进行复杂的数据处理而设计,聚合函数为简化运算而生。
零零散散
每当写完一条完整的SQL语句,末尾加分号,与其它语句进行区分
*表示选择所有列
DISTINCT 剔除重复,保留首次
– 注释
BETWEEN a AND b [a, b]
通配符(文本筛选)
% 代替多个字符
_ 代替单个字符
LIKE 后跟搜索模式
NOT在条件之前,倒转真假。优先级高于OR和AND
一些细节
SQLite中浮点数的运算比整数更为灵活。如果参与除法运算的有整数类型,结果的小数部分也会被自动舍去;
在别名两侧加反引号的三种情况
1、别名与SQL中的关键字相同 (如:‘where’)
2、别名以数字开头 (如:‘2022年销售额’)
3、别名中包含特殊字符 (如:‘互联网+’)
实用tips
- Fn + F11 网页全屏
- IN(a, b, c, …),适合查找值在某几个任选的情况
以上是关于一些零碎的小知识点(数据库)的主要内容,如果未能解决你的问题,请参考以下文章