一、字段类型

学习目标:了解字段类型的作用,掌握MySQL中的字段类型,熟练运用字段类型来设计数据表

  • 字段类型的作用
  • 整数类型
  • 小数类型
  • 时间日期类型
  • 字符串类型

1、字段类型作用

目标:了解为什么要有字段类型以及字段类型的作用

概念

字段类型:MySQL中用来规定实际存储的数据格式

  • 字段类型在定义表结构时设定
  • 设定好字段类型后,插入数据时必须与字段类型对应,否则数据错误
  • MySQL有四大数据类型
    • 整数类型
    • 小数类型
    • 字符串类型
    • 时间日期类型

示例

规定类型的字段只能插入相应的数据格式

# 正确数据类型插入
insert into t_6 values(3,'444111222211110101','Lily','Lee');# 错误数据类型插入
insert into t_6 values('hello','444444222211110102','Lucy','Lu');

小结

1、字段类型的作用就是强制规范录入的数据格式

  • 规范数据的格式
  • 保证数据的有效性

2、MySQL中有四种数据类型规范

  • 整数类型:只能存储整数
  • 小数类型:可以存储有效数值
  • 字符串类型:存储字符串数据
  • 时间日类类型:存储时间日期格式数据

2、整数类型

目标:了解MySQL中的整数机制,掌握常用的整数类型解决整数存储问题

概念

整数类型:有效的整数数据

  • MySQL中为了数据空间的有效使用,设定了五种整数类型
    • 迷你整型:tinyint,使用1个字节存储整数,最多存储256个整数(-128~127)
    • 短整型:smallint,使用2个字节存储整数
    • 中整型:mediumint,使用3个字节存储整数
    • 标准整型:int,使用4个字节存储整数
    • 大整型:bigint,使用8个字节存储
  • 数值型存储在MySQL中分为有符号(有负数)和无符号(纯正数)

步骤

1、确定数据的格式是存储整数

2、预估整数的范围,选择合适的整数类型

3、确定整数是否需要符号(负数区间)

示例

1、设计一个表记录个人信息:年龄、头发数量

# 年龄:没有负数,正常年龄也不超过200岁,迷你整型无符号即可
# 头发数量:没有负数,大概在几百万根,所以标准整型无符号即可
create table t_7(age tinyint unsigned, # unsigned修饰整数,表示无符号(从0开始)haircount int unsigned
)charset utf8;

2、设计一个表记录4S店的汽车销量信息:库存数量、销量、采购量

# 4S店经常是先卖后进货,所以库存可能为负数,一个店铺的库存数通常不会太多,那么小整型即可
# 销量通常全国一个月也就几万台,所以基本上小整型就够了,但是为了保证后续可能存在的爆发,那么中整型也是绝对够了的,而且不会是负数
# 采购通常是正向采购,所以不会出现负数,而采购数量与销量持平就好create table t_8(stock smallint,sales mediumint unsigned,purchase mediumint unsigned
)charset utf8;

小结

1、整型是用来存储整数数据的

2、整数数据也需要根据业务大小来选择合适的存储方式

  • 迷你整型:存储数量不超过1个字节表示范围
  • 小整型:存储数量不超过2个字节表示范围
  • 中整型:存储数量不超过3个字节表示范围
  • 整型:存储数量不超过4个字节表示范围
  • 大整型:存储数量不超过8个字节表示范围

3、数值型类型在MySQL中默认是有符号的,即有正负

  • 无符号需要使用unsigned修饰整型,即纯正数

4、一般开发中不会太计较一个或者两个字节(不愿意算),所以tinyint和int居多,其他较少

3、显示宽度

目标:了解显示宽度的实现,掌握在具体需求下使用显示宽度

概念

显示宽度:int(L),整数在数据库中显示的符号(数字+符号)个数

  • 显示宽度一般是类型能表示的最大值对应的数字个数(通过desc查看表字段显示)
  • 显示宽度包含符号(如果允许为负数,-负号会增加一个宽度)
  • 显示宽度可以主动控制:创建字段时加括号确定
  • 显示宽度不会影响类型能表示的最大数值
  • 可以通过zerofill让不够宽度的数值补充到对应宽度:在字段类型后使用zerofill

示例

1、有符号和无符号对应的宽度不一样

create table t_9(a tinyint,b tinyint unsigned
)charset utf8;

2、可以主动控制显示宽度

alter table t_9 add c tinyint(2) unsigned;

3、显示宽度不影响数据的大小

insert into t_9 values(1,1,1); #小于显示宽度
insert into t_9 values(100,100,100); #大于显示宽度

4、可以通过zerofill让小于显示宽度的数值前置补充0到显示宽度

alter table t_9 add d tinyint(2) zerofill; # 0填充只能针对正数
insert into t_9 values(1,1,1,1);

小结

1、显示宽度是显示整型能表示的最多符号数量

2、显示宽度能主动设置,但是绝对不会改变类型本身能表示的数据大小

3、可以通过zerofill来强制让不够宽度的数据补充前置0来达到显示宽度

  • zerofill默认要求整型为无符号
  • zerofill通常用来制作一些规范宽度的数据

4、小数类型(浮点型)

目标:了解浮点型的概念,掌握浮点数的应用场景

概念

浮点数:float/double,存储不是特别精确的数值数据

  • 浮点数又称之为精度数据,分为两种
    • 单精度:float,使用4个字节存储,精度范围为6-7位有效数字
    • 双精度:double,使用8个字节存储,精度范围为14-15位有效数字
  • 浮点数超过精度范围会自动进行四舍五入
  • 精度可以指定整数和小数部分
    • 默认不指定,整数部分不超过最大值,小数部分保留2位
    • 可以指定:float/double(总长度,小数部分长度)
  • 可以使用科学计数法插入数据:AEB,A * 10 ^ B

步骤

1、确定当前设计的字段的数据为不精确型数据(或者小数)

2、确定数据的大小或者精度的要求范围

  • 6-7位有效数字使用float
  • 14-15位有效数字使用double

3、确定精度的分布:整数部分和小数部分

示例

1、记录宇宙中恒星、行星的数量

# 数量属于不确定量级,所以精确的数据是无意义的,只能是个大概(绝大部分时候float就可以)
create table t_10(h_star float unsigned,x_star float(20,0) unsigned
)charset utf8;insert into t_10 values(1234567890,1.2E10);

