• 一些零碎的小知识点(数据库)


    零碎知识点

    主键列需满足的条件:

    不含空值和重复值
    不允许修改和删除
    最好与业务无关

    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, …),适合查找值在某几个任选的情况
  • 相关阅读:
    蜂鸟E203学习笔记(四)——取指
    Vue非父子组件之间的通信
    探讨C#、C++和Java这三门语言在嵌入式的地位
    基于MYSQL的新闻发布系统数据库设计项目实战
    企业微信 API 接口调用教程:深入解析企业微信 API 的用法
    golang 结构体标签 -- struct tag (八)
    服务网关之Spring Cloud Gateway
    我大抵是卷上瘾了,横竖睡不着!竟让一个Bug,搞我两次!
    【Mysql】Mysql获取排班时间段中的休息时间段方法
    Android 14 transtion 动画流程
  • 原文地址:https://blog.csdn.net/qq_45060674/article/details/126576216