Bootstrap

MySQl数据库的常用数据类型(列类型)

 数据类型可分为数值类型,日期类型,文本与二进制类型。

数值类型的基本使用:

使用规范:在满足自己的需求的情况下,尽量选择占用空间小的数据类型

数值类型
类型字节最小值最大值

带符号的/无符号的带符号的/无符号的
TINYINT1(2的八次方)-128127
0255
SMALLINT2(2的16次方)-3276832767
065535
MEDIUMINT3(2的24次方)-83886088388607
016777215
INT4(2的32次方)-21474836482147483647
0
BIGINT8(2的64次方)-9922337203685477580899223372036854775807
0

演示创建一个数值类型的表

引擎规则utf8_bin 是区分大小写的 utf8_general_ci 是不区分大小写的。
# 创建一个TINYINT的数值类型的num,指定字符集,校验规则,以及存储引擎。
CREATE TABLE t5(num TINYINT UNSIGNED) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;
# 创建一个TINYINT的数值类型的num,无符号的
CREATE TABLE t6(num TINYINT);

# 往t5中插入的无符号的数范围是0~255
INSERT INTO t5 VALUES (255);

# 往t6中插入的有符号的数的范围是-128~127
INSERT INTO t6 VALUES (127);

# 注意的是其他范围的数据如果超出就存不进去。

SELECT* FROM t5; # 查询语句

SELECT* FROM t6;
COLLATE中utf8_bin与utf8_general_ci校验规则的区别。

utf8_bin:区分大小写可以在创建数据库和表的时候指定,如果创建表的时候未指定,默认情况下是utf8_general_ci。

utf8_general_ci:不区分大小写,默认情况下的校验规则。

小数数值类型Float,double,decimal(m,d)

# 关于小数数值类型的举例
CREATE TABLE t7(num1 FLOAT , num2 DOUBLE, num3 DECIMAL(30,20));

INSERT INTO t7 VALUES (65.987546135487,85.8441548764487,99.87878484551648484848);

SELECT*FROM t7;

运行结果:

从运行结果我们可以看出如果你想用选用精度更高的数值类型就选用decimal。

数值类型BIT
#演示 bit 类型使用
#说明
#1. bit(m) m 在 1-64
#2. 添加数据 范围 按照你给的位数来确定,比如 m = 8 表示一个字节 0~255
#3. 显示按照 bit
#4. 查询时,仍然可以按照数来查询
CREATE TABLE t05 (num BIT(8));
INSERT INTO t05 VALUES (255);
SELECT * FROM t05;
SELECT * FROM t05 WHERE num = 

运行结果就是按照位来显示的,如果你想要存放的数据只有0或者1那么可以用BIT用于节约数据库的存储空间。

字符串的基本使用char和varchar(二进制,文本类型)

char:是0到255字符,是固定长度的字符串,意思就是所占用的存储空间是定长。

varchar:是0到65535的字节,不是固定长度,随着你存入的数据的大小而改变存储空间的大小。

注意:

varchar的字节是0到65535,在数据库中如果编码集是utf8,就是三个字节为一个字符,GBK是2个字节为一个字符。且数据库本来会用1~3个字节来存储数据的长度。比如:

UTF8:  字符数=(65535-3)/ 3  = 21844

GBK :  字符数=(65535-3)/ 2  = 32766

字符串的使用细节上:

1. char(4):指的是占用四个字符的定长无论是英文的aa还是中文的你好都算两个字符,并且所占的空间大小也是4个字符的空间

2.varchar(4):指的存放的英文的aa和中文的你好也是占用两个字符,实际占用空间并不是四个字符,而是两个字符,是按照实际的占用内存来分配的。本身varchar还会占用1-3个字节来存放数据的大小。

3.当我们使用的密码,邮箱,电话可以用我们的char因为速度:char > varchar更加便于我们的查询。

4.在存放文本的时候也可以使用TEXT的数据类型,注意的是TEXT不能有默认值,大小是在0-2^16

MEDIUMTEXT大小是在0-2^24,LONGTEXT大小是在0-2^32。

文本类型TEXT ,MEDIUMTEXT, LONGTEXT

TEXT:2^16 两个字节

MEDIUMTEXT:2"24 四个字节

LONGTEXT:2*32 八个字节

举例使用:

# 创建t9表,用反引号``可以规避关键字
# varchar也可以等价的用text来使用,但是大小不一样,varchar最大是两个字节65535,text一样也会有1-3个字节来记录数据的大小
CREATE TABLE t9(`text1` TEXT,`text2` MEDIUMTEXT,`text3` LONGTEXT);
INSERT INTO t9 VALUES ('你好同学', '你好呀同学', '你真的太好了同学');
SELECT *FROM t9;

结果:

日期类型的基本使用

DATE,     DATETIME,    TIMESTAMP

DATE:可以记录年月日

DATETIME:可以记录年月日,时分秒

TIMESTAMP:记录当前的时间可以。TIMESTAMP  NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE TIMESTAMP 可以进行一个自动的更新

举例:

CREATE TABLE t8(
birthday DATE, # 可以记录年月日
job_time DATETIME, # 可以记录年月日,时分秒
login_time TIMESTAMP NOT NULL 
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); # 记录时间,可以进行自动更新

INSERT INTO t8(birthday,job_time) VALUES ('2022-7-9','2022-2-2 18:20:30');
-- 当你更新t8表中的信息的时候,login_time又会自动更新
INSERT INTO t8(birthday,job_time) VALUES ('2023-8-9','2022-11-2 12:20:30');
SELECT*FROM t8;

结果:

;