2、记录商品的价格

# 商品名字字符串
# 商品价格一般都允许带小数
create table t_11(goods_name varchar(20),goods_price float
)charset utf8;
insert into t_11 values('Nokia3310',199.99);
insert into t_11 values('Nokia6100',1999.9999);

小结

1、浮点数是用来记录一些不需要特别精确的数值或者小数数值的

  • float:单精度,6-7位有效数字
  • double:双精度,14-15位有效数字

2、浮点数能够表示很大的数值

3、浮点数可以指定整数部分和小数部分的有效数值区间

  • float/double
    • 默认是整数不超过最大范围即可
    • 小数部分保留2位有效数字
  • float/double(有效数位,小数部分有效位)
    • 整数部分为有效数位 - 小数部分
    • 数值如果超过整数部分就不让插入

4、因为浮点数会自动四舍五入,所以不要使用浮点数来存储对精度要求较高的数值

5、小数类型(定点型)

目标:了解定点型的概念和使用场景,运用定点型解决特定小数问题

概念

定点型:decimal,能够保证精度的小数

  • 不固定存储空间存储
  • 每9个数字使用4个字节存储
  • 定点型可以指定整数部分长度和小数部分长度
    • 默认不指定,10位有效整数,0位小数
    • 可以指定:decimal(有效数位,小数部分数位)
    • 有效数位不超过65个
  • 数据规范
    • 整数部分超出报错
    • 小数部分超出四舍五入

步骤

1、确定小数是否需要保证精度

2、确定有效数位长度

示例

记录个人资产情况:资产和负债

# 资产和负债应该都是精确的,小数部分可以到分
create table t_12(money decimal(14,2),bet decimal(10,2)
)charset utf8;insert into t_12 values(1111111111.12,1111111.999);
insert into t_12 values(1111111111.12,99999999.999); # 错误:进位导致正数部分超过指定范围

小结

1、定点数是用来存储精确的小数的

2、定点数可以指定长度

  • decimal:默认
    • 整数部分为10位
    • 小数部分为0
  • decimal(有效位数,小数位数)
    • 整数部分为:有效位数 - 小数位数
    • 有效数位不超过65个

3、定点数的存储模式不是固定长度,所以数据越大占用的存储空间越长

6、字符串类型(定长型)

目标:了解定长型的语法和存储原理,掌握定长型的应用

概念

定长型:char(L),指定固定长度的存储空间存储字符串

  • 定长是指定存储长度
  • 定长的长度是字符而不是字节
    • L的最大值是255
    • 实际存储空间:L字符数 * 字符集对应字节数
  • 定长里存储的数据不能超过指定长度,但是可以小于指定长度
  • 字符串数据使用单引号或者双引号包裹

步骤

1、确定数据类型为字符串(或不能用整数存储的超长数字符号)

2、确定数据长度基本一致(定长占用固定空间)

3、确定具体长度

示例

记录个人信息:身份证信息和手机号码

# 身份证为固定长度18位(数字)
# 手机号码是11位固定长度(数字)
create table t_13(id_number char(18),phone_number char(11)
)charset utf8;
insert into t_13 values('440111999912120304','13512345678');

小结

1、定长是固定存储空间

  • 实际存储空间:L字符 * 字符集对应字节数

2、定长对应的是字符长度,而不是字节长度

3、字符串数据需要使用引号包裹具体数据

4、定长的访问效率较高,但是空间利用率不高

  • 固定长度的数据使用定长

  • 定长最大数据长度指定不超过255字符

7、字符串类型(变长型)

目标:了解变长型的语法和存储原理,掌握变长型的应用

概念

变长型:varchar(L),根据实际存储的数据变化存储空间

  • 变长型的存储空间是由实际存储数据决定的
  • 变长型的L也是指字符而不是字节
    • L指定的是最大存储的数据长度
    • L最大值理论是65535
    • 变长需要额外产生1-2个字节,用来记录实际数据的长度
      • 数据长度小于256个,多1个字节
      • 数据长度大于256个,多2个字节
    • 实际存储空间:实际字符数 * 字符集对应字节数 + 记录长度
  • 变长数据不能超过定义的最大长度

步骤

1、确定数据类型为字符串

2、确定数据是不规则的数据

3、确定最大长度

示例

记录个人信息:用户名、密码、姓名、身份证

# 用户名不确定长度,最长不超过50个字符
# 密码不确定长度,最潮超过15个字符
# 姓名不确定长度,最长不超过10个字符
# 身份证固定长度,18个字符
create table t_14(`username` varchar(50),`password` varchar(15),`name` varchar(10),`id_number` char(18)
)charset utf8;insert into t_14 values('username','password','name','444111999912121111');

小结

1、变长varchar是根据数据的长度实际计算存储空间

2、变长需要规定数据的最大长度,理论长度为65535个字符

3、变长字符串能够更好的利用存储空间

4、变长字符串需要有额外1-2个字节存储数据长度

  • 不超过256个字符:1个字节
  • 超过256个字符:2个字节

5、变长字符串在读取时需要进行长度计算,所以效率没有定长字符串高

8、字符串类型(文本字符串)

目标:了解文本字符串的作用,掌握文本字符串的使用规则

概念

文本字符串:text/blob,专门用来存储较长的文本

  • 文本字符串通常在超过255个字符时使用
  • 文本字符串包含两大类
    • text:普通字符
      • tinytext:迷你文本,不超过2 ^ 8 -1个字符
      • text:普通文本,不超过 2 ^ 16 - 1个字符
      • mediumtext:中型文本,不超过 2 ^ 24 - 1 个字符
      • longtext:长文本,不超过 2 ^ 32 - 1 个字符(4G)
    • blob:二进制字符(与text类似)
      • tinyblob
      • blob
      • mediumblob
      • longblob
  • 文本字符串会自动根据文本长度选择适合的具体类型
  • 一般在文本超过255个字符时,都会使用text(blob现在极少使用)

步骤

1、确定类型为文本类型

2、确定数据长度可能超过255个字符

3、使用text

示例

记录新闻信息:标题、作者和内容

# 标题一般不会超过50个字符,varchar
# 作者一般不会超过10个字符:varchar
# 内容通常都很长,使用text
create table t_15(author varchar(10),title varchar(50),content text
)charset utf8;insert into t_15 values('佚名','给联合国的一封信','给联合国的一封信...');

