【MySQL基础】MySQL基本数据类型

2023-11-15

序号 系列文章
1 【MySQL基础】MySQL介绍及安装
2 【MySQL基础】MySQL基本操作详解
3 【MySQL基础】MySQL基本数据类型


前言

大家好,我是小杨!今天我将详细的为大家介绍MySQL中的基本数据类型的相关知识,希望大家能够从中收获多多!


1,数字类型

MySQL的数据类型包括整型类型,浮点数类型,定点数类型,位(BIT)类型等。

1.1,整型类型

MySQL的整型类型用于保存整数,根据取值范围的不同,整数类型可划分为5种。

整数类型 字节 无符号数的取值范围 有符号数的取值范围
TINYINT 1 0~255 -128~127
SMALLINT 2 0~65535 -32768~32767
MEDIUMINT 3 0~16777215 -8388608~8388607
INT 4 0~4294967295 -2147483648~2147483647
BIGINT 8 0~18446744073709551615 -9223372036854774808~9223372036854774807
  • 不同整数类型的取值范围是通过字节数计算出来的,一个字节数等于8位二进制数。

    例如,TINYINT类型无符号数的最大值为2^8-1(即为255), 有符号数的最大值为2^7-1(即为127)。

    其他类型的数据类型的取值范围根据同样的方法可得出。

  • 若使用无符号数据类型,需要在数据类型右边添加UNSIGNED关键字。

    例如INT UNSIGNED表示无符号INT类型。


为了能够更好的理解整型以及其注意事项,实例如下

image-20221030230845298

知识点:

  1. 在执行结果中,数据类型右边使用小括号数字标注了显示宽度。
  2. 默认情况下,显示宽度是该数据类型取值范围所能表示的最大宽度。
  3. 对于有符号类型,符号也占用一个宽度。例如,255的显示宽度是3,而-255的宽度显示是4.
  4. 显示宽度与取值范围无关,若数值的位数小于显示宽度,会填充空格,若大于显示宽度,则不会影响显示结果。

扩展1:为字段设置零填充和宽度操作

image-20221101085857257

知识点:

  1. 设置零填充后,字段会自动设为无符号类型,因为负数不能使用零填充。
  2. 当数值超过显示宽度时,不填充零;当数值未达到显示宽度时,在左侧填充零。

扩展2:如何选择最适合的整型数据类型?

在选择使用何种整数类型的时候,我们只需要重点考虑两方面,即存储空间和可靠性。

一方面,用占用字节数少的整数类型可以节省存储空间;另一方面,要是为了节省存储空间,使用的整数类型取值范围太小,一旦遇到超出取值范围的情况,就可能引起系统错误 ,影响可靠性。

切记:在实际工作中,因系统故障产生的成本远远超过增加几个字段存储空间所产生的成本,所以建议在确保数据不会超过取值范围的情况下,再去考虑如何节省存储空间。


扩展3:各整数数据类型的使用场所

  1. TINYINT :一般用于枚举数据,比如系统设定取值范围很小且固定的场景。
  2. SMALLINT :可以用于较小范围的统计数据,比如统计工厂的固定资产库存数量等。
  3. MEDIUMINT :用于较大整数的计算,比如车站每日的客流量等。
  4. INT、INTEGER :取值范围足够大,一般情况下不用考虑超限问题,用得最多。比如商品编号。
  5. BIGINT :只有当你处理特别巨大的整数时才会用到。比如双十一的交易量、大型门户网站点击量、证券公司衍生产品持仓等。

1.2,浮点数类型

在MySQL中,存储的小数都是使用浮点数或定点数来表示的。浮点数的类型有2种,分别为单精度浮点数类型(float)和双精度浮点类型(double)。

数据类型 字节数 取值范围
FLOAT 4 -2^128~2 ^128,即-3.40E+38~+3.40E+38
DOUBLE 8 -2^1024~ 2^1024,即-1.79E+308~1.79E+308

