mysql笔记-- mysql命令札记7 数据类型

来源:互联网 发布:软件关键技术怎么写 编辑:程序博客网 时间:2024/06/06 08:53

Mysql 的数据类型

在使用数据库中,需要尽可能的减小数据的类型,因此合理的选用数据定义的类型是很重要的,数据的类型就决定了数据库的大小;

NOTE: 在mysql 中,字段名称是部分大小写的。但是数据库名称和数据表名称是区分大小写的;

7.1 数字 类型

数字类型分为 整型和浮点型两大类,此处不再赘述;

NOTE: 所有的数字类型允许两个选项 UNSIGNED & ZEROFILL;

UNSIGNED 表示数据不为负数;

ZEROFILL 表述数据为O;并且自动变为UNSIGNED; 

7.1.1 数字类型列表




7.1.2实例

mysql> CREATE TABLE test
    -> (tiny_int TINYINT(1),
    -> bool_int BOOL,
    -> bit_int BIT,
    -> small_int SMALLINT(1),
    -> medium_int MEDIUMINT(1),
    -> int_int INT(1),
    -> big_int BIGINT(1), 
    -> integer_int INTEGER);
Query OK, 0 rows affected (0.07 sec)
mysql> desc test;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| tiny_int    | tinyint(1)   | YES  |     | NULL    |       |
| bool_int    | tinyint(1)   | YES  |     | NULL    |       |
| bit_int     | bit(1)       | YES  |     | NULL    |       |
| small_int   | smallint(1)  | YES  |     | NULL    |       |
| medium_int  | mediumint(1) | YES  |     | NULL    |       |
| int_int     | int(1)       | YES  |     | NULL    |       |
| big_int     | bigint(1)    | YES  |     | NULL    |       |
| integer_int | int(11)      | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
8 rows in set (0.09 sec)

mysql> insert into test (tiny_int, bool_int, bit_int, small_int, medium_int, int_int, big_int, integer_int)  values (100000000,10000000,1000,1000,1000,1000,1000,1000), (-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000)\c
mysql> insert into test (tiny_int, bool_int, bit_int, small_int, medium_int,
    -> int_int, big_int, integer_int) 
    -> values
    -> (9999999999999999999999999999,9999999999999999999999999999,9999999999999999999999999999,9999999999999999999999999999,
    -> 9999999999999999999999999999,9999999999999999999999999999,9999999999999999999999999999,9999999999999999999999999999),
    -> (-9999999999999999999999999999,-9999999999999999999999999999,-9999999999999999999999999999,-9999999999999999999999999999,
    -> -9999999999999999999999999999,-9999999999999999999999999999,-9999999999999999999999999999,-9999999999999999999999999999);
Query OK, 2 rows affected, 29 warnings (0.07 sec)
Records: 2  Duplicates: 0  Warnings: 29


mysql> select * from test;
+----------+----------+---------+-----------+------------+-------------+----------------------+-------------+-------------+
| tiny_int | bool_int | bit_int | small_int |  medium_int |        int_int     |            big_int           | integer_int |
+----------+----------+---------+-----------+------------+-------------+----------------------+-------------+-------------+
|      127 |      127 |              |     32767   |    8388607      |  2147483647 |  9223372036854775807 |  2147483647 |
|     -128 |     -128 |             |    -32768   |   -8388608      | -2147483648 | -9223372036854775808 | -2147483648 |
+----------+----------+---------+-----------+------------+-------------+----------------------+-------------+-------------+
4 rows in set (0.00 sec)

7.1.3 数字类型注意事项


NOTE: 数据选型时,应注意以下几点:
1.选择最小的可用类型;
2.能用整数型尽可能的化为整数型存储;
3.对于高精度的,必须注意在存储过程中因类型定义而丢失精度,如有有必要,可定义为整型,在程序中进行换算;
4.对于数据的类型,M值可定义的比类型定义值大时,系统将不会超出类型定义的值;
5.宽度小于指定列宽值,可选择宽度左边补齐显示;即加上ZEROFILL标识,但DESCIMAL除外;

7.2 字符串类型

7.2.1 字符串类型列表







7.2.2  字符串数据类型选用注意事项

NOTE:
1.不要在字符串列中存储数字;
2.在CHAR & VARCHAR之间,我们应多选用CHAR 来节省空间,和提高效率,但要注意将要存储对象的长度;
3.如果进行已知数据选择时,应使用ENUM;枚举;
4.一列中可对应多项数据时,应使用SET;集合;
5.对于图像和二进制对象,不应存储在数据库中。应存储在文件系统中;
6. 对于CHAR 和VARCHAR 类型的数据,在搜索的时候是不区分大小写的,如果要区分,则应在定义数据表时使用BINARY 关键字;
7. ENUM  在添加数据列时,如果添加了无效值,则会插入一个(“”)空串;在ENUM 类型中,(“”)空串的索引为0,其他的索引依次累加;
    在插入数据时,也可直接插入索引值来进行选择插入的数据内容,枚举的索引是根据定义时定义的顺序进行定义索引值的。如果选择的索引值超出了ENUM 的枚举项,则会插入空串(“”);
8. SET 集合是类似ENUM 的工作方式的,具体参考ENUM;

7.3 日期和时间列类型

7.3.1 时间日期类型列表

7.3.2 日期时间格式注意事项

NOTE: 
1.mysql 日期处理函数接收的数据格式是很宽限的,连字符可以用几种标点符号进行代替;
0 0
原创粉丝点击