小结

1、文本类型是专门用来存储长文本的

  • text:普通文本字符
  • blob:二进制文本字符

2、一般文本长度超过255的(较长)都使用text

3、text/blob根据数据存储长度有很多种,但是一般使用text/blob,因为文本会根据数据长度自适应选择

9、字符串类型(枚举)

目标:enum,了解枚举概念和存储原理,掌握枚举的实际应用

概念

枚举:一种映射存储方式,以较小的空间存储较多的数据

  • 枚举是在定义时确定可能出现的可能
  • 枚举在定义后数据只能出现定义时其中的一种
  • 枚举类似一种单选框
  • 枚举使用1-2个字节存储,最多可以设计65535个选项
  • 枚举实际存储是使用数值,映射对应的元素数据,从1开始
  • 枚举语法:enum(元素1,元素2,…元素N)

步骤

1、确定数据是固定的几种数据之一

2、使用枚举穷举相应的元素

3、数据存储只能选择穷举中的元素之一

示例

1、记录人群类型:小朋友、少年、青年、中年、老年,每个人实际只属于一种类别

# 要保证未来数据只能出现在某种可能中,所以要先列出来,可以使用enum
create table t_16(type enum('小朋友','少年','青年','中年','老年')
)charset utf8;insert into t_16 values('少年');
insert into t_16 values('仙人');	# 不存在的数据不能插入

2、enum是建立映射关系,然后实际存储是数字,数值是按照元素顺序从1开始

# 可以使用字段 + 0来判定数据具体的效果(字符串转数值为0)
select type,type + 0 from t_16;
insert into t_16 values(5);

流程原理

1、枚举定义原理

枚举数据 映射值
数据1 1
数据2 2
数据N N(小于65535)

2、数据存储(读取反过来)

指令开始
插入数据
读取映射关系
元素==数值
数值==数值
数值存储到字段
结束

小结

1、枚举是在定义时确定可能出现的元素,而后数据只能出现规定的元素之一的数据类型

2、枚举的存储是一种映射关系,对元素进行顺序编号,实际存储的是编号

3、使用枚举的作用

  • 规范数据模型
  • 优化存储空间

10、字符串类型(集合)

目标:了解集合概念和存储原理,掌握集合的应用

概念

集合:set,一种映射存储方式,以较小的空间存储较多的数据

  • 集合是在定义时确定可能出现的元素进行穷举
  • 集合在定义后数据只能出现定义时其中的元素(可以是多个)
  • 集合类似一种多选框
  • 集合使用1-8个字节存储数据,最多可以设计64个元素
  • 集合实际存储是使用数值(二进制位),映射对应的元素数据,每个元素对应一个比特位
  • 集合语法:set(元素1,元素2,…元素N)

步骤

1、确定数据是固定的几种数据组合

2、使用集合穷举相应的元素

3、数据存储只能选择穷举中的元素组合(多个使用逗号分隔)

示例

1、记录个人的球类爱好,有篮球、足球、羽毛球、网球、乒乓球、排球、台球、冰球

# 爱好可以是多种,并非固定的,但是只能从规定的类型中选择
create table t_17(hobby set('足球','篮球','羽毛球','网球','乒乓球','排球','台球','冰球')
)charset utf8;insert into t_17 values('足球');
insert into t_17 values('冰球,台球,篮球');

2、集合建立的也是映射关系,映射方式是每个元素对应一个字节的比特位,从左边开始第一个对应字节从右边开始的第一位

# 可以通过字段 + 0的方式查看存储的具体数值
select hobby,hobby + 0 from t_17;# 可以通过插入数值来组合元素,但是需要确定对应的十进制转换成二进制有对应的元素对应
insert into t_17 values(8);/*8:000010001:00000001冰球、台球、篮球11000010 => 1 + 2 ^ 1 + 1 * 2 ^ 6 + 1 * 2 ^ 7 = 2 + 64 + 128 = 194
*/

流程原理

1、集合定义原理

集合数据 映射位
数据1 00000001
数据2 00000010
数据8 10000000

2、数据存储(读取反过来)

指令开始
插入数据
读取映射关系
元素选中==位值为1
元素未选中==位值为0
转化成十进制存储
结束

小结

1、集合是在定义时确定可能出现的元素,而后数据只能出现规定的元素数据类型

2、集合的存储是一种映射关系,每个元素对应字节中的一个位,实际存储的是编号

  • 数据存在:对应位为1
  • 数据不存在:对应位为0

3、使用集合的作用

  • 规范数据模型
  • 优化存储空间

11、时间日期类型(年)

目标:了解年类型的存储方式和数据管理方式

概念

:year,MySQL中用来存储年份的类型

  • MySQL中使用1个字节存储年份
  • year能够表示的范围是1901-2155年(256年)
    • year的特殊值是:0000
  • year允许用户使用两种方式设计(效果一样)
    • year
    • year(4)

步骤

1、确定存储的数据是年份

2、确定年份的区间在1901-2155之间

3、使用year类型

示例

1、记录个人的出生年份

create table t_18(y1 year,y2 year(4)
)charset utf8;
insert into t_18 values(1901,2155);

2、Year类型允许使用2位数来插入,系统会自动匹配对应的年份

  • 69以前:系统加上2000
  • 69以后:系统加上1900
insert into t_18 values(69,70);

3、Year类型的特殊值是0000,可以使用00或者0000插入

insert into t_18 values(00,0000);

小结

1、year类型是MySQL用来存储年份信息的

2、year使用1个字节,所以只能表示256个年号,表示区间为1901-2155年

3、year数据可以用两种方式插入

  • 直接插入4位年,1901-2155之间都可以
  • 插入2位年,0-99之间,系统会自动以69和70为界限

4、因为year字段表示的范围有限,所以通常会使用字符串来存储(牺牲空间换安全)

12、时间日期类型(时间戳)

目标:了解时间戳的概念,掌握时间戳的特殊应用

概念

时间戳:timestamp,基于格林威治时间的时间记录

  • MySQL中时间戳表现形式不是秒数,而是年月日时分秒格式
    • YYYY-MM-DD HH:II::SS
    • YYYYMMDDHHIISS
  • timestamp使用4个字节存储
  • timestamp的特点是所对应的记录不论哪个字段被更新,该字段都会更新到当前时间