知识点:

  1. 当浮点数类型使用unsigned修饰无符号时,取值范围将不包含负数。
  2. 浮点数的取值范围是理论上的极限值,但根据不同的硬件或操作系统,实际范围可能会小。
  3. 浮点数虽然取值范围很大,但精度并不高。float类型的精度为6位或7位,double类型的精度大约为15位。
  4. 如果给定的数值超出精度,可能会导致给定的数值与实际保存的数值不一致,发生精度损失。
  5. 当一个数字的整数部分和小数部分加起来达到7位时,第7位就会进行四舍五入操作。
  6. 要避免使用“=”来判断两个浮点数是否相等,因为浮点数是不准确的,存在精度损失。

为了能够更好的理解浮点数以及其注意事项,实例如下

image-20221101092230703


1.3,定点数类型

定点数类型(DECIMAL)通过DECIMAL(M,D)设置位数和精度。

  • M表示数字总位数,不包括’.‘和’-',最大值为65,默认值为10。
  • D表示小数点后的位数,最大值为30,默认值为0。
    • 例如,DECIMAL(5,2)表示的取值范围为-999.99~999.99。

为了能够更好的理解定点数以及其注意事项,实例如下:

image-20221101095114528

知识点:

  1. 系统会自动根据存储的数据来分配存储空间。若不允许保存负数,可通过unsigned修饰。
  2. 若小数部分超出范围,会进行四舍五入操作,并出现Data truncated(数据截断)警告。
  3. 若整数部分超出范围,数据会插入失败,提示Out of range value(超出取值范围)错误。

扩展1:定点数的存储空间

DECIMAL(M,D)的最大取值范围与DOUBLE类型一样,但是有效的数据范围是由M和D决定的。

定点数(DECIMAL) 的存储空间并不是固定的,是由精度值M来决定的,总共占用的存储空间为M+2个节。

也就是说,在一些对精度要求不高的场景下,比起占用同样字节长度的定点数,浮点数表达的数值范围可以更大一些。


扩展2:定点数与浮点数的对比及应用

  1. 定点数类型取值范围相对小,但是精准,没有误差。
    • 适合于对精度要求极高的场景 (比如涉及金额计算的场景)
  2. 浮点数相对于定点数的优点是在长度一定的情况下,浮点类型取值范围大,但是不精准。
    • 适用于需要取值范围大,又可以容忍微小误差的科学计算场景(比如计算化学、分子建模、流体动力学等场景)

扩展3:注意点及建议

  1. 浮点数类型也可以设置位数和精度,如float(8,2),但仍有可能会损失精度。
  2. 在实际使用时,我们应避免使用浮点数类型,以免出现不能人为控制的问题。
  3. 因此对于小数类型的设置,推荐使用定点数类型并设置合理的范围可以使计算更为精确。

1.4,BIT类型

BIT(位)类型用于存储二进制数据,语法为BIT(M),M表示位数,范围为1~64。

函数 函数用途
BIT(M) 存储二进制数据
ASCll(M) 获取M的ASCll值
BIN(M) 获取M的二进制值
LENGTH(M) 获取M的数字长度

知识点:

  1. BIT类型字段在数字插入时转换为二进制保存,但在利用SELECT查询时,会自动转换为对应的字符显示。
  2. BIT类型,如果在创建时没有指定(M),默认是1位。这个1位,表示只能存1位的二进制值。
  3. 在向BIT类型的字段中插入数据时,一定要确保插入的数据在BIT类型支持的范围内。

1.5,直接常量

直接常量指的是在MySQL中直接编写的字面常量,如数字1253,字符串’abc’等,常用于在INSERT语句中编写插入的数据。

直接常量具有多种语法形式,可分为6类。

1)十进制数

十进制数:语法近似于我们日常使用的数字,如12,-12,-1.2,以及科学计数法1E2,1E-2(E不区分大小写)。


2)二进制数

二进制数:在二进制字符串前面加前缀b,形如b‘10000001’。

上述示例通过SECLECT b‘10000001’;语句可查看二进制转为ASCll字符后的结果,即字符A。


3)十六进制数

十六进制数:有两种表示方式,分别为:在十六进制字符串前面加前缀0x或在十六进制字符串前面加前缀x,形如0x‘41’或x’41’。

上述示例通过SECLECT 0x‘41’;语句可查看十六进制转为ASCll字符后的结果,即字符A。

上述示例通过SECLECT HEX(65);语句可查看十进制转为十六进制的结果,即41。


4)字符串

