Mysql字段类型

1.整型
表示整数,通常id设置成整型 int
存储范围(-2147483648,2147483647)
强调(整型后面的宽度限制根本不是存储宽度,限制的是显示宽度)
例子,这里我们通过四条代码来证明一下:

1.create table t1(id int(1));
insert into t1 values (111111);
通过查询语句可知:

mysql> select * from t1;
+--------+
| id     |
+--------+
| 111111 |
+--------+

2.create table t2(id int(10));
insert into t2 values (111111)
通过查询语句可知:

mysql> select * from t2;
+--------+
| id     |
+--------+
| 111111 |
+--------+

通过加约束可以知道其真实的显示情况:

3.create table t3(id int zerofill);
insert into t3 values (1);

通过查询语句可知:

mysql> select * from t3;
+------------+
| id         |
+------------+
| 0000000001 |
+------------+

4.create table t4(id int(5) zerofill);
insert into t4 values (1);

通过查询可知:

mysql> select * from t4;
+-------+
| id    |
+-------+
| 00001 |
+-------+

所以说创建整型后面不需加宽度

2.浮点型(小数)
浮点型分为单精度,双精度,以及准确精度。
数字个数最大值为255,小数最大值为30
单精度:
float(255,30)
双精度:
double(255,30)
准确精度(小数是最精确的)
decimal(60,30)
数字的个数最大值是65,小数最大值为30

下面我们创建3个表来展示下各个精度:

create table t5(x float(255,30));
create table t6(x double(255,30));
create table t7(x decimai(60,30));

insert into t5 values(1.1111111111111111111111111111111111111111111111);
通过查询可知:

mysql> select * from t5;
+----------------------------------+
| x                                |
+----------------------------------+
| 1.111111164093017600000000000000 |
+----------------------------------+

insert into t6 values(1.1111111111111111111111111111111111111111111111);
通过查询可知:

mysql> select * from t6;
+----------------------------------+
| x                                |
+----------------------------------+
| 1.111111111111111200000000000000 |
+----------------------------------+

insert into t7 values(1.1111111111111111111111111111111111111111111111);
通过查询可知:

mysql> select * from t7;
+----------------------------------+
| x                                |
+----------------------------------+
| 1.111111111111111111111111111111 |
+----------------------------------+

3.日期类型:
year 1999
data 1999-11-11
time 08:30:00
datetime/timestamp 1999-11-11 08:30:00

我们来创建一个表演示下

create table t8(
    id int,
    name varchar(16),
    a_year year,
    b_date date,
    c_time time,
    reg_time datetime
);

3.1插入当前时间:
insert into t8 values (1,'dahai,now(),now(),now(,)now());

通过查询可知:

mysql> select * from t8;
+------+-------+--------+------------+------------+---------------------+
| id   | name  | a_year | b_date     | class_time | reg_time            |
+------+-------+--------+------------+------------+---------------------+
|    1 | dahai |   2022 | 2022-01-23 | 12:57:32   | 2022-01-23 12:57:32 |
+------+-------+--------+------------+------------+---------------------+

3.2自定义数字时间
insert into t8 values (1,'dahai',2000,20001111,083000,20001111083000);

通过查询可知:

mysql> select *from t8;
+------+-------+--------+------------+------------+---------------------+
| id   | name  | a_year | b_date     | class_time | reg_time            |
+------+-------+--------+------------+------------+---------------------+
|    1 | dahai |   2000 | 2000-11-11 | 08:30:00   | 2000-11-11 08:30:00 |
+------+-------+--------+------------+------------+---------------------+

3.3自定义字符串时间:
insert into t8 values (1,'dahai','1999','2000-11-11','08:30:00','2000-11-11 08:30:00');

通过查询可知:

mysql> select *from student;
+------+-------+--------+------------+------------+---------------------+
| id   | name  | a_year | b_date     | class_time | reg_time            |
+------+-------+--------+------------+------------+---------------------+
|    1 | dahai |   1999 | 2000-11-11 | 08:30:00   | 2000-11-11 08:30:30 |
+------+-------+--------+------------+------------+---------------------+

datetime/timestamp
在实际应用的很多场景中,MySQL的这两种日期类型都能够满足我们的需要,存储精度都为秒,
但在某些情况下,会展现出他们各自的优劣。下面就来总结一下两种日期类型的区别。
1.DATETIME的日期范围是1001——9999年,TIMESTAMP的时间范围是1970——2038年。

2.DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。因此,TIMESTAMP比DATETIME的空间利用率更高。

3.DATETIME的默认值为null;TIMESTAMP的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP)。(8.0版本以后需要写约束)

例:
create table time(x timestamp defult current_timestamp)
insert into time vluses();

通过查询可知:

mysql> select *from time;
+---------------------+
| x                   |
+---------------------+
| 2022-01-23 13:13:20 |
+---------------------+

4.字符类型
char:定长

    char(5)

varchar: 变长

    varchar(5)

注意:这里宽度指限制字符的个数

相同点:宽度指的都是最大存储的字符个数,超过了都无法正常存储

不同点
    char(5)
         'm'---》'm     ' 5个字符
    varchar(5)
         'm'----> 'm'   1个字符 (还有一个bytes是描述数据的)

char(5)

dahai|aa |xxx |f |

varchar(5)

1个bytes+dahai|1个bytes+aa|1个bytes+xxx|1个bytes+f|

varchar(5)大部分用它 ,大部分情况下存储的数据都是小于约束的宽度

5.这里多加两个知识点 枚举(enum)和集合(set)

enum枚举是多选一,像python布尔类型,

set集合是多选一或多

例:

create table student_table( id int, name,varchar(20), sex enum('man','woman'), hobbies set('read','play','music') );

插入数据

insert into student_table values(1,,'dahai','man','reay,music');

通过查询可知:

    mysql> select *from student;
    +------+-------+------+------------+
    | id   | name  | sex  | hobbies    |
    +------+-------+------+------------+
    |    1 | dahai | man  | read,music |
    +------+-------+------+------------+
上一篇:30马力以下离心水泵的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告


下一篇:dfs进化史