步骤

1、确定类型需要使用年月日时分秒格式

2、确定当前字段需要记录数据的最近更新时间

3、使用timestamp时间戳

示例

1、记录商品库存的最后更新时间

create table t_19(goods_name varchar(10),goods_inventory int unsigned,change_time timestamp
)charset utf8;insert into t_19 values('Nokia3110',100,'1971-01-01 00:00:00');
insert into t_19 values('Nokia7100',100,'19710101000000');

2、timestamp会在自己所在的记录任何位置被修改时自动更新时间

update t_19 set goods_inventory = 90;

注意:在MySQL8以后,取消了timestamp的默认自动更新,如果需要使用,需要额外使用属性: on update current_timestamp

alter table t_19 add c_time timestamp on update current_timestamp;update t_19 set goods_inventory = 80;

小结

1、timestamp是用以时间戳的形式来保存时间的

  • 时间戳算法是从格林威治时间开始
  • MySQL中存储的是年月日时分秒格式

2、timestamp使用4个字节存储数据

  • 表示范围是1971年1月1日0时0分0秒-2155年12月31日23是59分59秒
  • timestamp可以使用0000-00-00 00:00:00

3、timestamp一般用来记录数据变化的,其他时候通常用整型保存真正的时间戳

  • timestamp在MySQL8中需要主动使用on update current_timestamp才会自动更新

13、时间日期类型(日期)

目标:了解日期类型的存储原理,掌握日期类型的应用场景

概念

日期:date,用来记录年月日信息

  • 使用3个字节存储数据
  • 存储日期的格式为:YYYY-MM-DD
  • 存储的范围是:1001-01-01~9999-12-31

步骤

1、确定存储的数据格式为日期类格式

2、确定数据格式为YYYY-MM-DD

3、使用date类型

示例

记录个人生日

create table t_20(name varchar(10),birth date
)charset utf8;insert into t_20 values('Jim','2000-12-12');
insert into t_20 values('Tom','10011212');

小结

1、日期date是用来存储YYYY-MM-DD格式的日期的

2、date用3个字节存储,存储区间是1000 - 9999年,跨度很大

3、date可以在需要存储日期的地方放心使用

14、时间日期类型(日期时间)

目标:了解日期时间的存储格式,掌握日期时间的实际应用

概念

日期时间:datetime,用来综合存储日期和时间

  • 使用8个字节存储数据
  • 存储格式为:YYYY-MM-DD HH:II:SS
  • 存储区间为:1000-01-01 00:00:00 到9999-12-31 23:59:59

步骤

1、确定要存储的时间格式包含日期

2、确定存储格式为:YYYY-MM-DD HH:II:SS

3、使用datetime

示例

记录个人具体的出生时间

create table t_21(name varchar(10),birth datetime
)charset utf8;insert into t_21 values('Jim','2000-12-12 12:12:12');
insert into t_21 values('Tom','10011212182323');

小结

1、日期时间是综合存储日期和时间两部分的

2、日期时间datetime使用8个字节存储

3、datetime的存储区间为:1000-01-01 00:00:00 到 9999-12-12 23:59:59

4、实际开发中因为编程语言(PHP)的强大,实际存储的时候通常不会使用这种类型

  • 占用较大存储空间
  • 处理不够灵活(固定格式)
  • 使用int unsigned存储时间戳然后利用PHPdate进行格式处理

15、时间日期类型(时间)

目标:了解时间的存储格式和实际效果

概念

时间:time,用来记录时间或者时间段

  • 使用3个字节存储数据
  • 数据范围是 -838:59:59 - 838:59:59
  • 数据插入的格式分为两种
    • 时间格式:[H]HH:II:SS([]表示可以没有)
    • 时间段格式:D HH:II:SS(D表示天)

步骤

1、确定要存储的类型是时间格式

2、确定格式类型为time能表示的格式

3、使用time存储

示例

记录用户登录的具体时间

# 具体登录时间可以使用时间戳(包含年月日时分秒信息)
# 也可以时间datetime格式,或者date+time双字段格式(具体后面学习范式时会知道该怎么用)
create table t_22(login_time1 int unsigned,login_time2 datetime,login_date date,login_time3 time
)charset utf8;insert into t_22 values(12345678,'2000-12-12 12:12:12','2000-12-12','12:12:12');
insert into t_22 values(1234567,'2000-12-12 12:12:12','2000-12-12','3 12:12:12');

小结

1、时间格式time主要用来记录时间点或者时间段

2、time类型通常被用来做时间段计算:如多少天后的什么时间点(可以理解为过期检查)

16、总结

1、字段类型是用来规范数据的格式的

2、MySQL中有很多类型用来规范数据格式

  • 整数类型(常用)
    • 常用类型:tinyint、int
  • 小数类型(常用)
    • 常用类型:decimal、float
  • 字符串类型(常用)
    • 常用类型:char、varchar、text
  • 时间日期类型(不常用:通常使用真正时间戳存储数据,然后PHP进行灵活解读)

3、实际开发的时候,一定要仔细了解需求,根据需求判定好具体选用那种数据类型

  • 最原始的维护能够具有最大的通用性(选中类型)
  • 最小的消耗能够解决全部的问题(巧妙利用存储空间)

二、属性

学习目标:了解属性的类型和作用,掌握使用属性来完成表字段的约束和控制

  • 空属性
  • 默认值属性
  • 主键
  • 自动增长
  • 唯一键
  • 字段描述

1、属性作用

目标:了解属性的查看方式以及属性存在的意义

概念

属性:建立在字段类型之后,对字段除类型之外的其他约束

  • 属性是在定义表字段的时候针对每个字段进行属性设定
  • 设定好的属性可以通过查看表字段desc进行查看
  • 数据在进行增删改(写)操作时需要在满足字段的要求同时还要满足属性的要求

示例

查看表属性:desc 表名

desc t_1;# Field:字段名字
# Type:数据类型
# Null:是否为空(属性)
# Key:索引类型(属性)
# Default:默认值(属性)
# Extra:额外属性

小结

1、属性是用来MySQL用来增加字段规范和约束的

2、数据的写操作必须严格满足字段类型和属性要求

3、用好属性能够提升数据的有效性,方便未来进行数据操作和数据分析(数据真实性和有效性)