字符串:MySQL支持单引号和双引号定界符,形如"abc"和’abc’,推荐使用单引号定界符。

若要在单/双引号字符串中书写单/双引号,需要在单/双引号前面添加反斜杠\转义,即"\ ’ “和” \ " "。

常见转义字符:

转义字符 含义 转义字符 含义
\0 空字符(NUL) \t 制表符(HT)
\r 回车符(CR) \b 退格(BS)
\n 换行符(LF) \ ’ 单引号
\ " 双引号 % %(常用于LIKE条件)
\ \ 反斜杠 \ _ _(常用于LIKE条件)

5)布尔值

布尔值:TRUE和FALSE两个值(不区分大小写),通常用于逻辑判断,表示事物的真和假。

在SELECT,INSERT等语句中使用布尔值,TRUE会转换为1,FALSE会转换为0。


6)NULL值

NULL值:通常用于表示没有值,值不确定等含义。

例如,在插入一条商品数据时,暂时不知道该商品的库存量,可将此设为NULL。


2,时间和日期类型

为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型。

  1. YEAR 类型通常用来表示年
  2. DATE 类型通常用来表示年、月、日
  3. TIME 类型通常用来表示时、分、秒
  4. DATETIME 类型通常用来表示年、月、日、时、分、秒
  5. TIMESTAMP 类型通常用来表示带时区的年、月、日、时、分、秒

为了更直观的学习这五种表示日期和时间的数据类型,简单归纳如下:

数据类型 字节 取值范围 日期格式 零值
YEAR 1 1901~2155 YYYY 0000
DATE 3 1000-01-01~9999-12-31 YYYY-MM-DD 0000-00-00
TIME 3 -838:59:59~838:59:59 HH:MM:SS 00:00:00
DATETIME 8 1000-01-01 00:00:00~9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
TIMESTAMP 4 1970-01-01 00:00:01~2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00

知识点:

  1. 不同数据类型表示的时间内容不同、取值范围不同,而且占用的字节数也不一样,你要根据实际需要灵活选取。
  2. 为什么时间类型 TIME 的取值范围不是 -23:59:59~23:59:59 呢?
    • 原因是 MySQL设计的TIME 类型,不光表示一天之内的时间,还可以用来表示一个时间间隔,这个时间间隔可以超过 24小时。

2.1,YEAR类型

YEAR类型用来表示年份,在所有的日期时间类型中所占用的存储空间最小,只需要1个字节的存储空间,格式为YYYY。

在MySQL中,可使用以下3种格式指定TEAR类型的值:

  1. 使用4位字符串或数字表示,为’1901’'2155’或19012155。
    • 例如,输入’2022’或2022,插入到数据库中的值均为2022.
  2. 使用两位字符串表示,为’00’~‘99’。
    • ‘00’ ~ '69’的值会被转换为2000~2069的YEAR值
    • ‘70’ ~ '99’的值会被自动转换为1970~1999的YEAR值
    • 例如,输入’22’,插入到数据表中的值为2022。
  3. 使用两位数字表示,为1~99。
    • 1 ~ 69的值会被转换为2001~2069的YEAR值
    • 70 ~ 99的值会被自动转换为1970~1999的YEAR值
    • 例如,输入22,插入到数据表中的值为2022。

知识点:

  1. 当使用YEAR类型时,一定要区分0和’0’。

    • 数字格式的0表示的YEAR值为0000

    • 字符串格式的’0’表示的YEAR值为2000


2.2,DATE类型

DATE类型用来表示日期值,不包含时间部分,需要 3个字节 的存储空间,且其格式为 YYYY-MM-DD 。其中,YYYY表示年份,MM表示月份,DD表示日期。

在MySQL中,可以使用以下4种格式指定DATE类型的值:

  1. 以’YYYY-MM-DD’或者’YYYYMMDD’字符串格式表示。
  2. 以’YY-MM-DD’或者’YYMMDD’字符串格式表示。
  3. 以YY-MM-DD或者YYMMDD数字格式表示。
  4. 使用CURRENT_DATE或者NOW()输入当前系统日期。

注意:

  • 通过"SELECT CURRENT_DATE;"或者"SELECT NOW();"可查询当前日期。

  • 日期中的分隔符"-“,还可以使用”.“”,“”/"等符号来表示。


