当前位置: 首页 > news >正文

【MySQL】 数据类型

欢迎拜访:雾里看山-CSDN博客
本篇主题:【MySQL】 数据类型
发布时间:2025.1.27
隶属专栏:MySQL

在这里插入图片描述

目录

  • 数据类型分类
  • 数值类型
    • tinyint类型
      • 数值越界测试
      • 结果说明
    • bit类型
      • 基本语法
      • 使用
      • 注意事项
    • 小数类型
      • float
        • 语法
        • 使用
        • 注意事项
      • decimal
        • 语法
        • 使用
      • float 和decimal的比较
  • 字符串类型
    • char
      • 语法
      • 使用
      • 注意事项
    • varchar
      • 语法
      • 使用
      • 注意事项
    • char 和varchar 的比较和选择
  • 日期类型
    • 类型
    • 使用
  • enum和set
    • 语法
    • 使用
    • 注意事项
    • 类型查找
      • enum查找
      • set查找
        • 严格筛选
        • 函数筛选

数据类型分类

三列表格
分类数据类型说明
数值类型
bit(M)位类型。M指定位数,默认值为1,范围是1-64。
bool使用0和1表示真和假
tinyint [unsigned]带符号的范围-128 ~ 127 。无符号范围0 ~ 255。默认有符号。
smallint [unsigned]带符号的范围-215 ~ 215-1。无符号范围0 ~ 216-1。默认有符号。
int [unsigned]带符号的范围-231 ~ 231-1。无符号范围0 ~ 232-1。默认有符号。
bigint [unsigned]带符号的范围-263 ~ 263-1。无符号范围0 ~ 264-1。默认有符号。
float[(M,D)] [unsigned]M指定显示长度,D显示小数位数,占用4字节。
double[(M,D)] [unsigned]比float精度更大的小数。M指定显示长度,D显示小数位数,占用8字节。
decimal[(M,D)] [unsigned] M指定显示长度,D显示小数位数
文本、二进制类型
char(size)固定长度字符串,最大255
varchar(size)可变长度字符串,最大长度65535
blob二进制数据
text大文本,不支持全文索引,不支持默认值
日期类型
dateyyyy-mm-dd,具体到天
datetimeyyyy-mm-dd hh:mm:ss具体到秒
timestamp时间戳
String类型
enumenum是一个字符串对象,其值来自表创建时在列规定中显示枚举的一个列值。
setset是一个字符串对象,可以有零或者多个值,其值来自表创建时规定的允许的一列值。指定包括多个set成员的set列值时各成员之间用逗号间隔开。这样的set成员值本身不能包含逗号。

数值类型

在这里插入图片描述

tinyint类型

tinyint smallintintbigint四个整数类型操作基本相同,不同之处只有存储的数据大小不同。我们以tinyint为例进行讲解

数值越界测试

对于有符号的整数tinyint
我们先创建一个tinyint类型的表,然后对其进行插入操作。观察越界情况。

