数据类型

1、数值型数据类型

整数类型:宽度表示显示的位数,可以使用约束条件unsigned(默认为有符号的), zerofill(指定宽度时,不足的部分补0)。当宽度小于实际的位数时,按照实际的位数显示。

例如:

mysql> create table t10(id int(8) unsigned zerofill);
Query OK, 0 rows affected, 2 warnings (0.40 sec)
mysql> desc t10;
+-------+--------------------------+------+-----+---------+-------+
| Field | Type                     | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+-------+
| id    | int(8) unsigned zerofill | YES  |     | NULL    |       |
+-------+--------------------------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> create table t10(id int(8) unsigned zerofill);
Query OK, 0 rows affected, 2 warnings (0.61 sec)

mysql> insert into t10 values(1234);
Query OK, 1 row affected (0.32 sec)

mysql> select * from t10;
+----------+
| id       |
+----------+
| 00001234 |
+----------+
1 row in set (0.00 sec)

mysql>

浮点数:宽度可以用(M,N)的形式,M表示显示的数值位数,N表示显示小数点后的位数。

例如:

mysql> create table t11(weight double(8,3));
Query OK, 0 rows affected, 1 warning (0.36 sec)

mysql> desc t11;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| weight | double(8,3) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> insert into t11 values(12.3345);
Query OK, 1 row affected (0.32 sec)

mysql> select * from t11;
+--------+
| weight |
+--------+
| 12.335 |
+--------+
1 row in set (0.00 sec)

mysql> alter table t11 modify weight double(8,3) zerofill;
Query OK, 1 row affected, 2 warnings (2.02 sec)
Records: 1  Duplicates: 0  Warnings: 2

mysql> select * from t11;
+----------+
| weight   |
+----------+
| 0012.335 |
+----------+
1 row in set (0.00 sec)

mysql>

 

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 byte

(-128,127)

(0,255)

小整数值

SMALLINT

2 bytes

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3 bytes

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT或INTEGER

4 bytes

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8 bytes

(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

FLOAT

4 bytes

(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度浮点数值,M,D,M表示数字总个数,最大为255,D表示小数点后个数,最大30。

DOUBLE

8 bytes

(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度浮点数值,M,D,M表示数字总个数,最大为255,D表示小数点后个数,最大30。

DECIMAL

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

依赖于M和D的值

依赖于M和D的值

准确的小数值,m 65,d 30,内部用字符串存储。M默认为10, N默认为0。

 

2、日期类型

日期类型可以用now()函数自动转换为定义的日志类型(data,time,year等类型都可以使用now函数),或者直接赋值相同格式的字符串。

例如:

mysql> create table t1(id int, time date);
Query OK, 0 rows affected (1.06 sec)

mysql> desc t1;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| id    | int  | YES  |     | NULL    |       |
| time  | date | YES  |     | NULL    |       |
+-------+------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into t1 values(1,now());
Query OK, 1 row affected, 1 warning (0.37 sec)

mysql> insert into t1 values(2, '2018-5-12');
Query OK, 1 row affected (0.32 sec)

mysql> select * from t1;
+------+------------+
| id   | time       |
+------+------------+
|    1 | 2021-03-20 |
|    2 | 2018-05-12 |
+------+------------+
2 rows in set (0.00 sec)

mysql>

 

 

DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP4

1970-01-01 00:00:00/2038

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYYMMDD HHMMSS混合日期和时间值,时间戳

    常用时间函数

3、字符类型

注意点:

    1、SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH'; # 必须修改模式,使其查看定长字符类型时不会将填充空格移除。

    2、char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

    3、关注两个函数length():查看字节数; char_length():查看字符数。

    4、upper()小写转大写,lower()大写转小写,示例:
        

mysql> select upper("mysql"),lower("MYSQL");
+----------------+----------------+
| upper("mysql") | lower("MYSQL") |
+----------------+----------------+
| MYSQL          | mysql          |
+----------------+----------------+
1 row in set (0.29 sec)

mysql>
类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串(指定的宽度为最大宽度,使用时必须指定最大宽度)
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

 

4、枚举类型与集合类型

枚举:enum

集合:set

示例:

mysql> create table t4(id int, sex enum('male', 'femle'), hobbis set('music', 'learn', 'say'));
Query OK, 0 rows affected (0.89 sec)

mysql> desc t4;
+--------+----------------------------+------+-----+---------+-------+
| Field  | Type                       | Null | Key | Default | Extra |
+--------+----------------------------+------+-----+---------+-------+
| id     | int                        | YES  |     | NULL    |       |
| sex    | enum('male','femle')       | YES  |     | NULL    |       |
| hobbis | set('music','learn','say') | YES  |     | NULL    |       |
+--------+----------------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into t4 values(1, 'male', 'music,say');
Query OK, 1 row affected (0.35 sec)

mysql> select * from t4;
+------+------+-----------+
| id   | sex  | hobbis    |
+------+------+-----------+
|    1 | male | music,say |
+------+------+-----------+
1 row in set (0.00 sec)

mysql>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值