2.3,TIME类型

TIME类型用于表示时间值,它的显示形式一般为HH:MM:SS,其中HH表示小时,MM表示分,SS表示秒。

在MySQL中,可以使用以下3种格式指定TIME类型的值:

  1. 以’HHMMSS’字符串或者HHMMSS数学格式表示。
  2. 以’HH:MM:SS’字符串格式表示。
  3. 使用CURRENT_TIME或NOW()输入当前系统时间。

2.4,DATETIME类型

DATETIME类型在所有的日期时间类型中占用的存储空间最大,总共需要 8 个字节的存储空间,用来表示日期和时间,它的显示形式为’YYYY-MM-DD HH:MM:SS’。

在MySQL中,可以使用以下4种格式指定DATETIME类型的值:

  1. 以’YYYY-MM-DD HH:MM:SS’或’YYYYMMDDHHMMSS’字符串格式表示的日期和时间,取值范围为’1000-01-01 00:00:00’~‘9999-12-31-23-59-59’。
  2. 以’YY-MM-DD HH:MM:SS’或’YYMMDDHHMMSS’字符串格式表示的日期和时间,
  3. 以YYYYMMDDHHMMSS或YYMMDDHHMMSS数字格式表示的日期和时间,
  4. 使用NOW()来输入当前系统的日期和时间。

2.5,TIMESTAMP类型

TIMESTAMP(时间戳)类型用于表示日期和时间,需要4个字节的存储空间,它的显示形式与DATETIME类型的相同,但取值范围比DATETIME类型的小。

TIMESTAMP类型与DATETIME类型的不同形式:

  1. 使用CURRENT_TIMESTAMP来输入系统当前的日期和时间。
  2. 无任何输入,或输入NULL时,实际保存的是系统当前日期和时间。

知识点:

  1. 在MySQL中,TIMESTAMP字段默认情况下会自动设置NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP属性。

    • NOT NULL表示非空约束,该字段不允许为空。
    • DEFAULT表示默认约束,当字段无任何输入时,自动设置某个值作为默认值。
      • 此处设为CURRENT_TIMESTAMP表示使用系统当前日期和时间作为默认值。
    • ON UPDATE用于当一条记录中的其它字段被修改时,自动更改该字段为某个值。
      • 此处设为CURRENT_TIMESTAMP表示每次修改时保存修改时的系统日期和时间。
    • 若为TIMESTAMP字段手动设置DEFAULT属性时,该字段不会自动设置ON UPDATE 属性。

    image-20230104134533903

  2. 存储数据的时候需要对当前时间所在的时区进行转换,查询数据的时候再将时间转换回当前的时区。因此,使用TIMESTAMP存储的同一个时间值,在不同的时区查询时会显示不同的时间。


3,字符串类型

MySQL中的字符串类型分别为CHAR,VARHAR,TEXT等多种类型,不同数据类型具有不同的特点。

数据类型 类型说明
CHAR 固定长度字符串
VARCHAR 可变长度字符串
TEXT 大文本数据
ENUM 枚举类型
SET 字符串类型
BINARY 固定长度的二进制数据
VARBINARY 可变长度是二进制数据
BLOB 二进制大对象

3.1,CHAR和VARCHAR类型

CHAR和VARCHAR类型都是用来保存字符串数据,两者不同的是,VARCHAR可以存储可变长度的字符串数据。

字符串类型 特点 长度 长度范围 占用的存储空间
CHAR(M) 固定长度 M 0<=M<=255 M个字节
VARCHAR(M) 可变长度 M 0<=M<=65535 (实际长度 + 1) 个字节

在MySQL中,定义CHAR和VARCHAR类型的语法格式为:

CHAR(M)

VARCHAR(M)

知识点:

  1. CHAR(M) 类型一般需要预先定义字符串长度。如果不指定(M),则表示长度默认是1个字符。
  2. 如果保存数据的实际长度比CHAR类型声明的长度小,则会在右侧填充空格以达到指定的长度。当MySQL检索CHAR类型的数据时,CHAR类型的字段会去除尾部的空格。
  3. 定义CHAR类型字段时,声明的字段长度即为CHAR类型字段所占的存储空间的字节数。
  4. VARCHAR(M) 定义时, 必须指定长度M,否则就会报错。
  5. 检索VARCHAR类型的字段数据时,会保留数据尾部的空格。VARCHAR类型的字段所占用的存储空间为字符串实际长度加1个字节。

