·整数型
Tinyint:迷你整型,使用一个字节存储,表示的状态最多有256种 (常用)
Int: 标准整型,使用4个字节存储(常用)
Bigint smallint mediumint 不常用
--创建整型表
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','199','f'); /数据类型不正确X
--给表增加一个无符号类型
alter table my_int add int_5 tinyint unsigned;
·小数型
小数型:带有小数点或者超过整型的数值类型
分为两种:
浮点型:小数点浮动,精度有限,而且会丢失精度
定点型:小数点固定,精度固定,不会丢失精度
·浮点型:
Float:单精度。占用4个字节存储数据,精度范围大概为7位左右
Double:双精度,占用8个字节存储空间,精度方位大概为15位左右
--浮点表
create table my_float(f1 float,
f2 float(10,2), --10位在精度范围外
f3 float(6,2)) charset utf8;--6位在精度范围内
插入数据:可以是小数,也可以是科学计数法
insert into my_float values(11000.10,1000.10,1000.10); -- 符合条件
insert into my_float values(1234567890,12345678.90,1234.56); -- 符合条件
insert into my_float values(999999999,99999999.99,9999.99); -- 最大值
insert into my_float values(3e38,3.01e7,1234.56); -- 科学计数法
浮点型数据的插入:整型不能超出限制,小数可以超出限制
insert into my_float values(11000.10,1000.101515151,1000.10); -- 符合条件
查询数据
select * from my_floatl;
·定点型:
绝对保证整数部分不被四舍五入 小数部分有可能(理论上小数部分不会丢失精度)
create table my_decimal(
f1 float(10,2),
d1 decimal(10,2)
)charset utf8;
--插入数据
insert into my_decimal values(12345678.90,12345678.90);
insert into my_decimal values(1234.123456,1234.1234356);--小数部分超出OK
insert into my_decimal values(99999999.99,99999999.999); --.999小数部分四舍五入导致进位 定点型不可以
· 时间日期类型
Datetime:时间日期 格式 YYYY-mm-dd HH:ii:ss
Date:日期 就是datetime中的date部分
Time:时间段 指定某个区间之间 -时间到+时间 可以是负数
Timestamp:时间戳,并不是时间戳,只是从1970年开始的YYYY-mm-dd HH:ii:ss格式与datetime完全一致,如果数据库数据被修改Timestamp更新到最新时间
Year 年份 可以两位数插入(1970-2069) 也可以四位数
create table my_date (
d1 datetime,
d2 date,
d3 time,
d4 timestamp,
d5 year
) charset utf8;
插入数据
insert into my_date values (
'2015-9-28 11:50:36','2015-9-28 ','11:50:36','2015-9-28 11:50:36',2015
);
insert into my_date values (
'2015-9-28 11:50:36','2015-9-28 ','11:50:36','2015-9-28 11:50:36',15
);
· 字符串类型
SQL字符串类型分为6类 char,varchar,text,blob,enum和set
· 定长字符串
数据存储的长度确定
char(L):L代表length,可以存储的长度,单位为字符,最大长度值可以为255
char(4):在utf8环境下,需要4*3=12个字节
· 变长字符串
变长字符串 varchar 在分配空间的时候,按照最大空间分配,但实际用多少根据数据来确定
varchar(L): L表示字符长度,理论长度是65536个字符,但是会多出1到2个字节来确定存储实际长度
varchar(10) 的确存了10个汉字,utf8环境,10*3+1 = 31字节
定长磁盘空间比较浪费 但是效率高 如身份证 电话号码可以选择使用
变长磁盘空间比较节省 但是效率低
· 集合数据表
create table my_set(
hobby set('篮球','足球','乒乓球','水球')
) charset utf8;
-- 插入数据
insert into my_set values('足球,乒乓球,水球');
insert into my_set values(3);--代表乒乓球
select hobby + 0, hobby from my_set;