2、NULL属性

目标:了解Null属性的作用,掌握Null属性的应用

概念

NULL:数据是否允许为空

  • 默认情况下数据是允许为空的
  • 不为空设计:Not Null
  • 数据为空一般不具备运算和分析价值,所以通常数据都需要设定为Not Null(不区分大小写)

步骤

1、数据类型确定

2、数据是否为空确定

  • 允许为空:不用考虑Null属性(默认为Null)
  • 不允许为空:Not Null

示例

1、用户信息表:用户名、密码、姓名、年龄、注册时间

create table t_23(username varchar(50) not null,password char(32) not null,name varchar(20),age tinyint unsigned,reg_time int unsigned not null
)charset utf8;

2、如果字段不能为空(Not Null),那么数据就必须满足条件:插入时不能为空的字段就需要主动提供值

insert into t_23 values('username','password','Jim',20,123456789);# 错误操作:reg_time不能为空,而默认为空,所以系统报错
insert into t_23 (username,password) values('username','password');

小结

1、Null/Not Null属性是用来限定数据是否为Null值的

  • 默认是允许为Null值
  • 不允许为空:Not Null

2、一般有效的数据都必须设定为Not Null来保证数据的有效性

3、Default属性

目标:了解默认值的概念和作用,掌握默认值的使用以及Default关键字的特殊使用

概念

默认值:default,在设计表字段的时候给定默认数据,在后续字段操作(数据新增)的时候系统没有检测到字段有数据的时候自动使用的值

  • 默认值在字段设计的时候使用(默认值需要满足数据类型规范)
  • 默认值通常设计的是字段容易出现的数据
    • 一般字段的默认值默认是Null
  • 默认值触发
    • 在系统进行数据插入时自动检测触发
    • 主动使用default关键字触发默认值

步骤

1、确定字段的数据类型

2、确定字段可能出现的数据会是某个经常出现的值

3、设定默认值

4、触发默认值

  • 自动触发:数据插入时不给字段赋值
  • 手动触发:数据插入时主动使用default关键字

示例

1、用户开户:银行卡账号、身份证号码、姓名、账户余额

create table t_24(account varchar(19) not null,id_card char(18) not null,name varchar(20) not null,money decimal(16,2) default 0.00 not null
)charset utf8;

2、默认值触发

# 默认触发
insert into t_24 (account,id_card,name) values('6226000000000001','44011120001212000x','Lily');# 主动触发
insert into t_24 values('6226000000000002','440111200012120011','Tom',default);
insert into t_24 values('6226000000000003','440111200012120022','Jim',100);

小结

1、每个字段都有默认值

  • 默认情况下基本为Null
  • 主动设置后,默认值改变

2、默认值是在设置表字段的时候添加

3、默认值触发

  • 自动触发
  • 关键字手动触发

4、默认值通常用于一些不重要的字段,但是会出现常用值(或者初始值一样)

4、主键

目标:了解主键的概念,掌握主键的实际应用

概念

主键:primary key,用来保证整张表中对应的字段永远不会出现重复数据

  • 主键在一张表中只能有一个
  • 主键的另外一个特性是能够提升主键字段作为查询条件的效率(索引)
  • 主键不能为空:Not Null(默认)
  • 逻辑主键:数据没有具体业务意义,纯粹是一种数值数据
    • 逻辑主键通常是整数:int
    • 逻辑主键目的是方便检索和数据安全(不暴露数据真实信息)
  • 复合主键:多个字段共同组成不能重复的数据
    • primary key(字段1,字段2,…字段N)
    • 联合主键使用不多,一般也不会超过2个字段

步骤

1、确定字段数据具有唯一性

2、确定数据不允许为空

3、确定数据会经常用于数据检索(条件查询)

4、使用主键primary key

5、一般每张表都会使用一个逻辑主键(id)

示例

1、银行账户信息:账户、姓名、余额

# 银行账户具有唯一性,不能重复,也不允许为空
create table t_25(account varchar(17) primary key,name varchar(20) not null,money decimal(16,2) not null default 0.00
)charset utf8;# 复合主键
create table t_26(account varchar(17),name varchar(20),money decimal(16,2) not null default 0.00,primary key(account,name)
)charset utf8;# 一般使用逻辑主键
create table t_27(id int unsigned primary key,account varchar(17) not null,name varchar(20) not null,money decimal(16,2) not null default 0.00
)charset utf8;

2、主键数据不允许重复

insert into t_27 values(1,'6226000000000001','Lily',default);# 错误:主键1已经存在
insert into t_27 values(1,'6226000000000002','Tom',default);# 联合主键就是联合字段加起来不重复即可
insert into t_26 values('6226000000000001','Tom',default);
insert into t_26 values('6226000000000002','Tom',default);

小结

1、主键的作用就是控制对应字段的数据具有唯一性(不能重复)

2、一张表只能有一个主键

3、虽然主键可以用来保证数据的唯一性,但是一般都是使用逻辑主键作为主键字段(保证唯一性还有其他方式,如唯一键)

4、通常也不怎么使用复合主键

5、主键管理

目标:了解主键的后期管理,主要是删除和新增

概念

主键管理:在创建表并且已经有数据后的维护

  • 删除主键
  • 追加主键
  • 修改主键(先删除后新增)

示例

1、删除主键:主键只有一个,所以删除语法也比较特殊

alter table t_26 drop primary key;

2、后期新增主键:如果是针对业务主键需要保证字段数据没有Null数据且没有数据重复(一般主键都会在表创建时维护好)

alter table t_26 add primary key(account,name);

小结

1、主键的使用通常是在创建表的时候就会指定好

2、主键的维护实际使用较少,主要涉及的操作是删除和新增

6、自增长属性

目标:了解自增长的概念,掌握自增长的应用和内置控制

概念

自增长:auto_increment,被修饰的字段在新增时,自动增长数据

  • 自增长只能是整数类型,而且对应的字段必须是一个索引(通常逻辑主键)
  • 一张表只能有一个自动增长
  • 自增长数据可以理解为一种默认值,如果主动给值,那么自动增长不会触发
  • 自增长由两个变量控制
    • 初始值:auto_increment_offset,默认是1
    • 步长:auto_increment_increment,默认值也是1
    • 查看自增长控制:show variables like 'auto_increment%';

步骤

