深入浅出SQL(9)-SELECT进阶

2023-10-31

该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动!

 

SELECT进阶:以新视角看你的数据

 

更精确的查询:

    我们已经知道如何使用SELECT和WHERE子句选出数据,但有时候我们需要比这个组合更加精确的选取工具;

    本章我们将学习如何给数据排序和归组,以及对查询结果套用数学运算,限制条件等;

 

创建一个表用以说明本章的内容:

    记录四季的饮品及其销售记录;

    饮品类型分为春季 夏季 秋季 冬季以及通用5种类型;

    字段:id序号    drink_name名称    cost价格    meter容量    burdening_main主配料    season适应季节    sale_date售出日期;

 

SQL语句示例:

    创建表:

mysql> CREATE TABLE drinks_of_four_reason

    -> (

    -> id INT NOT NULL AUTO_INCREMENT,

    -> drink_name VARCHAR(30) NOT NULL,

    -> cost DEC(4,2) NOT NULL,

    -> meter INT NOT NULL DEFAULT 200,

    -> burdening_main VARCHAR(30) NOT NULL DEFAULT 'Water',

    -> season CHAR(2) NOT NULL DEFAULT '通用',

    -> sale_date DATE NOT NULL,

    -> PRIMARY KEY (id)

    -> );

    插入数据:(仅显示一条)