扩展1:CHAR(4)和VARCHAR(4)存储需求对比:

插入值 CHAR(4)存储需求 VARCHAR(4)存储需求
‘a’ 4字节 1字节
‘ab’ 4字节 3字节
‘abc’ 4字节 4字节
‘abcd’ 4字节 5字节
  • 对于CHAR(4)无论插入值的长度是多少,所占存储空间就为4字节,而VARCHAR(4)占用的字节数为实际长度加1。

扩展2:CHAR(M)和VARCHAR(M)的特点及应用环境

类型 特点 空间 时间 使用场景
CHAR(M) 固定长度 浪费存储空间 效率高 存储不大,速度要求高
VARCHAR(M) 可变长度 节省存储空间 效率低 非CHAR情况
  • 情况1:存储较短的字段数据信息使用char,若使用varchar,还需要额外1个字节来存储信息长度,造成空间存储浪费。
  • 情况2:储存固定的字段数据信息使用char,因字段长固定,varchar的可变长的特性对存储空间没有效果了,还需要额外1个字节来存储信息长度。
  • 情况3:频繁改变的column使用char,因varchar每次存储都要有额外的计算,从而完成得到长度等工作,如果一个非常频繁改变的column操作,那就要花费很多时间和空间来用于计算,而这些对于char来说是不需要的。

注意事项:

  1. 在选择数据类型时,若一个数据将来可能会参与数学运算时,推荐使用整数,浮点数,定点数类型;若只是为了显示,则推荐使用字符串类型。
  2. 表的主键推荐使用整数类型,因为与字符串类型相比,整数类型的处理效率更高,查询速度更快。
  3. 当插入的值的数据类型与字段的数据类型不一致时,或使用ALTER TABLE修改字段的数据类型时,MySQL会尝试尽可能的将现有的值转换为新类型。例如,字符串"123"与数字123可以相互转换,浮点数1.5转换为整数时,会进行四舍五入,转换为整数2。

3.2,TEXT类型

TEXT类型用于保存大文本数据,例如,文章内容,评论等比较长的文本。

数据类型 存储范围 存储空间占用量 特点
TINYTEXT(tinytext) 0~2^8-1 文本长度+2 小文本,可变长度
TEXT(text) 0~2^16-1 文本长度+2 文本,可变长度
MEDIUMTEXT(mediumtext) 0~2^24-1 文本长度+3 中等文本,可变长度
LONGTEXT(longtext) 0~2^32-1 文本长度+4 大文本,可变长度
  1. 在向TEXT类型的字段保存和查询数据时,系统自动按照实际长度存储,不需要预先定义长度。这一点和VARCHAR类型相同。
  2. 由于实际存储的长度不确定,MySQL不允许TEXT类型的字段做主键,只可使用VARCHAR和CHAR字段类型。
  3. TEXT文本类型可以存储较多的文本,但搜索速度较慢,所以不是特别大的文本,可选择使用VARCHAR和CHAR字段类型代替。
  4. 若一个表被频繁使用,这个表中不建议存在TEXT类型的字段。因TEXT和BLOB类型的数据删除后容易导致空洞,使文件碎片比较多。

3.3,ENUM类型

ENUM类型又称为枚举类型,其定义格式为:

ENUM('值1','值2','值3','值4','值5',....,'值n')
  1. ENUM类型的取值范围需要在定义字段时进行指定。

  2. 设置字段值时,ENUM类型只允许从成员中选取单个值,不能一次选取多个值。

  3. 其所需要的存储空间由定义ENUM类型时指定的成员个数决定。

    • 当ENUM类型包含1~255个成员时,需要1个字节的存储空间
    • 当ENUM类型包含256~65535个成员时,需要2个字节的存储空间
    • ENUM类型的成员个数的上限为65535个

为了能够更好的理解ENUM类型以及其注意事项,实例如下:

image-20230104140403106


3.4,SET类型

SET类型用于保存字符串对象,其定义格式与ENUM类型相似。