1、确定数据类型为整型

2、确定数据需要有规则的变化

  • 从1开始
  • 每次增长1
  • 可以调整,但是通常有固定规则(一般不调整)

3、必须是一个索引字段(逻辑主键)

4、使用auto_increment

示例

1、记录学生信息:学号和姓名

# 学生信息:学号自动增长
create table t_28(id int primary key auto_increment,stu_no int(8) zerofill not null,stu_name varchar(20) not null
)charset utf8;

2、触发自增长

# 使用自增长(可以使用NULL或者default来触发)
insert into t_28 values(null,1,'Jim');
insert into t_28 values(default,2,'Tom');# 主动控制:自增长的值会从当前最大的值开始自动增长
insert into t_28 values(10,3,'Lily');
insert into t_28 values(null,4,'Lucy');

小结

1、自增长auto_increment一般是配合逻辑主键实现自动增长

  • 整型字段
  • 存在索引(主键)

2、自增长的触发是通过不给值(默认值)实现自动计算

3、自增长是根据当前表中自增长列最大值运算

4、一张表中只能有一个自增长

7、自增长管理

目标:了解自增长的系统维护以及一些特殊性

概念

自增长管理:在某些特殊使用下,需要自增长按照需求实现

  • 修改表中自增长的值:让下次自增长按照指定值开始

  • 修改自增长控制:调整自增长的变化

示例

1、修改表中自增长的值,跳过一些值,直接从下次开始按照新的目标值出现

alter table t_28 auto_increment = 50;

注意:奇数会保留原值,偶数会自动加1(可能出现的情况)

2、修改自增长控制:步长和起始值(修改针对的是整个数据库,而非单张表)

set auto_increment_increment = 2;	# 当前用户当前连接有效(局部)
set @@auto_increment_increment = 2;	# 所有用户一直有效(全局)

小结

1、自增长通常不会修改,如果有规则要求必须修改,通常也会在数据库运行前修改好

2、如果碰到要修改操作的,通常会选择全局修改而不是局部修改

8、唯一键

目标:了解唯一键的概念,掌握唯一键的应用

概念

唯一键:unique key,用来维护数据的唯一性

  • 一个表中可以有多个唯一键
  • 唯一键与主键的区别在于唯一键允许数据为Null(而且Null的数量不限)
  • 唯一键与主键一样,可以提升字段数据当做条件查询的效率(索引)
  • 复合唯一键:多个字段共同组成
    • unique key(字段1,字段2,…字段N)
    • 一般不会出现,最多2个字段组成

步骤

1、确定数据列具有唯一特性

2、确定数据列不用作为主键

3、确定数据会经常用于检索条件

4、唯一键字段是否允许数据为空

  • 为空:普通唯一键
  • 不为空:not null(唯一键与主键效果一样)

5、使用唯一键

示例

1、用户表:用户名唯一,而且经常作为查询条件

create table t_29(id int primary key auto_increment,username varchar(50) unique comment '唯一键,可以直接在字段之后增加,使用unique关键字',password char(32) not null
)charset utf8;insert into t_29 values(null,'username','password');
insert into t_29 values(null,Null,'password');
insert into t_29 values(null,Null,'password');# 错误
insert into t_29 values(null,'username','password1');

2、学生成绩表:一个学生只能有一个学科成绩,但是可以有多个学科

# 学号和学科编号共同组成唯一
create table t_30(id int primary key auto_increment,stu_name varchar(20) not null,course varchar(20) not null,score decimal(5,2),unique key(stu_name,course)
)charset utf8;insert into t_30 values(null,'Jim','Math',50);
insert into t_30 values(null,'Jim','English',80);

小结

1、唯一键的目标是保证对应字段数据的唯一性

  • 唯一键不限定数据是否为Null(Null不参与唯一判定)
  • 复合唯一键:允许多个字段共同组成唯一性

2、唯一键能够弥补主键只有一个的特性(不限定数据量)

3、唯一键使用的位置应该要确保该字段数据会用作数据检索条件

9、唯一键管理

目标:掌握唯一键的后续管理

概念

唯一键管理:在表创建后对唯一键的管理

  • 删除唯一键:一张表中不止一个唯一键,所以删除方式是相对麻烦:alter table 表名 drop index 唯一键名字;
  • 新增唯一键:alter table 表名 add unique key(字段列表);

示例

1、删除表中已有的唯一键

alter table t_30 drop index `stu_name`;

2、追加唯一键

alter table t_30 add unique key `stu_course` (stu_name,course);
  • 追加唯一键要保证字段里的数据具有唯一性

小结

1、唯一键一般也会在前期架构(创建表)时就会设置好

2、如果在后期数据庞大后进行数据库优化,可能会涉及到后期维护唯一键

3、唯一键的删除不能像主键那样删除,原因就是唯一键在表中不是唯一存在的,必须指定唯一键名字

10、comment属性

目标:了解comment的概念和作用

概念

描述:comment,是用文字描述字段的作用的

  • comment代表的内容是对字段的描述
    • 方便以后自己了解字段的作用
    • 方便团队了解字段的作用
  • 描述如果涉及到字符集(中文)一定要在创建表之前设置好客户端字符集(否则会出现描述乱码)

步骤

1、字段命名不是特别简单(见名知意)

2、使用comment增加简易描述

示例

学生成绩表

# 学生成绩表中通常是存储学生学号
# 学科通常也是学科代码
create table t_31(id int primary key auto_increment,stu_no varchar(10) not null comment '学号',course_no varchar(10) not null comment '课程号',score decimal(5,2) comment '考试成绩',unique key `stu_course` (stu_no,course_no) comment '学号和课程号组成唯一键'
)charset utf8;
  • 如果要查看描述信息,需要使用show create table查看

小结

1、养成描述的良好习惯,为自己也为其他同事提供方便

2、并非所有字段都需要描述,但是对于自定义名字或者关联关系,都应该使用描述说清楚

11、总结

1、字段属性是基于字段类型对数据控制后,再进行其他控制(辅助加强字段类型对数据的控制)

2、巧妙的利用好字段属性,能够帮助我们更好的保证数据的有效性、安全性

3、字段属性与字段类型通常是搭配使用,常见的属性有

  • 主键(逻辑)+自增长
  • 唯一键+Not Null(Null数据不参与运算,没有价值)
  • 默认值以及default关键字的使用

