ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql字段类型

2022-01-29 19:03:42  阅读:145  来源: 互联网

标签:11 insert mysql 30 字段 time Mysql 类型 id


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 |
    +------+-------+------+------------+

标签:11,insert,mysql,30,字段,time,Mysql,类型,id
来源: https://www.cnblogs.com/Linshuai0708/p/15855607.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有