mysql> create table if not exists t1(//创建一个表-> num tinyint-> );
Query OK, 0 rows affected (0.01 sec)mysql> insert into t1 values (-128);//进行插入操作
Query OK, 1 row affected (0.00 sec)mysql> insert into t1 values (127);
Query OK, 1 row affected (0.01 sec)mysql> insert into t1 values (0);
Query OK, 1 row affected (0.01 sec)mysql> insert into t1 values (-18);
Query OK, 1 row affected (0.02 sec)mysql> insert into t1 values (24);
Query OK, 1 row affected (0.00 sec)mysql> select * from t1;//查看插入结果
+------+
| num  |
+------+
| -128 |
|  127 |
|    0 |
|  -18 |
|   24 |
+------+
5 rows in set (0.00 sec)

当我们创建了一个类型为tinyint类型的表时,发现插入的范围只能是-128~127,如果越界插入则会报错。

错误插入示例:

mysql> insert into t1 values (-129);//越界插入
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> insert into t1 values (128);
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> insert into t1 values (243);
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> insert into t1 values (-548);
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> select * from t1;//越界插入的内容不会存到表里
+------+
| num  |
+------+
| -128 |
|  127 |
|    0 |
|  -18 |
|   24 |
+------+
5 rows in set (0.00 sec)

对于无符号的整数tinyint unsigned

mysql> create table t2(-> num tinyint unsigned-> );
Query OK, 0 rows affected (0.01 sec)mysql> insert into t2 values (0);
Query OK, 1 row affected (0.01 sec)mysql> insert into t2 values (255);
Query OK, 1 row affected (0.01 sec)mysql> insert into t2 values (128);
Query OK, 1 row affected (0.01 sec)mysql> insert into t2 values (-1);
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> insert into t2 values (256);
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> insert into t2 values (-128);
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> select * from t2;
+------+
| num  |
+------+
|    0 |
|  255 |
|  128 |
+------+
3 rows in set (0.00 sec)

结果说明

  • 在MySQL中,整形可以指定是有符号的还是无符号的,默认是有符号的。
  • 可以通过unsigned来说明某个字段是无符号的。
  • 其他整数类型和tinyint的使用方法完全相同,差别只在存储数据的大小上。

如果我们向mysql特定的类型中插入不合法的数据,mysql一般是直接拦截我们,不让我们进行操作。反过来,如果我们的数据被成功插入到mysql中了,则数据一定是合法的。
所以,mysql中,数据类型本身也是一种约束。目的是倒逼程序员尽可能正确的插入,另外,如果不是一个很好的使用者的话,mysql也能保证数据的合法性。这使得数据库中的数据是可预期的,完整的。

bit类型

基本语法

bit[M] : 位字段类型,M表示每个值的位数,范围是1~64。如果被忽略,默认为1

使用

mysql> create table t3(-> id int,-> online bit(1)-> );
Query OK, 0 rows affected (0.02 sec)mysql> desc t3;
+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| id     | int(11) | YES  |     | NULL    |       |
| online | bit(1)  | YES  |     | NULL    |       |
+--------+---------+------+-----+---------+-------+
2 rows in set (0.01 sec)mysql> insert into t3 (id, online) values (123, 0);
Query OK, 1 row affected (0.01 sec)mysql> insert into t3 (id, online) values (122, 1);
Query OK, 1 row affected (0.00 sec)mysql> insert into t3 (id, online) values (122, 3);
ERROR 1406 (22001): Data too long for column 'online' at row 1
mysql> insert into t3 (id, online) values (122, -1);
ERROR 1406 (22001): Data too long for column 'online' at row 1
mysql> select * from t3;
+------+--------+
| id   | online |
+------+--------+
|  123 |        |
|  122 |       |
+------+--------+
2 rows in set (0.00 sec)

注意事项

  1. bit字段在在显示时,默认是按照ASCII码值来显示的,我们想显示的看,可以改成16进制
mysql> select id, hex(online) from t3;
+------+-------------+
| id   | hex(online) |
+------+-------------+
|  123 | 0           |
|  122 | 1           |
+------+-------------+
2 rows in set (0.01 sec)
  1. 验证bit是按照ASCII码值来显示的
mysql> alter table t3 change online online bit(10);
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> insert into t3 (id, online) values (134, 'a');
Query OK, 1 row affected (0.00 sec)mysql> insert into t3 (id, online) values (132, 97);
Query OK, 1 row affected (0.02 sec)mysql> select * from t3;
+------+--------+
| id   | online |
+------+--------+
|  123 |        |
|  122 |       |
|  134 |  a     |
|  132 |  a     |
+------+--------+
4 rows in set (0.00 sec)
  1. 验证bit最多存放64位
mysql> create table t4(-> id int,-> online bit(65)-> );
ERROR 1439 (42000): Display width out of range for column 'online' (max = 64)
mysql> create table t4( id int, online bit(64) );
Query OK, 0 rows affected (0.01 sec)mysql> desc t4;
+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| id     | int(11) | YES  |     | NULL    |       |
| online | bit(64) | YES  |     | NULL    |       |
+--------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

小数类型

float

语法
float[(m,d)] [unsigned] : m指定显示长度,d指定小数位数,占用空间四个字节
使用

float(4,2)表示的范围是-99.99~99.99。mysql在保存float的值的时候会进行四舍五入。

mysql> create table t5(-> id int,-> salary float(4,2)-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc t5;
+--------+------------+------+-----+---------+-------+
| Field  | Type       | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+-------+
| id     | int(11)    | YES  |     | NULL    |       |
| salary | float(4,2) | YES  |     | NULL    |       |
+--------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into t5 values(1, 99.99);
Query OK, 1 row affected (0.01 sec)mysql> insert into t5 values(2, -99.99);
Query OK, 1 row affected (0.01 sec)mysql> insert into t5 values(2, -12.34);
Query OK, 1 row affected (0.01 sec)mysql> insert into t5 values(2, 43.21);
Query OK, 1 row affected (0.00 sec)mysql> insert into t5 values(2, 99.995);
ERROR 1264 (22003): Out of range value for column 'salary' at row 1
mysql> insert into t5 values(2, 99.994);
Query OK, 1 row affected (0.00 sec)mysql> insert into t5 values(2, -99.994);
Query OK, 1 row affected (0.01 sec)mysql> insert into t5 values(2, -99.996);
ERROR 1264 (22003): Out of range value for column 'salary' at row 1mysql> select * from t5;
+------+--------+
| id   | salary |
+------+--------+
|    1 |  99.99 |
|    2 | -99.99 |
|    2 | -12.34 |
|    2 |  43.21 |
|    2 |  99.99 |
|    2 | -99.99 |
+------+--------+
6 rows in set (0.00 sec)

float(4,2) unsigned表示的范围是0~99.99。

mysql> create table t6(-> id bigint,-> salary float(4,2) unsigned-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc t6;
+--------+---------------------+------+-----+---------+-------+
| Field  | Type                | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| id     | bigint(20)          | YES  |     | NULL    |       |
| salary | float(4,2) unsigned | YES  |     | NULL    |       |
+--------+---------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into t6 values(1,99.99);
Query OK, 1 row affected (0.00 sec)mysql> insert into t6 values(1, 0);
Query OK, 1 row affected (0.00 sec)mysql> insert into t6 values(1, -99.99);
ERROR 1264 (22003): Out of range value for column 'salary' at row 1
mysql> insert into t6 values(1, -0.99);
ERROR 1264 (22003): Out of range value for column 'salary' at row 1
mysql> insert into t6 values(1, 99.996);
ERROR 1264 (22003): Out of range value for column 'salary' at row 1
mysql> insert into t6 values(1, 99.994);
Query OK, 1 row affected (0.00 sec)mysql> select * from t6;
+------+--------+
| id   | salary |
+------+--------+
|    1 |  99.99 |
|    1 |   0.00 |
|    1 |  99.99 |
+------+--------+
3 rows in set (0.00 sec)
注意事项
  1. float的默认精度,默认是6位有效数字
mysql> alter table t5 modify salary float;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc t5;
+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| id     | int(11) | YES  |     | NULL    |       |
| salary | float   | YES  |     | NULL    |       |
+--------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into t5 values(1, 2435324524.143143123412);
Query OK, 1 row affected (0.01 sec)mysql> insert into t5 values(1, 0.143143123412);
Query OK, 1 row affected (0.01 sec)mysql> insert into t5 values(1, 3456889470980.14314);
Query OK, 1 row affected (0.00 sec)mysql> select * from t5;
+------+---------------+
| id   | salary        |
+------+---------------+
|    1 |         99.99 |
|    2 |        -99.99 |
|    2 |        -12.34 |
|    2 |         43.21 |
|    2 |         99.99 |
|    2 |        -99.99 |
|    1 |    2435320000 |
|    1 |      0.143143 |
|    1 | 3456890000000 |
+------+---------------+
9 rows in set (0.00 sec)

decimal

语法
decimal(m,d) [unsigned] : 定点m指定长度,d表示小数点的位数
使用

decimal类型在使用时几乎和float类型相同,同样在保存数据的时候,会进行四舍五入。

mysql> create table t7(-> id int,-> salary decimal(4,2)-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc t7;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id     | int(11)      | YES  |     | NULL    |       |
| salary | decimal(4,2) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into t7 values(1,99.99);
Query OK, 1 row affected (0.00 sec)mysql> insert into t7 values(1,-99.99);
Query OK, 1 row affected (0.01 sec)mysql> insert into t7 values(1,0);
Query OK, 1 row affected (0.01 sec)mysql> insert into t7 values(1,99.994);
Query OK, 1 row affected, 1 warning (0.01 sec)mysql> insert into t7 values(1,99.996);
ERROR 1264 (22003): Out of range value for column 'salary' at row 1
mysql> insert into t7 values(1,-99.996);
ERROR 1264 (22003): Out of range value for column 'salary' at row 1
mysql> insert into t7 values(1,-99.994);
Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from t7;
+------+--------+
| id   | salary |
+------+--------+
|    1 |  99.99 |
|    1 | -99.99 |
|    1 |   0.00 |
|    1 |  99.99 |
|    1 | -99.99 |
+------+--------+
5 rows in set (0.00 sec)

float 和decimal的比较

floatdecimal在使用的时候几乎相同,但是在保存的数据小数点后的数比较多的时候,float会有精度的损失,decimal没有精度损失,更加准确。

mysql> drop table t7;
Query OK, 0 rows affected (0.00 sec)mysql> create table if not exists t7(-> f1 float(10,8),-> f2 decimal(10,8)-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc t7;
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| f1    | float(10,8)   | YES  |     | NULL    |       |
| f2    | decimal(10,8) | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into t7 values(23.12345612, 23.12345612);
Query OK, 1 row affected (0.00 sec)mysql> select * from t7;
+-------------+-------------+
| f1          | f2          |
+-------------+-------------+
| 23.12345695 | 23.12345612 |
+-------------+-------------+
1 row in set (0.00 sec)

float 的默认精度是7位,decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10。
但是这些结论并不一定准确,mysql的版本不同,结果可能会不同。

结论:
如果需要高精度的数据的话,推荐使用decimal

字符串类型

char

语法

char(L): 固定长度字符串,L是可以存储的长度,单位是字符,最大长度值可以是255

使用

mysql> create table if not exists t8(-> id int,-> name char(2)-> );
Query OK, 0 rows affected (0.02 sec)mysql> desc t8;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
| name  | char(2) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into t8 values (1,'a');
Query OK, 1 row affected (0.01 sec)mysql> insert into t8 values (2,'ab');
Query OK, 1 row affected (0.01 sec)mysql> insert into t8 values (3,'abc');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> insert into t8 values (3,'中');
Query OK, 1 row affected (0.00 sec)mysql> insert into t8 values (3,'中国');
Query OK, 1 row affected (0.01 sec)mysql> insert into t8 values (3,'中国人');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> select * from t8;
+------+--------+
| id   | name   |
+------+--------+
|    1 | a      |
|    2 | ab     |
|    3 ||
|    3 | 中国   |
+------+--------+
4 rows in set (0.00 sec)

注意事项

  1. char(2)表示存放两个字符,可以是字母或者汉字,但是不能超过两个,
  2. 最多只能是255。
mysql> create table if not exists t9(->id int, ->name char(256) ->);
ERROR 1074 (42000): Column length too big for column 'name' (max = 255); use BLOB or TEXT instead

varchar

语法

vatchar(L),可变长度字符串,L表示字符长度,最大长度65535个字节。

是65535个字节,不是65535个字符。

使用

mysql> create table if not exists t9(-> id int,-> name varchar(6)-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc t9;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | int(11)    | YES  |     | NULL    |       |
| name  | varchar(6) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into t9 values (1,'hello');
Query OK, 1 row affected (0.00 sec)mysql> insert into t9 values (2,'我爱你,中国');
Query OK, 1 row affected (0.01 sec)mysql> insert into t9 values (2,'我爱你,中国!');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> select * from t9;
+------+--------------------+
| id   | name               |
+------+--------------------+
|    1 | hello              |
|    2 | 我爱你,中国       |
+------+--------------------+
2 rows in set (0.00 sec)

注意事项

关于varchar(len)的len到底有多大,这个len的值,和表的编码密切相关:

  • varchar长度可以指定为0 ~ 65535之间的值,但是有1 ~ 3个字节用于记录数据的大小,所以说有效字节数是65532。
  • 当我们的表的编码是utf8时,varchar(n)的参数n最大值是 65532/3=21844 [因为utf中,一个字符占用3个字节],如果编码是gbk,varchar(n)的参数n最大是 65532/2=32766(因为gbk中,一个字符占用2字节)。
  • 如果在表中还有其他数据,varchar能存储的最大值还可能会因此减少。
mysql> create table t10(-> name varchar(21845)-> );
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
mysql> create table t10( name varchar(21844) );
Query OK, 0 rows affected (0.02 sec)mysql> alter table t9 modify name varchar(21845)-> ;
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
mysql> alter table t9 modify name varchar(21844);
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
mysql> alter table t9 modify name varchar(21842);
Query OK, 2 rows affected (0.03 sec)
Records: 2  Duplicates: 0  Warnings: 0

char 和varchar 的比较和选择

在这里插入图片描述
如何选择定长或变长字符串?

  • 如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
  • 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证
  • 最长的能存的进去。定长的磁盘空间比较浪费,但是效率高。
  • 变长的磁盘空间比较节省,但是效率低。
  • 定长的意义是,直接开辟好对应的空间
  • 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。

日期类型

类型

常用的类型有三个

  • date : 日期格式 'yyyy-mm-dd',占用3个字节。
  • datetime : 日期时间格式'yyyy-mm-dd hh:ii:ss'占用8个字节。
  • timestamp : 时间戳,从1970年一月一号零时开始的。'yyyy-mm-dd hh:ii:ss'格式完全和datetime一致,占用四个字节。

当我们对数据进行增加或者更改的时候, timestamp自动更新为当前的时间。不需要我们手动填写。

使用

mysql> create table if not exists t11(-> t1 date,-> t2 datetime,-> t3 timestamp-> );
Query OK, 0 rows affected (0.02 sec)mysql> desc t11;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| t1    | date      | YES  |     | NULL              |                             |
| t2    | datetime  | YES  |     | NULL              |                             |
| t3    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
3 rows in set (0.00 sec)mysql> insert into t11 (t1,t2) values ('2000-10-01', '1949-10-01 08:00:00');
Query OK, 1 row affected (0.00 sec)mysql> select * from t11;
+------------+---------------------+---------------------+
| t1         | t2                  | t3                  |
+------------+---------------------+---------------------+
| 2000-10-01 | 1949-10-01 08:00:00 | 2025-01-25 23:03:03 |
+------------+---------------------+---------------------+
1 row in set (0.00 sec)mysql> update t11 set t1='1999-01-01';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from t11;
+------------+---------------------+---------------------+
| t1         | t2                  | t3                  |
+------------+---------------------+---------------------+
| 1999-01-01 | 1949-10-01 08:00:00 | 2025-01-25 23:05:03 |
+------------+---------------------+---------------------+
1 row in set (0.00 sec)

enum和set

语法

  • enum:枚举,“单选”类型;
    enum('选项1','选项2','选项3',...);
    该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,…最多65535 个;当我们添加枚举值时,也可以添加对应的数字下标
  • set:集合,“多选”类型;
    set('选项值1','选项值2','选项值3', ...);
    该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,…最多64个
  • 说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。

使用

mysql> create table votes(-> username varchar(30),-> gender enum('男','女'),-> hobby set('代码','羽毛球','乒乓球','足球','游泳')-> );
Query OK, 0 rows affected (0.01 sec)mysql> desc votes;
+----------+---------------------------------------------------------+------+-----+---------+-------+
| Field    | Type                                                    | Null | Key | Default | Extra |
+----------+---------------------------------------------------------+------+-----+---------+-------+
| username | varchar(30)                                             | YES  |     | NULL    |       |
| gender   | enum('男','女')                                         | YES  |     | NULL    |       |
| hobby    | set('代码','羽毛球','乒乓球','足球','游泳')             | YES  |     | NULL    |       |
+----------+---------------------------------------------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)mysql> insert into votes values('张三','男','代码');
Query OK, 1 row affected (0.00 sec)mysql> insert into votes values('李四','女','乒乓球');
Query OK, 1 row affected (0.01 sec)mysql> insert into votes values('李四','unknown','乒乓球');
ERROR 1265 (01000): Data truncated for column 'gender' at row 1mysql> select * from votes;
+----------+--------+-----------+
| username | gender | hobby     |
+----------+--------+-----------+
| 张三     || 代码      |
| 李四     || 乒乓球    |
+----------+--------+-----------+
2 rows in set (0.00 sec)

注意事项

  1. enum 使用的是下标
mysql> insert into votes values('王五','1','羽毛球');
Query OK, 1 row affected (0.01 sec)mysql> insert into votes values('赵六','2','羽毛球');
Query OK, 1 row affected (0.01 sec)mysql> select * from votes;
+----------+--------+-----------+
| username | gender | hobby     |
+----------+--------+-----------+
| 张三     || 代码      |
| 李四     || 乒乓球    |
| 王五     || 羽毛球    |
| 赵六     || 羽毛球    |
+----------+--------+-----------+
4 rows in set (0.00 sec)
  1. set 使用的是位图
mysql> insert into votes values('赵六',1,1);
Query OK, 1 row affected (0.01 sec)mysql> insert into votes values('赵六',1,2);
Query OK, 1 row affected (0.01 sec)mysql> insert into votes values('赵六',1,3);
Query OK, 1 row affected (0.00 sec)mysql> select * from votes;
+----------+--------+-----------------------------------+
| username | gender | hobby                             |
+----------+--------+-----------------------------------+
| 张三     || 代码                              |
| 李四     || 乒乓球                            |
| 王五     || 羽毛球                            |
| 赵六     || 羽毛球                            |
| 赵六     || 代码,羽毛球,乒乓球,游泳           |
| 赵六     || 代码,羽毛球,乒乓球                |
| 赵六     || 羽毛球,乒乓球,游泳                |
| 赵六     | NULL   | NULL                              |
| 赵六     ||                                   |
| 赵六     || 代码                              |
| 赵六     || 羽毛球                            |
| 赵六     || 代码,羽毛球                       |
+----------+--------+-----------------------------------+
12 rows in set (0.00 sec)
  1. NULL''并不一样,NULL表示没有数据,''表示有数据,只不过数据是空。
mysql> insert into votes (username) values('赵六');
Query OK, 1 row affected (0.00 sec)mysql> insert into votes values('赵六',1,'');
Query OK, 1 row affected (0.00 sec)mysql> select * from votes;
+----------+--------+-----------------------------------+
| username | gender | hobby                             |
+----------+--------+-----------------------------------+
| 张三     || 代码                              |
| 李四     || 乒乓球                            |
| 王五     || 羽毛球                            |
| 赵六     || 羽毛球                            |
| 赵六     || 代码,羽毛球,乒乓球,游泳           |
| 赵六     || 代码,羽毛球,乒乓球                |
| 赵六     || 羽毛球,乒乓球,游泳                |
| 赵六     | NULL   | NULL                              |
| 赵六     ||                                   |
+----------+--------+-----------------------------------+
9 rows in set (0.00 sec)

类型查找

enum查找

既可以使用内容,也可以使用下标

mysql> select * from votes where gender='女';
+----------+--------+-----------+
| username | gender | hobby     |
+----------+--------+-----------+
| 李四     || 乒乓球    |
| 赵六     || 羽毛球    |
+----------+--------+-----------+
2 rows in set (0.00 sec)mysql> select * from votes where gender=2;
+----------+--------+-----------+
| username | gender | hobby     |
+----------+--------+-----------+
| 李四     || 乒乓球    |
| 赵六     || 羽毛球    |
+----------+--------+-----------+
2 rows in set (0.00 sec)

set查找

严格筛选
mysql> select * from votes where hobby='羽毛球';
+----------+--------+-----------+
| username | gender | hobby     |
+----------+--------+-----------+
| 王五     || 羽毛球    |
| 赵六     || 羽毛球    |
| 赵六     || 羽毛球    |
+----------+--------+-----------+
3 rows in set (0.00 sec)mysql> select * from votes where hobby=3;
+----------+--------+------------------+
| username | gender | hobby            |
+----------+--------+------------------+
| 赵六     || 代码,羽毛球      |
+----------+--------+------------------+
1 row in set (0.00 sec)
函数筛选

集合查询使用find_in_set函数:
find_in_set(sub, str_list):如果 substr_list 中,则返回下标;如果不在,返回0;str_list是用逗号分割的字符串。

mysql> select * from votes where find_in_set('羽毛球',hobby);
+----------+--------+-----------------------------------+
| username | gender | hobby                             |
+----------+--------+-----------------------------------+
| 王五     || 羽毛球                            |
| 赵六     || 羽毛球                            |
| 赵六     || 代码,羽毛球,乒乓球,游泳           |
| 赵六     || 代码,羽毛球,乒乓球                |
| 赵六     || 羽毛球,乒乓球,游泳                |
| 赵六     || 羽毛球                            |
| 赵六     || 代码,羽毛球                       |
+----------+--------+-----------------------------------+
7 rows in set (0.00 sec)mysql> select * from votes where find_in_set('羽毛球',hobby) and find_in_set('代码',hobby);
+----------+--------+-----------------------------------+
| username | gender | hobby                             |
+----------+--------+-----------------------------------+
| 赵六     || 代码,羽毛球,乒乓球,游泳           |
| 赵六     || 代码,羽毛球,乒乓球                |
| 赵六     || 代码,羽毛球                       |
+----------+--------+-----------------------------------+
3 rows in set (0.00 sec)

⚠️ 写在最后:以上内容是我在学习以后得一些总结和概括,如有错误或者需要补充的地方欢迎各位大佬评论或者私信我交流!!!

相关文章:

【MySQL】 数据类型

欢迎拜访:雾里看山-CSDN博客 本篇主题:【MySQL】 数据类型 发布时间:2025.1.27 隶属专栏:MySQL 目录 数据类型分类数值类型tinyint类型数值越界测试结果说明 bit类型基本语法使用注意事项 小数类型float语法使用注意事项 decimal语…...

基于vue和elementui的简易课表

本文参考基于vue和elementui的课程表_vue实现类似课程表的周会议列表-CSDN博客,原程序在vue3.5.13版本下不能运行,修改两处: 1)slot-cope改为v-slot 2)return background-color:rgb(24 144 255 / 80%);color: #fff; …...

vim的多文件操作

[rootxxx ~]# vim aa.txt bb.txt cc.txt #多文件操作 next #下一个文件 prev #上一个文件 first #第一个文件 last #最后一个文件 快捷键: ctrlshift^ #当前和上个之间切换 说明:快捷键ctrlshift^&#xff0c…...

spring spring-boot spring-cloud发布以及适配

https://spring.io/blog/2024/10/01/from-spring-framework-6-2-to-7-0 看了 spring 的官网,提到 2025 年 spring 会跟随 jdk 25 LTS发布后,接着发布 Spring Framework 7.0 GA,与之对应 spring 系列的组件版本情况如下。 Spring Framework版…...

【快速上手】阿里云百炼大模型

为了创建自己的知识库,本文介绍一下阿里云的百炼大模型,方便大家快速上手!快速查询自己想要的内容。 一、入口页 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 二、大模型的选择 首先前提条件是 1、账号不能欠费 2、需…...

Linux:多线程[2] 线程控制

了解: Linux底层提供创建轻量级进程/进程的接口clone,通过选择是否共享资源创建。 vfork和fork都调用的clone进行实现,vfork和父进程共享地址空间-轻量级进程。 库函数pthread_create调用的也是底层的clone。 POSIX线程库 与线程有关的函数构…...

010 mybatis-PageHelper分页插件

文章目录 添加依赖配置PageHelper项目中使用PageHelper注意事项 PageHelper分页插件介绍 https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md 使用方法 添加依赖 <dependency><groupId>com.github.pagehelper</groupId>&l…...

【huawei】云计算的备份和容灾

目录 1 备份和容灾 2 灾备的作用&#xff1f; ① 备份的作用 ② 容灾的作用 3 灾备的衡量指标 ① 数据恢复时间点&#xff08;RPO&#xff0c;Recoyery Point Objective&#xff09; ② 应用恢复时间&#xff08;RTO&#xff0c;Recoyery Time Objective&#xff09; 4…...

CVE-2023-38831 漏洞复现:win10 压缩包挂马攻击剖析

目录 前言 漏洞介绍 漏洞原理 产生条件 影响范围 防御措施 复现步骤 环境准备 具体操作 前言 在网络安全这片没有硝烟的战场上&#xff0c;新型漏洞如同隐匿的暗箭&#xff0c;时刻威胁着我们的数字生活。其中&#xff0c;CVE - 2023 - 38831 这个关联 Win10 压缩包挂…...

回顾:Maven的环境搭建

1、下载apache-maven-3.6.0 **网址:**http://maven.apache.org 然后解压到指定的文件夹&#xff08;记住文件路径&#xff09; 2、配置Maven环境 复制bin文件夹 的路径D:\JavaTool\apache-maven-3.6.0\bin 环境配置成功 3、检查是否配置成功 winR 输入cmd 命令行输入mvn -v…...

从零到全栈开发

HTML&#xff1a;超文本标记语言 CSS&#xff1a;层叠样式表 HTML可以理解为框架----&#xff08;毛坯房&#xff09; CSS 可以理解为装修----&#xff08;装修&#xff09; 学习工具&#xff1a; Vscode应用----扩展&#xff08;中文&#xff09; AI ----KiMi &#xff0c;豆…...

单片机-STM32 WIFI模块--ESP8266 (十二)

1.WIFI模块--ESP8266 名字由来&#xff1a; Wi-Fi这个术语被人们普遍误以为是指无线保真&#xff08;Wireless Fidelity&#xff09;&#xff0c;并且即便是Wi-Fi联盟本身也经常在新闻稿和文件中使用“Wireless Fidelity”这个词&#xff0c;Wi-Fi还出现在ITAA的一个论文中。…...

两种交换排序算法--冒泡,快速

目录 1.冒泡排序原理 2.快速排序原理 3.冒泡代码实现 4.快速排序代码实现 1.冒泡排序原理 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法&#xff0c;基本思想是通过反复交换相邻的元素&#xff0c;直到整个序列有序。它的名字来源于较大的元素像气泡…...

langchain基础(一)

模型又可分为语言模型&#xff08;擅长文本补全&#xff0c;输入和输出都是字符串&#xff09;和聊天模型&#xff08;擅长对话&#xff0c;输入时消息列表&#xff0c;输出是一个消息&#xff09;两大类。 以调用openai的聊天模型为例&#xff0c;先安装langchain_openai库 1…...

【学术会议征稿】第五届能源、电力与先进热力系统学术会议(EPATS 2025)

能源、电力与先进热力系统设计是指结合物理理论、工程技术和计算机模拟&#xff0c;对能源转换、利用和传输过程进行设计的学科领域。它涵盖了从能源的生产到最终的利用整个流程&#xff0c;旨在提高能源利用效率&#xff0c;减少能源消耗和环境污染。 重要信息 官网&#xf…...

MyBatis框架基础学习及入门案例(2)

目录 一、数据库建表(tb_user)以及添加数据。 &#xff08;1&#xff09;数据库与数据表说明。 &#xff08;2&#xff09;字段与数据说明。 二、创建模块(或工程)、导入对应所需依赖坐标。 三、编写MyBatis核心主配置文件。(解决JDBC中"硬编码"问题) &#xff08;1&…...

Salesforce Too Many Email Invocations: 11

在 Salesforce 中&#xff0c;“Too Many Email Invocations: 11” 错误通常表示您的组织在单个事务中超过了 Apex 电子邮件调用的限制。Salesforce 设置这些限制是为了防止滥用并确保公平使用。以下是解决该问题的方法&#xff1a; 理解限制 Salesforce 允许每个事务中最多进…...

2274. 不含特殊楼层的最大连续楼层数

2274. 不含特殊楼层的最大连续楼层数 题目链接&#xff1a;2274. 不含特殊楼层的最大连续楼层数 代码如下&#xff1a; class Solution { public:int maxConsecutive(int bottom, int top, vector<int>& special) {ranges::sort(special);int res max(special[0] …...

RGB 转HSV空间颜色寻找色块

文章目录 前言一、绿色确定二、红色确定总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 将RGB颜色空间转换为HSV颜色空间以寻找颜色&#xff0c;主要基于以下几个原因&#xff1a; 直观性&#xff1a; HSV颜色空间更符合人类…...

Kafka生产者ACK参数与同步复制

目录 生产者的ACK参数 ack等于0 ack等于1&#xff08;默认&#xff09; ack等于-1或all Kafka的同步复制 使用误区 生产者的ACK参数 Kafka的ack机制可以保证生产者发送的消息被broker接收成功。 Kafka producer有三种ack机制 &#xff0c;分别是 0&#xff0c;1&#xf…...

计算机图形学试题整理(期末复习/闭or开卷/>100道试题/知识点)

1.各种坐标变换&#xff0c;会产生变换前后维度改变的是&#xff08;投影变换&#xff09;。 A&#xff09;建模变换&#xff1b;B&#xff09;观察变换&#xff1b;C&#xff09;投影变换&#xff1b;D&#xff09;视口变换 不同的坐标变换对维度的影响如下&#xff1a; 建模…...

Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南:让Docker拥抱GPU

Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南&#xff1a;让Docker拥抱GPU 前言一、环境准备1.1 验证驱动状态 二、安装NVIDIA Container Toolkit2.1 添加官方仓库2.2 执行安装 三、配置Docker运行时3.1 更新Docker配置 四、验证安装结果4.1 运行测试容器 五、实战应用 …...

python3+TensorFlow 2.x(三)手写数字识别

目录 代码实现 模型解析&#xff1a; 1、加载 MNIST 数据集&#xff1a; 2、数据预处理&#xff1a; 3、构建神经网络模型&#xff1a; 4、编译模型&#xff1a; 5、训练模型&#xff1a; 6、评估模型&#xff1a; 7、预测和可视化结果&#xff1a; 输出结果&#xff…...

aws(学习笔记第二十六课) 使用AWS Elastic Beanstalk

aws(学习笔记第二十六课) 使用aws Elastic Beanstalk 学习内容&#xff1a; AWS Elastic Beanstalk整体架构AWS Elastic Beanstalk的hands onAWS Elastic Beanstalk部署node.js程序包练习使用AWS Elastic Beanstalk的ebcli 1. AWS Elastic Beanstalk整体架构 官方的guide AWS…...

GestureDetector组件的功能与用法

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了ListView响应事件的内容,本章回中将介绍GestureDetector Widget.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的GestureDetector是一个事件响应Widget,它可以响应双击事件&…...

【HuggingFace项目】:Open-R1 - DeepSeek-R1 大模型开源复现计划

项目链接&#xff1a;https://github.com/huggingface/open-r1 概述 Open-R1 是由 HuggingFace 发布的一个完全开放的项目&#xff0c;旨在通过三个主要步骤复现 DeepSeek-R1 的完整训练流程。这个项目的目标是让更多人能够理解和使用 DeepSeek-R1 的技术方案&#xff0c;从而…...

K8S中数据存储之配置存储

配置存储 在Kubernetes中&#xff0c;ConfigMap和Secret是两种核心资源&#xff0c;用于存储和管理应用程序的配置数据和敏感信息。理解它们的功能和最佳实践对于提高Kubernetes应用程序的安全性和配置管理的效率至关重要。 ConfigMap ConfigMap是一种API对象&#xff0c;允许…...

群辉折腾日记【连续剧】

安装群辉6.23版本 对比不同的版本以及自己的硬件条件&#xff0c;我选择了6.2.3稳定养老版本&#xff0c;硬件参数可以看之前的文章&#xff1a;pve (群辉、软路由、win/linux)折腾日记 之前年轻气盛喜欢折腾&#xff0c;秉持着一个原则&#xff0c;可以不用&#xff0c;但不能…...

AIGC视频生成模型:慕尼黑大学、NVIDIA等的Video LDMs模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓&#xff0c;而慕尼黑大学同样不容小觑&#xff0c;…...

Hadoop 与 Spark:大数据处理的比较

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…...

VB6.0 显示越南语字符

近期接到客户咨询&#xff0c;说是VB6.0写软件界面上显示越南语乱码&#xff0c;需要看看怎样解决。 我在自己电脑上也试了下&#xff0c;确实显示越南语结果是乱码。编辑器里乱码&#xff0c;运行起来界面上也是乱码。 经过一天的折腾&#xff0c;算是解决了问题&#xff0c…...

微信小程序中实现进入页面时数字跳动效果(自定义animate-numbers组件)

微信小程序中实现进入页面时数字跳动效果 1. 组件定义,新建animate-numbers组件1.1 index.js1.2 wxml1.3 wxss 2. 使用组件 1. 组件定义,新建animate-numbers组件 1.1 index.js // components/animate-numbers/index.js Component({properties: {number: {type: Number,value…...

网络仿真工具Core环境搭建

目录 安装依赖包 源码下载 Core安装 FAQ 下载源码TLS出错误 问题 解决方案 找不到dbus-launch 问题 解决方案 安装依赖包 调用以下命令安装依赖包 apt-get install -y ca-certificates git sudo wget tzdata libpcap-dev libpcre3-dev \ libprotobuf-dev libxml2-de…...

JavaScript 的 Promise 对象和 Promise.all 方法的使用

JavaScript 中的 Promise 对象 什么是 Promise? Promise 是一种用于处理异步操作的对象。它代表一个尚未完成但预计将来会完成的操作及其结果。 主要特点&#xff1a; 状态: Pending&#xff08;进行中&#xff09;: 初始状态&#xff0c;既未成功&#xff0c;也未失败。Fu…...

农产品价格报告爬虫使用说明

农产品价格报告爬虫使用说明 # ************************************************************************** # * * # * 农产品价格报告爬虫 …...

Java 大视界 -- Java 大数据中的隐私增强技术全景解析(64)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

实战Linux Swap扩展分区

文章目录 定义命令格式案例注释 定义 Swap分区是Linux系统中的一种虚拟内存实现方式&#xff0c;它是磁盘上预留的专用区域。当系统的物理内存不足时&#xff0c;会将部分不活跃的数据从物理内存移动到Swap分区&#xff0c;从而释放更多可用内存空间。 命令格式 关闭Swap分区…...

doris:Parquet导入数据

本文介绍如何在 Doris 中导入 Parquet 格式的数据文件。 支持的导入方式​ 以下导入方式支持 Parquet 格式的数据导入&#xff1a; Stream LoadBroker LoadINSERT INTO FROM S3 TVFINSERT INTO FROM HDFS TVF 使用示例​ 本节展示了不同导入方式下的 Parquet 格式使用方法…...

Synology 群辉NAS安装(6)安装mssql

Synology 群辉NAS安装&#xff08;6&#xff09;安装mssql 写在前面mssql 2019:成功安装说明&#xff0c;这个最终成功了 mssql 2022没有成功1. pull image2.启动mssql docker container 远程连接 写在前面 mssq是一个重要节点。 这是因为我对mysql没有一丝好感。虽然接触了许…...

使用.NET 8构建高效的时间日期帮助类

使用.NET 8构建高效的时间日期帮助类 在现代Web应用程序中&#xff0c;处理日期和时间是一个常见的需求。无论是记录日志、生成报告还是进行数据分析&#xff0c;正确处理日期和时间对于确保数据的准确性和一致性至关重要。本文将详细介绍如何使用ASP.NET Core和C#构建一个高效…...

第26篇 基于ARM A9处理器用C语言实现中断<二>

Q&#xff1a;基于ARM A9处理器怎样编写C语言工程&#xff0c;使用按键中断将数字显示在七段数码管上呢&#xff1f; A&#xff1a;基本原理&#xff1a;主程序需要首先调用子程序set_A9_IRQ_stack()初始化IRQ模式的ARM A9堆栈指针&#xff1b;然后主程序调用子程序config_GIC…...

dm8在Linux环境安装精简步骤说明(2024年12月更新版dm8)

dm8在Linux环境安装详细步骤 - - 2025年1月之后dm8 环境介绍1 修改操作系统资源限制2 操作系统创建用户3 操作系统配置4 数据库安装5 初始化数据库6 实例参数优化7 登录数据库配置归档与备份8 配置审计9 创建用户10 屏蔽关键字与数据库兼容模式11 jdbc连接串配置12 更多达梦数据…...

Nginx部署的前端项目刷新404问题

1&#xff0c;查看问题 我部署的81端口是监听tlias项目的&#xff0c;我直接访问端口页面可以出现内容。 我在浏览器舒服端口之后回车&#xff0c;会重定向页面。但是我在重定向之后的页面刷新浏览器就会出现404的问题。 下面是刷新浏览器后的效果 2&#xff0c;在nginx.cnf …...

H2 Database安装部署

H2 Database H2 Database官网 H2 中文文档 安装部署H2 java版本要高于java 11 ## 下载java21 wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz[rootlocalhost ~]# tar xf jdk-21_linux-x64_bin.tar.gz -C /usr/local/ [rootlocalhost ~]# vi…...

Day40:列表的排序

在 Python 中&#xff0c;排序是处理列表数据时常用的一种操作。排序可以帮助我们按照一定的规则&#xff08;如升序或降序&#xff09;对列表中的元素进行排列。Python 提供了内置的排序方法 sort() 和 sorted() 来实现这一功能。 1. 使用 sort() 方法排序 1.1 sort() 方法简…...

TypeScript进阶(三):断言

文章目录 一、前言二、类型断言2.1 利用 as 实现断言2.2 利用 <> 实现断言2.3 应用示例2.3.1 如果 A&#xff0c;B 如果是类并且有继承关系2.3.2 如果 A&#xff0c;B 如果是类&#xff0c;但没有继承关系2.3.3 如果 A 是类&#xff0c;B 是接口&#xff0c;并且 A 类实现…...

塔罗牌(基础):大阿卡那牌

塔罗牌&#xff08;基础&#xff09; 大啊卡那牌魔术师女祭司皇后皇帝教皇恋人战车力量隐士命运之轮正义吊人死神节制恶魔高塔星星月亮太阳审判世界 大啊卡那牌 魔术师 作为一个起点&#xff0c;象征&#xff1a;意识行动和创造力。 一个【显化】的概念&#xff0c;即是想法变…...

微服务(一)

文章目录 项目地址一、微服务1.1 分析User的Domian Verb和Nouns 二、运行docker和k8s2.1 Docker1. 编写dockerfile2. 创建docker image3. 运行docker使用指定端口4. 查看当前运行的镜像5. 停止当前所有运行的docker6. 删除不用的docker images7. 将本地的image上传到hub里 2.2 …...

JAVA(SpringBoot)集成Kafka实现消息发送和接收。

SpringBoot集成Kafka实现消息发送和接收。 一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者 君子之学贵一&#xff0c;一则明&#xff0c;明则有功。 一、Kafka 简介 Kafka 是由 Apache 软件基金会开发的一个开源流处理平台&#xff0c;最初由 Link…...

Oracle之开窗函数使用

开窗函数是数据开发面试的必知必会&#xff0c;必须认真对待&#xff0c;上难度&#xff1a; 开窗函数语法格式如下&#xff0c;一共五部分&#xff1a; ①函数(a)over(②<partition by b> ③<order by c> ④<windowing_clause> ⑤开窗范围)1、函数&#xf…...