三、数据库记录长度

目标:了解MySQL中数据库记录长度的概念,理解数据库字段设计时要控制字段的长度和不要超过数据库记录长度

概念

数据库记录长度:MySQL中规定一条记录所占用的存储长度最长不超过65535个字节

  • 记录长度为表中所有字段预计占用的长度之和
  • 所有字段只有允许Null存在,系统就会预留一个字节存储Null(多个Null也只要一个就好)
  • 因为MySQL记录长度的存在,varchar永远达不到理论长度
    • GBK存储:65535(字符) * 2 + 2 = 131072(字节)
    • UTF8存储:65535(字符) * 3 + 2 = 196607(字节)
  • 一般数据长度超过255个字符都会使用text/blob进行存储(数据存储不占用记录长度)

步骤

1、字符串字段如果超过长度255字符,使用text/blob替代

2、所有字段是否有允许为Null的,如果有要占用1个字节

3、计算字段所占用的预计总长度不要超过65535个字节

示例

1、GBK表能存储的最大varchar字符串长度

create table t_32(content varchar(65535)
)charset gbk;	# 错误create table t_32(content varchar(32767)
)charset gbk;	# 错误create table t_32(content varchar(32766)
)charset gbk;	

2、UTF8表能存储的最大varchar字符串长度

create table t_33(content varchar(65535)
)charset utf8;	# 错误create table t_33(content varchar(21844)
)charset utf8;

3、Null也要占用一个字节

create table t_34(id tinyint,content varchar(21844)
)charset utf8;	# 错误create table t_34(id tinyint not null,content varchar(21844) not null
)charset utf8;

小结

1、MySQL的记录长度是从设定表的时候就会检查所有字段加起来的预占用长度是否超过65535个字节

  • 超过:创建失败
  • 不超过:创建成功

2、创建表字段的时候要使用text/blob来避免长字符串出现,超过MySQL记录长度

