数据类型

数值类型

整型

默认有符号类型,用unsigned关键字指定为无符号类型

整型类型不要加宽度,宽度并非存储宽度,存储宽度已固定,指定的为显示宽度

 类型  大小 范围(有符号)   范围(无符号)  用途
TINYINT   1字节  -128,127  0,255  小整数值
SMALLINT   2字节  -23768,32767  0,65535  大整数值
 MEDIUMINT  3字节  -8388608,8388607  0,4294967295  大整数值
 INT或INTEGER  4字节  -2147483648,2147843647  0,4294967295  大整数值
BIGINT   8字节  -9233372036854775808,9233372036854775807  0,18446744073709551615  极大整数

 

 

浮点型

也分有无符号,unsigned

FLOAT[(M,D)],M表示多少位整数,D表示多少位负数

FLOAT,DOUBLE,DECIMAL精度越高

FLOAT和DOUBLE的M值多大255

DECIMAL,M值最大65

类型 大小 发范围(有符号) 无符号 有用途
FLOAT 4字节      
DOUBLE 8字节      
DECIMAL DECIMAL(M,D),如果M>D为M+2否则为D+2      

日期类型

create table student(
    -> id int,
    -> name char(6),
    -> born_year year,
    -> birth_date date,
    -> class_time time,
    -> reg_time datetime);

 

insert into student values(1,'ya',now(),now(),now(),now());

 

插入时可用now()调用数据库当前时间

year:2018
date:2018-05-20
time:09:40:46
datetime:8字节,year范围1001-9999,2018-05-20 09:40:46

timestamp:4字节,year范围1970-2038

字符类型 

在一个表中不要char和varchar混用。

字符类型宽度为字符的个数

char,定长,不够末尾补0,查询的时候给空格取消掉了。mysql比较查询的时候不管末尾空格。但开头的空格不做任何处理。like模糊查询,前后空格都不会自动去掉。

存取性能高,浪费空间。

varchar,变长,传几个存几个,不能超过规定长度。节省空间,存取速度慢。

char_length(name)查看字符宽度

select char_length(n2) from t9;

 

设置数据库模式,让怎么存怎么取,即不自动去掉空格

SET sql_mode="PAD_CHAR_TO_FULL_LENGTH";

 

 char类型规定5个字符,插入2个字符,查询出来也就5个字符

select char_length(n1) from t9;
+-----------------+
| char_length(n1) |
+-----------------+
|               5 |
+-----------------+

 

 varchar类型规定5个字符,插入2个字符,实际查询出来也就2个字符

select char_length(n2) from t9;
+-----------------+
| char_length(n2) |
+-----------------+
|               2 |
+-----------------+
1 row in set (0.00 sec)

 

枚举类型与集合类型

enum,选择一个

set,选取多个

mysql> create table consumer(
    -> id int,
    -> name char(16),
    -> sex enum('male','female','other')
    -> level enum('level1','level2','level3'),
    -> hobbies set('play','music','read','run'));

 

enum类型不传入规定值,则设置成空

mysql> insert into consumer values(1,'ya','x','level1','run');
Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> select * from consumer;
+------+------------------+------+--------+---------+
| id   | name             | sex  | level  | hobbies |
+------+------------------+------+--------+---------+
|    1 | ya               |      | level1 | run     |
+------+------------------+------+--------+---------+
1 row in set (0.00 sec)

mysql>

 

posted @ 2018-05-19 22:14  丫丫625202  阅读(205)  评论(0编辑  收藏  举报