mysql之数据类型
一、概述:
所谓建表,就是声明列的过程:
数据是以文件的形式放在硬盘中(也有放在内存里的)
列:不同的列类型占的空间不一样
选列的原则:够用又不浪费;
二、mysql的数据类型:
整形:Tinyint(1字节) Smallint(2个字节) Mediumint(3个字节) int(4个字节) bigint(8个字节);
Tinyint在mysql默认是有符号的(-128----127);
Tinyint(M) unsigned zerofill
unsigned : 是无符号,影响存储范围;
M代表宽度,(必须配合zerofill时才有意义)
Zerofill 零填充,如果某列是zerofill,默认是unsigned(类似00005);
insert into classs (name, age4)values ('zhaoliu', 9);
列可以声明默认值,而且推荐声明默认值: NOT NULL default 0
alter table class add age5 tinyint not null default 0;
小数型/浮点型定点型:
Float(M, D)
decimal(M, D)
//M:精度(总位数,不包含点) D:标度(小数位)
create table goods(
name varchar(10) not null default '',
price float(6, 2) not null default 0.00) //9999.99, -9999.99
//price float(6, 2) unsigned not null default 0.00) //0-9999.99,
charset utf8;
inert into goods
(name, price)
values
('跑步机', ‘688,896’)
//记录在表中price的值为688.90
alter table goods add bigprice float(9.2) not null default 0.0;
alter table goods add deciprice decimal(9.2) not null default 0.0;
alter table goods (name, bigprice, deciprice)
values
('自行车', 1234567.23, 1234567.23);
字符型
char 定长字符串 char(M),M代表宽度,即可容纳的字符数; Varchar 变长字符串 Varchar(M),M代表宽度,即可容纳的字符数;
区别:
char定长: M个字符如果存的小于M个字符,实占M个字符;利用率是100%
varchar变长: M个字符如果存的小于M个字符,假设为N,实占N个字符;实占的字符需要记录消耗1--2个字符;实际占有(N+1~2)个字符;
char 与varchar选择原则:
1、空间利用效率;
2、速度;
示例:
四字成语表,char(4);
个人微博, varchar(140);
用户名:char,牺牲空间,提供速度;
text 文本串,比较大段文本,速度稍慢;
注意:text不要加默认值,加了也不生效;
create table stu(
name char(8) not null default '',
waihao varchar(16) not null default ''
)charset utf8; //name最多容纳8个utf8字符;
insert into stu(name, waihao)
values
('zhangxiaosan', 'saner'); //拆入不进去,zhangxiaosan太长了;
insert into stu(name, waihao)
values
('zhangsan', 'saner');
insert into stu(name, waihao)
values
('默罕默德买买提',‘异步拉欣’);
select concat (name, '!'), concat(waihao, '!') from stu;
alter table std add info text not null default '';
//执行错误;不能默认值;
三、mysql中的日期时间类型:
//年---------------------year
//年-月-日---------------date
//00:00:00-------------time
//年-月-日 hh:nn:ss----datatime
Year类型:1个字节,1901年到2155年;【0000年表示错误选择】
如果输入2位,‘00-69’表示2000---2069; ‘70-99’表示1970---1999;
如果麻烦,输入的时候输入4位即可;
Date类型:典型格式:1992-08-12 日期范围:1000-01-01 ---9999-12-31;
time类型:典型格式:hh:mm:ss
Datatime类型:典型格式:'1989-06-09 14:23:02'
范围:1000-01-01 00:00:00 ---9999-12-31 23:59:59
注意:
在开发中,很少用日期时间类型来表示一个需要的精确到秒
原因:虽然日期时间类型能精确到秒,而且方便查看;
而是用时间戳:1970-01-01 00:00:00到当前的秒数;
create table t2(
gender enum('男',‘女’)
)charset utf8;
insert into t2 values('男');
insert into t2 values('春哥'); //error
create table user(
name varchar(20) not null default '',
regtime datetime not null default '1000-01-01 00:00:00')
charset utf8;
create table t( tm time);
insert into t values ('14:33:56');
create table y(
ya year(4)
)
insert into y values ('1901');
insert into y values('2280'); //error
insert into y values('97'); //存入了1997
insert into y values('12'); //存入的是2012
create table d
title varchar(30),da data)
charset utf8;
insert into d values
('开国大典', ‘1949-10-01’);
insert into d values
('世界末日', ‘2012-02-30’); //输入不合法
mysql之数据类型的更多相关文章
- MySQL数据库3 - MySQL常用数据类型
一. MySql常用数据类型 数据类型:整数(tinyint smailint int bigint) 定点数 decimal(p,s) ------ 小数点位置固定的 ---> 数 ...
- Mysql常用数据类型
Mysql常用数据类型 数字: 字符串: 时间:
- MySQL日期数据类型、时间类型使用总结
MySQL日期数据类型.时间类型使用总结 MySQL日期数据类型.MySQL时间类型使用总结,需要的朋友可以参考下. MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 ...
- MySQL日期数据类型、MySQL时间类型使用总结
MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ --- ...
- MySQL数据库数据类型之集合类型SET测试总结
MySQL数据库提供针对字符串存储的一种特殊数据类型:集合类型SET,这种数据类型可以给予我们更多提高性能.降低存储容量和降低程序代码理解的技巧,前面介绍了首先介绍了四种数据类型的特性总结,其后又分别 ...
- mysql 的数据类型
mysql 的数据类型(描述的是字段)三大类:一.整型:1.tinyint(M),其中M是显示宽度,需要配合zerofill,就是前面0填充,存储单位为1个字节(8位),无符文是最大能存储范围0000 ...
- MySQL的数据类型(转)
MySQL的数据类型 1.整数 TINYINT: 8 bit 存储空间 SMALLINT: 16 bit 存储空间 MEDIUMINT: 24 bit 存储空间 INT: 32 bit 存储空间 BI ...
- MySQL/MariaDB数据类型
1.为什么要定义MySQL数据类型 定义MySQL数据类型其实就是为了对数据进行分类,实现对不同的分类进行不同的处理 1.使系统能够根据数据类型来操作数据. 2.预防数据运算时出错.例如,通过强大的数 ...
- mysql的数据类型和字段属性
本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长度 字段属性 空\不为空值:NULL.NOT NULL 主键:primary ...
随机推荐
- poj 1088 滑雪(区间dp+记忆化搜索)
题目链接:http://poj.org/problem?id=1088 思路分析: 1>状态定义:状态dp[i][j]表示在位置map[i][j]可以滑雪的最长区域长度: 2>状态转移方程 ...
- 九款让WordPress成为赚钱利器的广告插件
Blog有了很不错的流量后,看到别人博客挂的广告挣$,是否也有挂广告的冲动,但是,修改wordpress模版去让人不厌其烦,布局.样式都的重新修改一下,为了不那么麻烦,笔者整理的几款wordpress ...
- Android4.3模拟器界面中右侧菜单按钮无法使用问题解决办法
开发环境:笔记本电脑Windows2008+MyEclipse 10+Android4.3 问题描述:运行或者调试Android项目时,发现模拟器中右侧Menu按钮无法点击,截图如下: 查看在Andr ...
- 用nodejs安装hexo,将hexo部署到github
跌跌撞撞写这篇博文,希望下一篇可以好点 运行环境:最新版本的nodejs + git 安装好nodejs 和 git ,注册好github账号,新建仓库****.github.io(****为gith ...
- 远程登录 Windows server 2008 黑屏
scenerio: 远程登录 Windows server 2008 黑屏,别人那里一切正常. Solution:在黑屏界面,点击桌面,按住Ctrl+Alt+End键 -> Log Off. ...
- git 无法添加文件夹下文件
最近做项目时,发现无法提交某个子文件夹下的文件. google后发现可能是该子文件夹下有.git文件夹导致无法上传. 删除子文件夹下.git后,依然无法提交子文件夹下的文件. 继续google, 尝试 ...
- 一种解决h5页面背景音乐不能自动播放的方案
场景:微信.浏览器.App 普通解决方案:采用audio标签的autoplay属性 现象: 大部分IOS系统和少部分Android微信不支持自动播放 $解决方案:监听WeixinJSBridgeRea ...
- django 基础入门(一)
1. django 基本命令 新建project django-admin.py startproject project-name 新建app python manage.py startapp a ...
- Code 16K 码
Code 16K 码是一种多层.连续型.可变长度的条码符号,可以表示全ASCII字符集的128个字符及扩展ASCII字符.它采用UPC及Code128字符.一个16层的Code 16K符号,可以表示7 ...
- SSL证书与Https应用部署小结
为了提高网站的安全性,一般会在比较敏感的部分页面采用https传输,比如注册.登录.控制台等.像Gmail.网银等全部采用https传输. https/ssl 主要起到两个作用:网站认证.内容加密传输 ...