SET('值1','值2','值3','值4','值5',....,'值n')
  1. 其所需要的存储空间由定SET类型时指定的成员个数决定。

    SET类型包含的成员数 存储空间
    1~8 1个字节
    9~16 2个字节
    17~24 3个字节
    25~32 4个字节
    33~64 8个字节
  2. SET类型在存储数据时成员个数越多,其占用的存储空间越大。

  3. SET类型在选取成员时,与ENUM类型不同,其可以一次选择多个成员。


为了能够更好的理解SET类型以及其注意事项,实例如下:

image-20230104142038942


3.5,BINARY和VARBINARY类型

BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的是,它们所表示的是二进制数据。

类型 特点 长度 长度范围 占用的存储空间
BINARY(M) 固定长度 M 0<=M<=255 M个字节
VARBINARY(M) 可变长度 M 0<=M<=65535 (M+ 1) 个字节

BINARY和VARBINARY类型的定义形式:

BINARY(M)
VARBINARY(M)

3.6,BLOB类型

BLOB类型用于保存数据量比较大的二进制数据,如图片,PDF文档等。

数据类型 存储范围 占用空间
TINYBLOB 0~2^8 -1字节 len+1个字节
BLOB 0~2^16 -1字节(相当于64KB) len+2个字节
MEDIUMBLOB 0~2^24 -1字节(相当于16MB) len+3个字节
LONGBLOB 0~2^32 -1字节(相当于4GB) len+4个字节

注意:

  1. BLOB类型与TEXT类型相似,但BLOB类型数据是根据二进制编码进行比较和排序,而TEXT类型数据是根据文本模式进行比较和排序。

4,JSON数据类型

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式 ,简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。它易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式。

在MySQL 5.7中,就已经支持JSON数据类型。在MySQL中,JSON类型常见的表示方式有2种,分别为JSON数组和JSON对象。

#JSON数组
['abc',10,null,true]
#JSON对象
{"k1":"value","k2":10}

