返回顶部

mysql 数据类型

mysql 表操作  数据类型

 

一 查看支持引擎

-- 数据库支持的存储引擎
show engines\G

-- 正在使用的存储引擎
show variables like "storage_engine%";

 

 

二 数据类型 

 

1 整数类型

 

tinyint  smallint  int  bigint

类型            大小        范围(有符号)            范围(无符号)                用途
tinyint            1字节        (-128,127)            (0,255)                小整数        
smallint        2字节        (-3276832767)        (0,65535)                大整数
int                4字节        (-21474836482147483647)    (0,4294967295)    大整数
bigint            8字节                                                        极大整数值


float            4字节                                                        单精度 浮点数值
double            8字节                                                        双精度 浮点数值
decimal                                                                            小数值

 

 

 

2 字符串数据类型

char          固定长度字符串 最多为255个字符    
varchar        可变长度字符串  最多为65535个字符

 

3 浮点型

float  double decimal

 

 

4 日期型

date      time  datetime  timestamp  year

        YEAR
            YYYY(1901/2155)

        DATE
            YYYY-MM-DD(1000-01-01/9999-12-31)

        TIME
            HH:MM:SS('-838:59:59'/'838:59:59'DATETIME
            YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59    Y)

        TIMESTAMP
            YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)

 

 4-1 datatime 与 timestamp 的区别

--- datetime 与timestamp的区别

1.DATETIME的日期范围是1001——9999年,TIMESTAMP的时间范围是1970——2038年。

2.DATETIME存储时间与时区无关,TIMESTAMP存储时间与时区有关,显示的值也依赖于时区。在mysql服务器,操作系统以及客户端连接都有时区的设置。

3.DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。因此,TIMESTAMP比DATETIME的空间利用率更高。

4.DATETIME的默认值为null;TIMESTAMP的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间。

 

 

 

5 字符类型

char类型:定长,简单粗暴,浪费空间,存取速度快
    字符长度范围:0-255(一个中文是一个字符,是utf8编码的3个字节)
存储:
    存储char类型的值时,会往右填充空格来满足长度
    例如:指定长度为10,存>10个字符则报错,存<10个字符则用空格填充直到凑够10个字符存储
    
varchar类型:变长,精准,节省空间,存取速度慢
    字符长度范围:0-65535
    varchar类型存储数据的真实内容,不会用空格填充,如果'ab  ',尾部的空格也会被存起来
    
    
    
虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡

 

 

 

6. 枚举类型与集合类型

enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female

set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)

 

create table consumer( 
name varchar(50),
sex enum('male','female'),
level enum('vip1','vip2','vip3','vip4','vip5'),
hobby set('play','music','read','study')    
);


insert into consumer values ('yyy','male','vip5','read,study');
insert into consumer values ('xxx','female','vip1','music');

mysql> select * from consumer;
+------+--------+-------+------------+
| name | sex    | level | hobby      |
+------+--------+-------+------------+
| yyy  | male   | vip5  | read,study |
| xxx  | female | vip1  | music      |
+------+--------+-------+------------+

 

7. 列属性

数值          unsigned               禁止使用负值
仅整数        auto_increment         生成包含连续唯一整数值的序列
             default                如果没有指定值   则为其提供默认值
             null
             not null               不能为空
             binary                 二进制
             character set          指定使用字符集

 

create table student(id int not null primary key  AUTO_INCREMENT);
create table student1(id int not null primary key  AUTO_INCREMENT,name varchar(20))charset utf8;
create table teacher(id int not null ,name varchar(20) not null);
create table teacher1(id int not null ,name varchar(20) not null,beizhu varchar(20) not null default "ok");

 

primary key   主键;   非空唯一

unique 唯一

 

 

 

 

posted on 2019-06-24 19:50  augustyang  阅读(199)  评论(0编辑  收藏  举报

导航