mysql> INSERT INTO drinks_of_four_reason

    -> (drink_name,cost,meter,burdening_main,season,sale_date)

    -> VALUES

    -> ('apple juice',5.5,250,'apple','春季','2018-09-01’),

熟悉一下表中的数据:(还有很多)

mysql> SELECT * FROM drinks_of_four_reason;                                                                           

+----+------------------+------+-------+----------------+--------+------------+

| id | drink_name       | cost | meter | burdening_main | season | sale_date  |

+----+------------------+------+-------+----------------+--------+------------+

|  1 | apple juice      | 5.50 |   250 | apple          | 春季   | 2018-09-01 |

|  2 | banana juice     | 5.50 |   250 | banana         | 夏季   | 2018-09-01 |

改装升级:

    上边这个表不但记录了我们售卖的饮品,同时还是各个饮品的销售记录;(记录的内容有点多,在下一章我们会学习到如何进行精简)

    现在,我们想要对我们的果汁加上一点介绍drink_des,来帮助销售人员更好的介绍我们的饮料;

 

添加drink_des列:

mysql> ALTER TABLE drinks_of_four_reason

    -> ADD COLUMN drink_des VARCHAR(100);

为新列添加数据:

    这里我们需要思考一下,我们需要针对每种饮料去为它的描述字段赋值;

    我们可以这样:

        UPDATE drinks_of_four_reason SET drink_des = ‘This is the best one!’ WHERE drink_name = ‘apple juice’;

    但是,这样会有个问题:

        我们需要针对每一种饮料都写这样一条SQL;

        这种大量SQL更新的方式也会带来潜在的问题,后续的SQL对于满足条件的记录可能会再一次更新,尤其是WHERE子句中使用OR链接条件时;

 

我们需要:

    只执行一条SQL,完成上述动作;避免后续的更新覆盖已有更新,即一条记录更新过之后就不要再次更新了;

 

CASE检查:

    避开超大型的UPDATE,我们可以使用更好的CASE检查现有的列的值和条件,来结合UPDATE语句;

    如果现有列的值符合条件,我们才会在新列中填入值;

    CASE甚至能告诉RDBMS,如果没有记录符合条件时该如何处理;

 

基本语法:

    UPDATE table

    SET new_column = 

    CASE

        WHEN column1 = someone

            THEN newvalue

        WHEN column2 = someone

            THEN newvalue

        ELSE newvalue

    END;

 

CASE检查 WHEN的条件满足时 THEN的值将生效;检查结束END;

 

使用CASE表达式来UPDATE:

mysql> UPDATE drinks_of_four_reason

    -> SET drink_des = 

    -> case

    -> WHEN drink_name = 'apple juice' THEN 'I am apple juice and I am good!'

    -> WHEN drink_name = 'banana juice' THEN 'I am banana juice and I am good!'

    -> WHEN drink_name = 'pear juice' THEN 'I am pear juice and I am good!'

    -> WHEN drink_name = 'peach juice' THEN 'I am peach juice and I am good!'

    -> WHEN drink_name = 'orange juice' THEN 'I am orange juice and I am good!'

    -> WHEN drink_name = 'watermelon juice' THEN 'I am watermelon juice and I am good!'

    -> WHEN drink_name = 'strawberry juice' THEN 'I am strawberry juice and I am good!'

    -> WHEN drink_name = 'apricot juice' THEN 'I am apricot juice and I am good!'

    -> WHEN drink_name = 'cherry juice' THEN 'I am cherry juice and I am good!'

    -> WHEN drink_name = 'plum juice' THEN 'I am plum juice and I am good!’

    -> ELSE ''

    -> END;

再查看我们的表,我们会发现表中的drink_des列都已经更新了相应的数据;

 

对于我们刚刚担心的多个条件的场景,可以在WHEN子句中,同样的使用OR来链接多个条件(之前WHERE子句中的条件在这里都可以使用);

这样满足条件的记录会被赋值为相应CASE检查的值,切后续不会再有重复的操作出现;

 

ELSE:

    ELSE子句是可选的,在完全不符合其他条件的时候会使用相应值更新列;这样避免列值是NULL;

    当然,如果没有ELSE,而其他所有条件又都不满足,那么想更新的列里什么也不会发生;

 

可以在关键词END后加上WHERE子句,就好像我们熟悉的UPDATE一样,CASE就只会套用在符合WHERE条件的列上;

CASE表达式同样可以搭配SELECT、INSERT、DELETE等子句;

 

表变得“乱七八糟”:

    我么的表有10中饮料,查出所有的记录看起来会很乱,如下图;

 

如何只用一条SQL语句就能让查询出来的饮料按照字母顺序排序?

 

我们需要一种方式来组织我们SELECT出的数据:

    我们需要一份按照drink_name排序,夏季的饮料总清单;

    一条一条的查询、按顺序查出,SQL语句的数量会很多,这显然不是我们想要的;

 

有秩序的ORDER BY:

    根据某列的排序(ORDER)返回查询的结果;

    ORDER BY要求程序依照title的字母顺序返回数据;

mysql> SELECT * 

    -> FROM drinks_of_four_reason 

    -> WHERE season = '夏季'

    -> ORDER BY drink_name;

查询结果如下图:

 

安单列排序:

    上述示例中ORDER BY drink_name就是按照名字的字母顺序来排序查询结果的;

    ORDER BY可以按照任何字母顺序来排序查询结果;

    不同的RDBMS会对数字、字母、符号规定排序规则;我们需要知道的是 NULL<数字<大写字母<小写字母;

 

按两列排序:

    会先按照第一列排序,然后对按照第一列排序的结果再按照第二列排序;

mysql> SELECT * 

    -> FROM drinks_of_four_reason 

    -> ORDER BY drink_name,sale_date;

我们举一个简单的例子,方便理解两列排序:

mysql> CREATE TABLE numbers

    -> (

    -> n1 CHAR(1) NOT NULL,

    -> n2 CHAR(1) NOT NULL

    -> );

Query OK, 0 rows affected (0.03 sec)

mysql> INSERT INTO numbers

    -> VALUES

    -> ('0','5'),

    -> ('0','4'),

    -> ('1','4'),

    -> ('0','1'),

    -> ('0','3'),

    -> ('0','3'),

    -> ('1','5'),

    -> ('1','1'),

    -> ('1','3'),

    -> ('1','3');

Query OK, 10 rows affected (0.02 sec)

Records: 10  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM numbers ORDER BY n1,n2;

+----+----+

| n1 | n2 |

+----+----+

| 0  | 1  |

| 0  | 3  |

| 0  | 3  |

| 0  | 4  |

| 0  | 5  |

| 1  | 1  |

| 1  | 3  |

| 1  | 3  |

| 1  | 4  |

| 1  | 5  |

+----+----+

按多列排序:

    我们可以利用所有需要的列来排序所有结果;

    对于作为排序依据的列,你可以依需求尽可能多的使用;

    多列排序的逻辑可以参照两列排序的;

 

执行如下SQL 打印结果:

mysql> SELECT * 

    -> FROM drinks_of_four_reason 

    -> ORDER BY drink_name,sale_date;

 

目前,我们已经掌握了CASE检查,以及ORDER BY;我们继续;

 

有序的drinks:

    我们按照sale_date进行排序;

mysql> SELECT drink_name,sale_date

    -> FROM drinks_of_four_reason 

    -> ORDER BY sale_date;

这是我们得到的结果的一部分:

+------------------+------------+

| drink_name       | sale_date  |

+------------------+------------+

| Apple juice      | 2018-08-21 |

| plum juice       | 2018-08-21 |

| Apple juice      | 2018-08-21 |

| plum juice       | 2018-08-21 |

| apple juice      | 2018-08-29 |

| pear juice       | 2018-08-29 |

…...

| banana juice     | 2018-09-02 |

| pear juice       | 2018-09-03 |

| peach juice      | 2018-09-03 |

| pear juice       | 2018-09-03 |

| peach juice      | 2018-09-03 |

+------------------+------------+

这个列表会很长,如果我们想找到最近一天销售的饮品该怎么做?

    难道要从清单的底端开始寻找;

 

SQL有个反转顺序的关键字:

    默认,SQL根据ORDER BY指定的列都是升序的排列查询结果;

    如果希望降序排列,可以在列名后加上关键字DESC;

 

此DESC非彼DESC:

    DESC table;的是DESCRIPTION表示表说明的意思;

    而在ORDER子句中,则是DESCENDING降序的意思,是一种排序方式;

 

DESC:

    关键字DESC应位于ORDER BY子句中的列名后,用来反转查询结果的顺序;

mysql> SELECT drink_name,sale_date

    -> FROM drinks_of_four_reason 

    -> ORDER BY sale_date DESC;

 

部分查询结果:

+------------------+------------+

| drink_name       | sale_date  |

+------------------+------------+

| pear juice       | 2018-09-03 |

| peach juice      | 2018-09-03 |

| peach juice      | 2018-09-03 |

| pear juice       | 2018-09-03 |

| banana juice     | 2018-09-02 |

…...

| apple juice      | 2018-08-29 |

| Apple juice      | 2018-08-21 |

| plum juice       | 2018-08-21 |

| plum juice       | 2018-08-21 |

| Apple juice      | 2018-08-21 |

+------------------+------------+

默认的升序也有关键字ASC,用法和DESC相同;

 

那种饮料带来的收益更多?

    如果我们想知道 哪种饮料的销售额最大;

    目前我们可以使用ORDER BY来将不同的饮料区分开,但只能显示每条记录的售价,我们需要的是一个总额;

 

SUM可以为我们加总:

    SQL语言中有些特殊关键字,称为函数(function);函数是一段代码,可以对数值执行操作;

    对整列执行数学运算:SUM可把括号里指定的列值全部加总;

mysql> SELECT drink_name,SUM(cost)

    -> FROM drinks_of_four_reason

    -> WHERE drink_name = 'banana juice';

查询的结果:

+--------------+-----------+

| drink_name   | SUM(cost) |

+--------------+-----------+

| banana juice |     22.00 |

+--------------+-----------+

但这只是一种水果的总计,我们有10种水果,如果能用一条语句该有多好;

 

利用GROUP BY完成分组加总:

    在SUM语句中加上GROUP BY;

    它会先进行分组,在进行加总;

mysql> SELECT drink_name,SUM(cost)

    -> FROM drinks_of_four_reason

    -> GROUP BY drink_name;

查询的结果:

+------------------+-----------+

| drink_name       | SUM(cost) |

+------------------+-----------+

| apple juice      |     33.00 |

| banana juice     |     22.00 |

| pear juice       |     22.00 |

| peach juice      |     22.00 |

| orange juice     |     22.00 |

| watermelon juice |     22.00 |

| strawberry juice |     22.00 |

| apricot juice    |     22.00 |

| cherry juice     |     22.00 |

| plum juice       |     22.00 |

+------------------+-----------+

为了方便我们比对查询结果,我们更新一下饮料的cost值;

mysql> UPDATE drinks_of_four_reason

    -> SET cost = 

    -> CASE

    -> WHEN drink_name = 'apple juice' THEN cost - 2

    -> WHEN drink_name = 'banana juice' THEN cost - 1.5

    -> WHEN drink_name = 'pear juice' THEN cost - 1

    -> WHEN drink_name = 'peach juice' THEN cost - 0.5

    -> WHEN drink_name = 'orange juice' THEN cost

    -> WHEN drink_name = 'watermelon juice' THEN cost + 0.5

    -> WHEN drink_name = 'strawberry juice' THEN cost + 1

    -> WHEN drink_name = 'apricot juice' THEN cost + 1.5

    -> WHEN drink_name = 'cherry juice' THEN cost + 2

    -> WHEN drink_name = 'plum juice' THEN 3

    -> ELSE 1

    -> END;

我们还可以对加总的结果进行排序:

    按照新的价格的表中cost值;

mysql> SELECT drink_name,SUM(cost)

    -> FROM drinks_of_four_reason

    -> GROUP BY drink_name

    -> ORDER BY SUM(cost) DESC;

查询结果: 

   -> ORDER BY SUM(cost) DESC;

+------------------+-----------+

| drink_name       | SUM(cost) |

+------------------+-----------+

| cherry juice     |     30.00 |

| apricot juice    |     28.00 |

| strawberry juice |     26.00 |

| watermelon juice |     24.00 |

| orange juice     |     22.00 |

| apple juice      |     21.00 |

| peach juice      |     20.00 |

| pear juice       |     18.00 |

| banana juice     |     16.00 |

| plum juice       |     12.00 |

+------------------+-----------+

AVG搭配GROUP BY:

    计算多条的平均值;

mysql> SELECT drink_name,AVG(cost)

    -> FROM drinks_of_four_reason

    -> GROUP BY drink_name

    -> ORDER BY AVG(cost) DESC;

查询结果:

+------------------+-----------+

| drink_name       | AVG(cost) |

+------------------+-----------+

| cherry juice     |  7.500000 |

| apricot juice    |  7.000000 |

| strawberry juice |  6.500000 |

| watermelon juice |  6.000000 |

| orange juice     |  5.500000 |

| peach juice      |  5.000000 |

| pear juice       |  4.500000 |

| banana juice     |  4.000000 |

| apple juice      |  3.500000 |

| plum juice       |  3.000000 |

+------------------+-----------+

MAX和MIN:

    检查表中最大值和最小值;

    两者用法相同;

mysql> SELECT drink_name,MAX(cost)

    -> FROM drinks_of_four_reason

    -> GROUP BY drink_name

    -> ORDER BY MAX(cost) DESC;

COUNT计算数量:

    计算orange juice一共有多少条记录;

    COUNT将返回指定列中的行数;

mysql> SELECT drink_name,COUNT(id)

    -> FROM drinks_of_four_reason

    -> WHERE drink_name = 'orange juice';

查询结果:

+--------------+-----------+

| drink_name   | COUNT(id) |

+--------------+-----------+

| orange juice |         4 |

+--------------+-----------+

如果想计算售出orange juice有多少天呢?

    我们先来看看多少条记录;

mysql> SELECT drink_name,sale_date

    -> FROM drinks_of_four_reason

    -> WHERE drink_name = 'orange juice';

查询结果:

+--------------+------------+

| drink_name   | sale_date  |

+--------------+------------+

| orange juice | 2018-09-01 |

| orange juice | 2018-08-31 |

| orange juice | 2018-08-29 |

| orange juice | 2018-08-31 |

+--------------+------------+

显然,我们不能直接通过COUNT(sale_date)来计算售出的天数,因为有一条重复的日期;

 

关键字DISTINCT:

    这是一个关键字 不是函数,是需要加在我们需要的列名前边即可;

    他可以选出与众不同的值——去重;

mysql> SELECT DISTINCT sale_date

    -> FROM drinks_of_four_reason

    -> WHERE drink_name = 'orange juice'

    -> ORDER BY sale_date DESC;

查询结果:

+------------+

| sale_date  |

+------------+

| 2018-09-01 |

| 2018-08-31 |

| 2018-08-29 |

+------------+

值得注意的是:

    SELECT DISTINCT column1, column2;mysql会认为将两列都去重;

    而写成SELECT column1, DISTINCT column2;mysql则会报错,因为DISTINCT必须放在要查询字段的开头;

    所以,DISTINCT一般用来查询不重复记录的条数;

 

DISTINCT和COUNT函数搭配使用:

    查询售出orange juice有多少天;

mysql> SELECT COUNT(DISTINCT sale_date)

    -> FROM drinks_of_four_reason

    -> WHERE drink_name = 'orange juice';

查询结果:

+---------------------------+

| COUNT(DISTINCT sale_date) |

+---------------------------+

|                         3 |

+---------------------------+

查询中的NULL:

    比如在Min中,NULL的数据并不会有影响;

 

LIMIT查询结果的数量:

    我们可以用LIMIT限制查询结果的数量;

    比如,我们只想看到售出orange juice的最近两天;

mysql> SELECT DISTINCT sale_date

    -> FROM drinks_of_four_reason

    -> WHERE drink_name = 'orange juice'

    -> ORDER BY sale_date DESC

    -> LIMIT 2;

 

查询结果:

+------------+

| sale_date  |

+------------+

| 2018-09-01 |

| 2018-08-31 |

+------------+

LIMIT,只限第二名出现:

    LIMIT甚至能直接点出第二条,只需使用时添加两个参数;

    LIMIT 0,4:从0的位置开始 返回4条记录;

    那么查询第二条的LIMIT可以是LIMIT 1,1;

 

mysql> SELECT DISTINCT sale_date

    -> FROM drinks_of_four_reason

    -> WHERE drink_name = 'orange juice'

    -> ORDER BY sale_date DESC

    -> LIMIT 1,1;

 

查询结果:

+------------+

| sale_date  |

+------------+

| 2018-08-31 |

+------------+

注意:字符串的下标比较特殊,是从1开始的;SQL的计数则是从0开始的;

 

现在我们的查询越来越长了,即便我们已经掌握了更多的工具,这是因为我们的数据太复杂,我们会在下一章讨论;

 

总结:

本章我们学习了进阶的SELECT函数、关键字和查询;

1.ORDER BY:根据指定的列,按字母顺序排列查询结果;

2.GROUP BY:根据共有列,把记录分成多个组;

3.COUNT:返回一个整数值,表示有多少条记录符合查询条件;

4.DISTINCT:不同的值只会返回一次,返回结果中没有重复的值;

5.SUM:把数值列中的数据加总;

6.AVG:返回数列值的平均值;

7.MAX和MIN:返回列中的最大和最小值;

8.LIMIT:可以明确指定返回记录的数量,以及从哪一条记录开始返回;

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入浅出SQL(9)-SELECT进阶 的相关文章

  • 相似列出现的次数

    我是 SQL SERVER 新手 需要您的建议 我有一张大桌子 上面有商店信息 这是 bench id 列 bench id 31 51 51 61 61 61 71 71 我创建了另一个包含两列的小表 distinct bench num
  • 按组的 SQL 计数

    我必须遵循架构 Movie mvID title rating year Director directorID firstname lastname Genre mvID genre Direct mvID directorID 我需要知
  • MySQL SUM 函数

    我了解 SQL sum 函数 这是我的代码
  • 如何统计group by返回的组数?

    select count as count from table group by foreign id order by count 这将返回每个外部 ID 的多个匹配项 然而 我正在寻找的是总结结果 所以结果是 10 results g
  • 在 Oracle SQL 中根据时间对重复的分组项运行总计

    我的第一篇文章 所以请耐心等待 我想根据按日期划分的值进行求和 但只需要日期的总和 而不是按项目分组的总和 已经为此工作好几天了 试图避免使用光标 但可能不得不这样做 这是我正在查看的数据的示例 顺便说一句 这是在 Oracle 11g 中
  • 如何返回不同的值及其计数?

    我想做的 希望 很简单 但我只是不太掌握正确的语法 我想返回表中的所有不同值 并计算每个值的记录数 所以 在 PHP 中 我有 result mysql query SELECT DISTINCT tagName FROM tagTable
  • MySQL 中多列的不同

    我希望找出 MySQL 数据库中不同行的计数 id val1 val2 val3 1 1 1 1 2 1 1 1 3 2 2 2 4 2 2 2 在上表中 查询将返回 val1 val2 val3 count 1 1 1 2 2 2 2 2
  • 具有多个计数子查询的 SELECT 查询

    我刚刚为报告编写了这个查询 但我最初编写它时没有在每个子查询上使用日期范围过滤器 但这没有用 所以我将它添加到每个子查询中 这很有效 但我真的不喜欢每次都重复它 是否有语法可以更简单地完成同样的事情 SELECT Count r id AS
  • 如何让 PHP 代码行更短?

    我有这个循环 同时它会计算输出 while wp query gt have posts wp query gt the post current current2 然后要调用正确的 html 类 我的设计需要这样 div class Th
  • Count() 和左连接问题

    我在查询时遇到问题 该查询显示商店列表以及与其关联的产品数量 我已经玩左连接等有一段时间了 但没有成功 这些表具有以下结构 商店表包含列 id name 产品表包含列 id name status shop 查询如下 select s na
  • 计算 Java 集合中出现次数的优雅方法

    给定一个可能有重复项的对象集合 我希望最终得到每个对象的出现次数 我通过初始化一个空的来做到这一点Map 然后迭代Collection并将对象映射到其计数 每次映射已包含该对象时增加计数 public Map
  • 计数累计和

    我想知道是否可以对计数进行累积和 我想举的一个例子是今年影响美国的风暴 我想要一个列出 2014 年月份的结果集 以及该月之前影响美国的风暴累计总数 我希望得到 3 列的内容 Month NumberofStorms 和 Cumulativ
  • MySQL - 按 count() 和 GROUP BY 排名

    我有我的 mysql 表posts 我的论坛的所有帖子都存储在其中 就像这样 id uid thread post title text time int int varchar int varchar text int 现在我想显示用户个
  • Lua中如何对数字表求和?

    Lua有内置的吗sum 功能 我似乎找不到一个 我几乎翻遍了文档中的所有地方 或许table sum 或类似的东西 以遵循当前的约定 但由于我找不到它 我不得不实现它 function sum t local sum 0 for k v i
  • 计算div内的div

    我已经尝试过此页面上的解决方案来计算父 类 div 内的div 但不幸的是我的结果总是显示现有子 div 的总数 因为示例中的两个 span 标签都将输出 7 为了更好地理解 这是代码 html 缺少什么 我绝对是新手 谢谢
  • Over() 函数没有覆盖表中的所有行

    我正在使用 MySQL 练习 SQL 并在 SQL 中遇到了奇怪的行为 假设我有一张这样的表 Delivery table delivery id customer id order date customer pref delivery
  • 根据时间变量对两个表中的一对 COUNT 求和

    花了一个多小时的时间寻找这个问题的答案 但运气不佳 我有两个具有相同列名的区域表 我可以根据以下查询为任一表提供结果列表 将 Table2 替换为 Table1 SELECT Table1 YEAR FORMAT COUNT Table1
  • Python 中的阶乘求和

    我想使用 python 中的符号代数来计算阶乘和 我可以生成的问题的最简单版本如下 from sympy abc import j from math import factorial from sympy import summation
  • python 求数组中正数之和的函数

    我需要编写一个函数 它接受一个数字数组并找到所有数字的最大和 换句话说 我需要找到正数的总和 我写了这个 我收到 列表超出范围 想法 def maximum sub A x 0 i 0 for i in A while A i gt 0 x
  • PHP - 计算特定数组值

    如何计算数组中值等于常量的元素的数量 例子 myArray array Kyle Ben Sue Phil Ben Mary Sue Ben 如何直接知道里面有多少个 Ben array array Kyle Ben Sue Phil Be

随机推荐

  • 全新Thinkphp养我吧宠物区块链网站源码+可封装APP源码 免费下载 源码搭建教程

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 Sma
  • Node.js的包、npm、yarn

    包 相当于java中的一个jar包 NPM全称是Node js package Manage 包的管理工具 是一个命令行软件 常用命令 npm init 初始化package json文件 npm install 包名 安装一个包 npm
  • 千分位逗号分隔

    toLocaleString 123456489656456 toLocaleString en US 带小数 但是toString toLocaleString只能保留两位 123456489656456 45764655 toLocal
  • 基于Fabric+IPFS大规模数据上链方案

    基于Fabric IPFS大规模数据上链方案 更多区块链技术与应用分类 区块链应用 区块链开发 以太坊 Fabric BCOS 密码技术 共识算法 比特币 其他链 通证经济 传统金融场景 去中心化金融 防伪溯源 数据共享 可信存证 第一章
  • 视图和基本表的区别

    基本表是实实在在得保存数据的实体 写入的数据都保存在表中 而视图是不保存数据的 也没有数据 也可以说视图就是一条语句 实际上视图从表中去数据 只是给我们的感觉好像直接从表中取得一样 表可以建立各种触发器 可以建立索引 可以建立主健 约束等
  • Redisson实现分布式锁

    1 Redisson简介 Redis 是最流行的 NoSQL 数据库解决方案之一 而 Java 是世界上最流行 注意 没有说 最好 的编程语言之一 虽然两者看起来很自然地在一起 工作 但是要知道 Redis 其实并没有对 Java 提供原生
  • Foxmail错误信息::服务器不支持ssl,请检查服务器配置, errorCode: 1

    foxmail发邮件时显示错误 错误信息 服务器不支持ssl 请检查服务器配置 errorCode 1 gmail邮箱 能上google 但邮件发不出去 方法一 重新新建gmail邮箱到foxmail 方法二 亲测可用 重新设置 SSL端口
  • 大连理工,吉林大学,同济,北航,西交计算机考博上岸分享

    前言 一共参加了5所学校的博士考核 凡是进入面试的 都录取了 想要说明的是 在找博士学校和老师期间 没有得到任何肯定的回复 大多数是 竞争压力大 或者 欢迎报考 所以才会报考这么些学校 争取多一个机会 多一份希望 因为自己也是再普通不过的学
  • 解决ubuntu18.04下ibus-libpinyin 拼音无法选择除第一个的候选词问题以及中英文切换问题

    莫名其妙 在使用时 用ibus拼音输入法打字 只要不是首候选词 按数字选择就会直接打出数字 然后输入法变成英文 必须重新切换才行 解决办法 cd cache ibus rm rf libpinyin 参考链接 https blog csdn
  • ChatGPT专业应用:生成YouTube标签

    正文共 512 字 阅读大约需要 2 分钟 品牌运营 SEO投放必备技巧 您将在2分钟后获得以下超能力 生成youtube标签 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Linda 此图
  • 运行第一个flex程序(1)

    一 启动Flex Builder 2 0 然后在顶部菜单中选择File gt New gt Flex Project 会出现一个对话框 如图2 8所示 首先是配置程序的数据访问方式 共有三种方式 图2 8 l Basic 一般配置 适用于常
  • transforms模块—PyTorch图像处理与数据增强方法

    pre line height 125 td linenos normal color inherit background color rgba 0 0 0 0 padding left 5px padding right 5px spa
  • Linux display subsytem(1)_概述

    http www wowotech net display subsystem display overview html 1 前言 显示子系统是linux系统中比较复杂的子系统之一 对下 它要管理形态各异的 性能各异的显示相关的器件 对上
  • 深入理解Java虚拟机jvm-内存溢出OO-本机直接内存溢出(Direct Memory) java.lang.OutOfMemoryError

    本机直接内存溢出 示例 虚拟机参数 输出 示例 public class DirectMemoryOOM private static final int 1MB 1024 1024 public static void main Stri
  • 软件测试 pytest pytest的命名规则 用例的前后置 conftest.py 定制allure报告 @pytest.mark.parametrize()装饰器作数据驱动

    文章目录 1 pytest简介 1 1 pytest的命名规则 1 2 运行方式 1 2 1 主函数方式 少用 1 2 2 命令行方式 少用 1 2 3 pytest ini的配置文件方式 最经常用 1 3 pytest执行测试用例的顺序
  • ChatGPT所有插件详细教程

    编辑切换为居中 添加图片注释 不超过 140 字 可选 官方插件 编辑切换为居中 添加图片注释 不超过 140 字 可选 插件名称 KeyMate AISearch 描述 使用自定义搜索引擎进行网络搜索的AI插件 领域 网络搜索 创新性 A
  • python 自相关函数_用Python的statsmodels库计算时间序列的自相关函数和画图

    在时间序列分析课程中会需要用到自相关函数的计算 也就是当前期的值和滞后期的值之间的关系 这个指标的计算在计量软件中会比较容易实现 但是如果想要用python做怎么实现呢 代码如下 导入库 import numpy as np import
  • 【sql注入-堆叠注入】多语句执行、结合其他注入

    目录 堆叠注入 一 语法介绍 二 漏洞示例 三 常见形式 网络安全O 堆叠注入 一 语法介绍 版本 可以影响几乎所有的关系型数据库 原理 将多条语句堆叠在一起进行查询 且可以执行多条SQL语句 语句之间以分号 隔开 其注入攻击就是利用此特点
  • 10月2日 智能工厂专题

    10月2日 智能工厂专题 中秋国庆双节盛典 智慧工厂 智能工厂是利用各种现代化的技术 实现工厂的办公 管理及生产自动化 达到加强及规范企业管理 减少工作失误 堵塞各种漏洞 提高工作效率 进行安全生产 提供决策参考 加强外界联系 拓宽国际市场
  • 深入浅出SQL(9)-SELECT进阶

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 SELECT进阶 以新视角看你的数据 更精确的查询 我们已经知道如何使用SELECT和WHERE子句选出数据 但有时候我们需要比这个组合更加精确的选取工具 本章我们将