知识点

  1. JSON数组中保存的数据可以是任意类型的,如数字型,字符串型,布尔型,null …
  2. JSON数组使用“["和”]“符号实现,多个值之间用使用逗号相隔;JSON对象使用”{“和”}“符号实现,保存的是一组键值对,形式为属性名:对应的属性值。
  3. JSON数据类型与字符串类型相比,JSON数据类型具有自动验证格式,优化存储格式的优点。
  4. JSON数据类型所需的空间和LONGBLOB或LONGTEXT相同,且不能有默认值。

为了能够更好的理解JSON数据类型以及其注意事项,实例如下:

image-20230104143435981


结语

这就是本期博客的全部内容啦,想必大家已经对MySQL中的基本数据类型有了全新地认识和理解吧,如果有什么其他的问题无法自己解决,可以在评论区留言哦!

最后,如果你觉得这篇文章写的还不错的话或者有所收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(点赞

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

【MySQL基础】MySQL基本数据类型 的相关文章

  • 无法在 .net core 2 中从 MySQL 构建“日期”类型列

    我已经开始了一个新的 net core 2 项目 我正在尝试将 MySQL 数据库导入实体框架 我使用此命令来搭建数据库 Scaffold DbContext server localhost port 3306 user id user
  • 猪的组连接等效吗?

    试图在 Pig 上完成这个任务 寻找 MySQL 的 group concat 等效项 例如 在我的表中 我有以下内容 3fields userid clickcount pagenumber 155 2 12 155 3 133 155
  • MySQL - 多个结果集

    我正在使用 NET Connector 连接到 MySQL 在我的应用程序中 很少有线程使用相同的连接 因此如果 MySQLDataReader 尚未关闭并且某个线程正在尝试执行查询 则会出现该错误 已经有一个打开的 DataReader
  • 在MySQL中生成随机字符串

    我正在尝试使用函数在 phpmyadmin 中获取随机字符串 我有以下代码 CREATE FUNCTION randomPassword RETURNS varchar 128 BEGIN SET chars ABCDEFGHIJKLMNO
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • MySQL 可选的带有 MATCH 的 LEFT JOIN

    我有以下查询 它对 MySQL Innodb 数据库中同一搜索词的两个不同表中的两列执行全文搜索 SELECT Id MATCH tb1 comment tb2 comment AGAINST search term IN BOOLEAN
  • MySQL 左连接 WHERE table2.field = "X"

    我有以下表格 pages Field Type Null Key Default Extra page id int 11 NO PRI NULL auto increment type varchar 20 NO NULL
  • 显示和随机化 php 数组

    我有一个显示结果的数组 如下所示 Array 0 gt 71 1 gt 56 2 gt 64 3 gt 82 4 gt 90 5 gt 80 6 gt 65 7 gt 62 8 gt 14 9 gt 3 我的代码是 while row my
  • Mysql带限制的删除语句

    我试图从表中删除行 但出现错误 DELETE FROM chat messages ORDER BY timestamp DESC LIMIT 20 50 我在 50 时收到此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL
  • MySQL 概念:会话与连接

    我对 MySQL 的概念有点困惑 会话与连接 当谈论连接到 MySQL 时 我们使用连接术语 连接池等 然而在 MySQL 在线文档中 http dev mysql com doc refman 4 1 en server system v
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in
  • 如何为 MySQL 中的字段或列添加别名?

    我正在尝试做这样的事情 但我收到未知的列错误 SELECT SUM field1 field2 AS col1 col1 field3 AS col3 from core 基本上 我只想使用别名 这样我就不需要执行之前执行的操作 这在mys
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • 使用什么框架来引导我的第一个生产 scala 项目?

    我正在第一次涉足 scala 的生产应用程序 该应用程序当前打包为 war 文件 我的计划是创建 scala 编译工件的 jar 文件 并将其添加到 war 文件的 lib 文件夹中 我的增强功能是通过 Jersey 公开的 mysql 支
  • MySQL InnoDB 约束不起作用

    我偶然发现 innoDB 约束的奇怪行为 但找不到原因 我有包含数据的表格 下面列出了它们的结构 CREATE TABLE contents id int 10 unsigned NOT NULL AUTO INCREMENT title
  • 如何从 MySQL 数据查询创建 XML 文件?

    我想知道一种仅使用 MySQL 查询创建 XML 文件的方法 根本不使用任何脚本语言 有关于这个主题的书籍 教程吗 UPDATE 我想澄清一下 我想使用 sql 查询将 XML 数据转发到 php 脚本 Here s 关于从 MySQL S
  • MySQL如何获取unix时间戳的时间差

    我有一个保存值1506947452的变量 需要使用公式从该日期提取分钟 started data now date 但started date采用unix时间戳格式10位int数字 我以ajax形式收到并需要放入mysql查询i试试这个 S

随机推荐

  • 目标检测识别中,mAP,AP,P值的定义与计算

    mAP是衡量模型在所有类别上的准确率 是衡量模型的好坏的评价指标 mAP 所有类别的AP之和 类别数 AP是某一个类别的准确率 AP 每张图片的P之和 图片数量 P 一张图片上某一类别识别的正确数量 一张图片上某一类别的总数量 比如现在有三
  • drwxr-x-w-. 4 507 509 4.0K 9月 4 2018 wukong linux中 507和509 是什么回事?

    第一个数字507出现原因 表示该目录的所有者 不存在了 第二个数字509出现原因 表示该目录的所有者所在的组 不存在了
  • 【办公类-19-03】办公中的思考——Python批量制作word单元格照片和文字(小照片系列)

    背景需求 工会老师求助 如何在word里面插入4 8的框 我怎么也拉不到4 8大小 她用的是我WORD 文本框 我一听 这又是要手动反复黏贴 文本框 照片 文字 的节奏哦 我问 你要做几个人 超过20个 我写个程序批量插图 写代码测试要费时
  • 5.2lua setfenv

    local FuncEnv setmetatable FuncEnv index G local func loadfile a lua local func loadfile a lua nil FuncEnv local ENV Fun
  • 二分查找法

    二分查找法 1 基础二分查找 2 改进二分查找 3 平衡版二分查找法 4 查找目标值最左索引 5 查找目标值最右索引 6 查找大于等于目标值的最左索引 7 查找小于等于目标的最右索引值 1 基础二分查找 二分查找法 基础 public st
  • mysql系统错误216_MySQL异常 - Skqing - OSCHINA - 中文开源技术交流社区

    jdbc mysql localhost 3306 ry useUnicode true characterEncoding utf8 zeroDateTimeBehavior convertToNull useSSL true Druid
  • 【扫盲】机器学习图像处理中的深层/浅层、局部/全局特征

    浅层网络与深层网络浅层网络更注重于细节信息 深层网络更注重于语义信息 浅层网络 一般感受野较小 能够利用更多的细粒度特征信息 而且此时特征图每个像素点对应的感受野重叠区域还很小 这就保证了网络能够捕获更多细节 深层网络 随着下采样或卷积次数
  • 常见黑客渗透测试工具

    因为上面要转了一篇 里面好多我都觉得过时了 不过确实好多我也还在用 哈哈 留个备份吧 免得上面又要找我要 一 Nessus 是扫描UNIX漏洞的主力工具 随后栖身Windows 主要功能包括本地和远程安全审查 支持client server
  • 10亿个数字,内存限制100M,进行排序

    解题思路 分治法 拆分小文件 先对每个小文件进行排序 然后使用小顶堆或大顶堆合并文件 代码 python3 import threading from queue import Queue import time import random
  • 小程序页面收录sitemap.json的作用与使用方法

    desc 关于本文件的更多信息 请参考文档 https developers weixin qq com miniprogram dev framework sitemap html rules action allow page 微信现已
  • 毕业设计-基于GUI的模拟电路故障诊断仿真平台研究- Matlab

    目录 前言 课题背景和意义 实现技术思路 一 联合仿真平台设计与实现 二 系统测试 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要
  • MySQL运行原理与基础架构

    1 MySQL基础 MySQL是一个开放源代码的关系数据库管理系统 原开发者为瑞典的MySQL AB公司 最早是在2001年MySQL3 23进入到管理员的视野并在之后获得广泛的应用 2008年MySQL公司被Sun公司收购并发布了首个收购
  • APP违法违规收集使用个人信息行为认定方法

    没有公开收集使用规则的情形 在App中没有隐私政策 或者隐私政策中没有收集使用个人信息规则 解读 APP内无法找到隐私政策或隐私政策内没有包含该APP收集使用个人信息的规则 在App首次运行时未通过弹窗等明显方式提示用户阅读隐私政策等收集使
  • 【Python】删除USB网络共享在win系统中递增的网络x

    删除之后还是挺干净的 软件环境 windows python3 winreg模块 自带 如果是python2请修改为 winreg 前置知识 所有已保存的网络存储HKEY LOCAL MACHINE SOFTWARE Microsoft W
  • Hive表的几种存储格式及在性能调优应用

    一 理论知识学习 底层决定上层建筑 此部分内容引用了 Hive表的几种存储格式 海贼王一样的男人 博客园 Hive的文件存储格式 textFile textFile为默认格式 存储方式 行存储 缺点 磁盘开销大 数据解析开销大 压缩的tex
  • QT background-color: transparent

    改行代码的作用是可以把背景颜色设为透明 transparent 是默认的 background color transparent 别小看这个 这个 css 代码 在 qt 样式表里应用 可以实现挺好看的效果 如果你遇到有些字体被背景颜色遮
  • 在指定内存上创建对象——placement new机制

    一 介绍 一般来说 使用new申请空间时 是从系统的 堆 heap 中分配空间 申请所得空间的位置是随机的 但是 在某些特殊情况下 可能需要在已分配的特定内存创建对象 比如内存池 这就是所谓的 定位放置new placement new 操
  • Contrastive Loss (对比损失)

    Contrastive Loss 对比损失 在caffe的孪生神经网络 siamese network 中 其采用的损失函数是contrastive loss 这种损失函数可以有效的处理孪生神经网络中的paired data的关系 cont
  • 【CSS】CSS基础知识

    选择器 element 直接选择全部的元素 如 div 选择所有的div元素 id 选择某一id的元素 如 title 选择id为title的元素 class 选择包含某个class的部分元素 如 item 选择class为item的元素
  • 【MySQL基础】MySQL基本数据类型

    序号 系列文章 1 MySQL基础 MySQL介绍及安装 2 MySQL基础 MySQL基本操作详解 3 MySQL基础 MySQL基本数据类型 文章目录 前言 1 数字类型 1 1 整型类型 1 2 浮点数类型 1 3 定点数类型 1 4