Mysql学习之路02-数据类型(列类型)

数据类型(列类型)
对数据进行统一的分类,更换的利用有限的空间
数据类型分为三大类:数值类型,字符串类型,日期类型

数值型:数值型分为整型和小数型

整型分为5类:
tinyint:迷你整型,用一个字节存储,–256
smallint:小整型,2个字节,–65536
mediumint:中整型,3个字节
int:整型,4个字节
bigint:大整型,8个字节
插入数据只能插入整型,且不能超出范围
数值类型全部都是默认有符号:分正负
有时候需要使用无符号数据:需要给数据类型限定:int unsigned

小数型分为浮点型和定点型
浮点型:小数点浮动,精度有限,而且会丢失精度
定点型:小数点固定,精度固定,不会丢失精度

   浮点型是一种精度型数据:超出指定范围后,会丢失精度(四舍五入)
   浮点型分为:float:4个字节  范围:7位
               double:8位字节  范围:15位
   浮动的使用方式:直接float表示没有小数部分;float(M,D):M表示总长度,D表示小数部分长度    

定点型:保证整数部分不会被四舍五入,小数部分有可能
    create table my_decimal(
    d1 decimal(10,2),
    f1 float(10,2)
    )charset utf8;

时间日期类型

Datetime:时间日期,格式是YYYY-mm-dd HH:ii:ss,
–创建时间日期表
create table my_date(
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
)charset utf8;
–timestamp字段:只要当前所在的记录被更新,该字段一定会自动更新

字符串类型
字符串分为6类:char,varchar,text,blob,enum,set
定长字符串:char,在定义结构时就确定了数据的存储长度
char(L):L代表length,可以存储的长度,单位为字符,不是字节,,最大长度为:255
char(4):在UTF8环境下,需要4*3=12个字节
变长字符串:varchar,在分配空间时,按照最大空间分配,但实际上最终用了多少,是根据具体的数据来确定
varchar(L):L表示字符长度 理论长度是65536个字符,但是会多出1到2个字节来确定存储的实际长度
文本字符串:如果数据量非常大,超过255个字符
Text:存储文字
Blob:存储二进制数据
枚举字符串:事先将所有可能出现的结果都设计好,存储的数据必须是规定好的数据
使用方法:
定义:enum(元素列表);如enum(‘男’,‘女’,‘保密’);
create table my_enum(
sex enum(‘男’,’女’,’保密’)
)charset utf8;
作用:
1,规范数据格式
2,节省存储空间(枚举有一个别名:单选框),枚举实际存储的数值而不是字符串本身
证明字段存储的数据是数值,将字段进行+0运算,如果是字符串则结果为0
原理:
在进行数据规范是(定义时),系统会自动建立一个数字与枚举元素的对应关系:在插入时系统自动将字符串转化为对应的数字存储,提取时也一样
所以在插入数据时,可以直接插入数值
集合字符串:跟枚举很类似,实际存储的是数值而不是字符串(集合是多选)
使用方式:
定义:set(元素列表)
使用:可以使用元素列表中的元素,使用,分割
集合中:每个元素都是对应一个二进制位,被选中为1,

        --创建集合表
    create table my_set(
    hobby set('篮球','足球','羽毛球','排球','台球','网球','棒球')
    )charset utf8;

    --插入数据
    insert into my_set values('足球,台球,网球');
    insert into my_set values(0000011);--代表'篮球,足球';

Mysql记录长度
Mysql中规定:任何一条记录最长不能超过65535个字节

--创建整型表
create table my_int(
int_1 tinyint,
int_2 smallint,
int_3 int,
int_4 bigint
)charset utf8;

--插入数据
insert into my_int values (100,100,100,100); --有效数据

insert into my_int values ('a','b','100','1'); --无效数据

insert into my_int values (255,10000,100000,10000); --超出范围

--给表增加一个无符号类型
alter table my_int add int_5 tinyint unsigned; --无符号类型


--创建浮点数表
create table my_float(
f1 float,
f2 float(10,2),  
f3 float(6,3)   
)charset utf8;

--插入数据
insert into my_float values(100.10,1000.10,10.10);

--创建定点数表
create table my_decimal(
d1 decimal(10,2),
f1 float(10,2)
)charset utf8;

--插入数据
insert into my_decimal values (1234678.90,12345678.90);
insert into my_decimal values (1234.123456,1234.123456);

--创建时间日期表
create table my_date(
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
)charset utf8;

--插入数据
insert into my_date values('2017-9-21 13:52:24','2017-9-21','13:53:05','2017-9-21 13:53:36',2017);
insert into my_date values('2017-9-21 13:52:24','2017-9-21','-13:53:05','2017-9-21 13:53:36',2017);
insert into my_date values('2017-9-21 13:52:24','2017-9-21','-113:53:05','2017-9-21 13:53:36',2017);

--year可以使用2位或4位
insert into my_date values('2017-9-21 13:52:24','2017-9-21','13:53:05','2017-9-21 13:53:36',69);
insert into my_date values('2017-9-21 13:52:24','2017-9-21','13:53:05','2017-9-21 13:53:36',70);


--timestamp:修改记录
update my_date set d1 = '2017-9-21 14:02:06' where d5=2069;

--枚举表
create table my_enum(
sex enum('男','女','保密')
)charset utf8;

--插入数据
insert into my_enum values ('男'),('保密');
insert into my_enum values (1),(2);

--创建集合表
create table my_set(
hobby set('篮球','足球','羽毛球','排球','台球','网球','棒球')
)charset utf8;

--插入数据
insert into my_set values('足球,台球,网球');
insert into my_set values(0000011);


--创建班级表
create table my_class(
name varchar(20) not null,
room varchar(20) null
)charset utf8;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值