7.1 数据类型介绍

  1. 数值型:
  2. 整型
  3. 小数:
  4. 定点数
  5. 浮点数
  6. 字符型:
  7. 较短的文本:charvarchar
  8. 较长的文本:textblob
  9. 日期型:

7.2 整型

整型类型 字节
tinyint: 1
smallint: 2
mediumint: 3
int: 4
bigint: 8

1)如何设置无符号和有符号

  1. mysql> create table t_int(t1 int,t2 int unsigned);
  2. Query OK, 0 rows affected (0.00 sec)
  3. mysql> desc t_int;
  4. +-------+------------------+------+-----+---------+-------+
  5. | Field | Type | Null | Key | Default | Extra |
  6. +-------+------------------+------+-----+---------+-------+
  7. | t1 | int(11) | YES | | NULL | |
  8. | t2 | int(10) unsigned | YES | | NULL | |
  9. +-------+------------------+------+-----+---------+-------+
  10. 2 rows in set (0.00 sec)
  11. mysql> insert into t_int values(-11,-22);
  12. ERROR 1264 (22003): Out of range value for column 't2' at row 1
  13. mysql> insert into t_int values(-11,22);
  14. Query OK, 1 row affected (0.00 sec)

特点:
1)如果不设置无符号还是有符号,默认是有符号,如果想设置无符号, 需要添加关键字unsigned关键字
2)如果插入的数值超出了整型的范围,会报out of range 异常,并且插入临界值
3)如果不设置长度,会有默认的长度:长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用

  1. mysql> create table t_int (t1 int(7) zerofill);
  2. Query OK, 0 rows affected (0.00 sec)
  3. mysql> desc t_int;
  4. +-------+--------------------------+------+-----+---------+-------+
  5. | Field | Type | Null | Key | Default | Extra |
  6. +-------+--------------------------+------+-----+---------+-------+
  7. | t1 | int(7) unsigned zerofill | YES | | NULL | |
  8. +-------+--------------------------+------+-----+---------+-------+
  9. 1 row in set (0.00 sec)
  10. mysql> insert into t_int values(11);
  11. Query OK, 1 row affected (0.00 sec)
  12. mysql> select * from t_int;
  13. +---------+
  14. | t1 |
  15. +---------+
  16. | 0000011 |
  17. +---------+
  18. 1 row in set (0.00 sec)

7.3小数

  1. 分类:
  2. 1.浮点型
  3. float(M,D)
  4. double(M,D)
  5. 2.定点型
  6. dec(M,D)
  7. decimal(M,D)
  8. 特点:
  9. 1M,D可以省略
  10. 2M:整数+小数部位,D:小数部位
  11. 3)建表时未指定数据精度,floatdouble会根据插入的数据
  12. 4)定点型数据的精度比较高

案例

  1. mysql> create table tab_float(f1 float(5,2),f2 double(5,2),f3 decimal(5,2));
  2. Query OK, 0 rows affected (0.05 sec)
  3. mysql> insert into tab_float values(123.45,123.45,123.45);
  4. Query OK, 1 row affected (0.02 sec)
  5. mysql> select * from tab_float;
  6. +--------+--------+--------+
  7. | f1 | f2 | f3 |
  8. +--------+--------+--------+
  9. | 123.45 | 123.45 | 123.45 |
  10. +--------+--------+--------+
  11. 1 row in set (0.01 sec)
  12. #D表示只保存小数点后2位
  13. mysql> select * from tab_float;
  14. +--------+--------+--------+
  15. | f1 | f2 | f3 |
  16. +--------+--------+--------+
  17. | 123.45 | 123.45 | 123.45 |
  18. | 123.46 | 123.46 | 123.46 |
  19. +--------+--------+--------+
  20. 2 rows in set (0.00 sec)
  21. mysql> insert into tab_float values(123.4,123.4,123.4);
  22. Query OK, 1 row affected (0.23 sec)
  23. mysql> select * from tab_float;
  24. +--------+--------+--------+
  25. | f1 | f2 | f3 |
  26. +--------+--------+--------+
  27. | 123.40 | 123.40 | 123.40 |
  28. +--------+--------+--------+
  29. 4 rows in set (0.00 sec)
  30. #提示超出范围
  31. mysql> insert into tab_float values(12345.4,12345.4,12345.4);
  32. ERROR 1264 (22003): Out of range value for column 'f1' at row 1
  33. mysql> create table tab_float(f1 float,f2 double,f3 decimal);
  34. Query OK, 0 rows affected (0.09 sec)
  35. mysql> insert into tab_float values(123.45,123.45,123.45);
  36. Query OK, 1 row affected, 1 warning (0.00 sec)
  37. mysql> select * from tab_float;
  38. +--------+--------+------+
  39. | f1 | f2 | f3 |
  40. +--------+--------+------+
  41. | 123.45 | 123.45 | 123 |
  42. +--------+--------+------+
  43. 1 row in set (0.00 sec)
  44. mysql> desc tab_float;
  45. +-------+---------------+------+-----+---------+-------+
  46. | Field | Type | Null | Key | Default | Extra |
  47. +-------+---------------+------+-----+---------+-------+
  48. | f1 | float | YES | | NULL | |
  49. | f2 | double | YES | | NULL | |
  50. | f3 | decimal(10,0) | YES | | NULL | |
  51. +-------+---------------+------+-----+---------+-------+
  52. 3 rows in set (0.00 sec)

7.4 字符类型

  1. 较短的文本
  2. char(M):固定长度的字符
  3. varchar(M):可变长度的字符

7.5 日期

  1. datetime :日期+时间
  2. timestamp:日期+时间
  3. 字节 范围 时区等的影响
  4. datetime 8 1000-9999 不受
  5. timestamp 4 1970-2038