3、Null是个细节,一条记录只要允许出现Null就会占用记录长度里的一个字节

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. ESI Group帮助管理工作场所新冠肺炎感染风险

    巴黎--(美国商业资讯)--虚拟样机软件和工业服务领域全球参与者ESI Group (Paris:ESI)依靠其在仿真领域的历史背景及其工程师的才干,将在当前的后新冠肺炎(COVID-19)环境下,帮助管理和预防交叉污染风险以及办公室感染扩散。ESI Group在美国、亚洲和欧洲的专家已与包括美国太平…...

    2024/4/8 23:19:21
  2. 【Java】Java学习(六)—— 面向对象思想

    上一篇: Java学习(五)—— 方法和数组第十五部分 面向对象思想 15.1 面向对象思想概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种…...

    2024/5/5 19:59:15
  3. BuleHero 蠕虫分析

    文章目录前言执行过程详细分析火绒剑分析IDA关键词分析Wireshark抓包漏洞利用CVE-2017-12615 漏洞利用CVE-2017-5638 漏洞利用CVE-2018-2628 漏洞利用CNVD-2018-24942 漏洞利用CVE-2019-2725 漏洞利用CVE-2018-7600 漏洞利用CVE-2019-0193 漏洞利用PHPStudy后门总结 前言 原先也…...

    2024/4/15 0:19:38
  4. 优化器

    优化器 优化器学习路线: GD(包括SGD、BGD、MBGD) →\rightarrow→ GDM→\rightarrow→ NAGD →...

    2024/5/4 6:09:47
  5. 4.流程控制

    流程控制 用户交互Scanner 基本语法创建对象//添加一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般使用hasNext()和hasNextLine()判断是否还有输入的数据//判断用户有没有输…...

    2024/5/5 17:20:40
  6. 浅谈LIMS实验室系统管理平台的特性

    LIMS实验室系统管理平台是实验室提高分析水平、规范样品检测过程和降低实验成本, 为客户提供优秀服务的信息平台。不同的实验室因为类型、服务对象、管理方式和质量体系的不同而造成业务流程都有着各自的特点,而就LIMS来说,它有其自身具备的特性。1.安全性 系统的安全性是应用…...

    2024/4/12 12:54:14
  7. MPL-GAN:Toward Realistic Meteorological predictive learning Using Conditional GAN论文解读

    MPL-GAN:Toward Realistic Meteorological predictive learning Using Conditional GAN 作者:HONG-BIN LIU and ICKJAI LEE College of Science and Engineering, James Cook University, Cairns, QLD 4870, Australia 下载地址. Abstract 气象图像预报是气象预报中一个重要而…...

    2024/5/5 18:20:40
  8. MPL-GAN:Toward Realistic Meteorological predictive learning Using Conditional GAN论文解读

    MPL-GAN:Toward Realistic Meteorological predictive learning Using Conditional GAN 作者:HONG-BIN LIU and ICKJAI LEE College of Science and Engineering, James Cook University, Cairns, QLD 4870, Australia 下载地址. Abstract 气象图像预报是气象预报中一个重要而…...

    2024/5/5 19:24:13
  9. 从IT建设模式变化看客户中心发展

    客服系统作为企业IT系统的一部分,基本上是跟随IT系统的建设模式变化而发展,但基本会滞后一段时间。通过对比分析IT建设模式的变化,可能对客服系统的发展趋势带来启发。一、关于建设模式的分析IT系统建设模式的变化,实际上是IT轻资产化的过程,经历了几个阶段:建设模式IT系…...

    2024/4/8 23:19:13
  10. 中国各朝代灭亡原因

    中国各朝代灭亡原因中国(夏、商、周、秦、汉、魏晋、南北朝、隋、唐、五代、宋、元、明、清)各朝代灭亡的原因总结夏王朝商王朝周王朝秦王朝汉王朝魏晋朝晋朝南北朝隋王朝唐王朝五代十国宋王朝元王朝明王朝清王朝《中国历代王朝兴亡四字歌》参考文献 中国(夏、商、周、秦、汉…...

    2024/4/8 22:53:46
  11. OPC UA的进阶——定义数据技术的新平台

    前言 现如今,OPC UA已经在逐渐替代旧的经典OPC通信方式,并且在智能制造中扮演着关键角色,任何行业的大型制造工厂车间,都在想方设法的将OPC UA集成到工厂生产体系中,以提升工厂的智能化水平,这样做的好处是不仅可以提升生产的效率,也可以节约维护管理的成本。而OPC UA本…...

    2024/4/8 22:53:47
  12. 知瓜数据|称霸直播带货商品周榜,麻辣小龙虾因何制胜

    近年来各类速食商品层出不穷,风靡各类电商平台。而近几年几乎全国流行的小龙虾,也是在线下打开知名度之后,乘着这股风,在各大电商平台的速食领域占据一定地位。基本只需要解冻加热或打开包装就能享用的小龙虾,非常适合不方便煮饭的人群。在种类丰富多样的速食市场中,一款…...

    2024/4/8 22:53:44
  13. 跟我一起学JAVAEE吧——JAVA_SE篇——day05上课笔记(类与对象,封装)

    day 05 类与对象什么是面向对象:洗衣服:面向过程:把衣服脱下来 -> 找一个盆 -> 放洗衣粉 -> 加点水 -> 浸泡几分钟 -> 搓洗 -> 清洗衣服 -> 拧干 -> 晾起来 面向对象:把衣服脱下来 -> 打开全自动洗衣机 -> 扔进去 -> 按按钮 -> 拿出来…...

    2024/4/19 8:08:10
  14. Jetpack DataBinding数据绑定

    Jetpack DataBinding数据绑定 简介 DataBinding是Google提供的将视图和数据绑定的支持库,主要是为了简化代码,去除findViewById() 等样式代码的调用,借助布局文件中的绑定组件,您可以移除 Activity 中的许多界面框架调用,使其维护起来更简单、方便。还可以提高应用性能,并…...

    2024/4/30 8:05:44
  15. Java学习篇16_final、权限、内部类、引用类型

    上一篇博客:接口、多态目录final关键字 权限 内部类 引用类型 发红包案例【界面版】开始一、final关键字概述学习了继承后,我们可以在父类的基础上改写父类的内容,如,方法重写 但是我们不能随意的继承修改API提供的类,final关键字用于修饰不可更改的内容:final:不可改变…...

    2024/4/8 23:19:11
  16. vnc远程工具的使用 vnc远程工具的使用快速教程

    不知道大家对vnc远程工具的使用有哪些心得, vnc远程工具的使用如何实现快速上手呢?看到我这篇文章的朋友有福了,接下来我来对vnc远程工具的使用做个简单介绍。我所使用的呢,是IIS7服务器管理工具。作为IIS7服务器管理工具,它可以批量对vnc站点进行管理,方便快捷。除此之外…...

    2024/4/8 23:19:11
  17. AttributeError: module ‘camelot‘ has no attribute ‘read_pdf‘ 解决 cv2无法下载安装解决办法

    出现的问题:import camelotfile = 太钢不锈2019report.pdf table = camelot.read_pdf(file,flavor=stream) table[0].df.to_html(temp.html)output error: --------------------------------------------------------------------------- AttributeError …...

    2024/4/8 23:19:09
  18. 世界最顶级邮件服务器组合Linux +PowerMTA 安装

    世界最顶级邮件服务器组合Linux + PMTA 安装 PowerMTA是世界顶级的邮件服务器,PowerMTA5.0是PowerMTA的最新版本,具有更优的性能,据说每天单台服务器可投递几十上百万级邮件,这里我用了IPV6和IPV4组合配置,下面介绍安装步骤 事前准备 1、注册域名和购买VPS服务器,配置越高…...

    2024/4/26 22:52:41
  19. ftp客户端软件,ftp客户端软件在Windows端有哪些值得使用?3款推荐

    对于ftp客户端软件,你了解多少?其实一般人也接触不到这种软件。ftp客户端软件主要是针对从事网站管理的工作人员比较有利的一款工具。可以帮助他们快速的解决工作中的问题。方便、简单、快捷又明了的解决问题,小编整理了三款站长们都爱的ftp客户端软件。 第一款:IIS7服务器…...

    2024/4/19 4:49:40
  20. 用URLOS一键部署beego框架

    最近看到很多小伙伴都在问,beego框架怎么安装?beego框架安装步骤是什么?今天没,我来介绍一下beego框架在linux下的安装教程。 我将采用最简单的安装方法,通过URLOS的一键安装命令来快速安装beego框架。URLOS是什么,在这里就不多做介绍了,感兴趣的可以百度URLOS官网了解一…...

    2024/4/23 2:07:17

最新文章

  1. GitHacker:Git源码泄漏检测工具可恢复整个Git Repo

    GitHacker是一个多线程工具,用于检测站点是否存在git源码泄漏,并能够将网站源代码下载到本地。值得一提的是,这个工具会将整个git repo恢复到本地,而不是像[githack]那样,只是简单的恢复到最新版本。如此一来&#xff…...

    2024/5/5 20:23:54
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 北航2023年考研机试题

    【问题描述】一共6个手机基站,具有记录手机连接基站的能力,6个手机基站分别为ABCDEF,他们具有自己的覆盖范围且任何两个基站的覆盖范围不想交,基站保存的手机登陆日志包括手机号(11位,用字符串保存&#xf…...

    2024/5/5 8:38:20
  4. 【虚幻引擎】C++ slate全流程开发教程

    本套课程介绍了使用我们的虚幻C去开发我们的编辑器,扩展我们的编辑器,设置我们自定义样式,Slate架构设计,自定义我们的编辑器样式,从基础的Slate控件到我们的布局,一步步的讲解我们的的Slate基础知识&#…...

    2024/5/5 8:46:07
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/5 18:19:03
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/5 12:22:20
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...

    2024/5/5 19:59:54
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...

    2024/5/4 23:54:44
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...

    2024/5/5 15:25:47
  10. 【Objective-C】Objective-C汇总

    方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/4 23:54:49
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...

    2024/5/4 23:54:44
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/4 14:46:12
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...

    2024/5/5 18:50:00
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/4 14:46:11
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/5 2:25:33
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/4 21:24:42
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/5 13:14:22
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...

    2024/5/4 13:16:06
  19. --max-old-space-size=8192报错

    vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...

    2024/5/5 17:03:52
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...

    2024/5/4 14:46:05
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...

    2024/5/5 3:37:58
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...

    2024/5/4 23:54:30
  23. python django 小程序图书借阅源码

    开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图&#xff0…...

    2024/5/5 17:03:21
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/5 15:25:31
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57