MySQL数据类型与存储范围
2016-06-29 15:13
603 查看
所谓建表,就是声明列的过程
数据是以文件的形式存放在硬盘
列的类型:
1.整型:
tinyint / smallint /
mediumint / int / bigint
tinyint: 1占据空间:1个字节
2存储范围:(-128 to 127)
eg:
mysql> create table class(
-> id int primary key auto_increment,
-> name varchar(10),
-> age tinyint
-> )charset utf8;
(默认为有符号的int)
tinyint(M) unsigned zerofill 用法
M:宽度,在0填充时才有意义
unsigned:无符号
zerofill:0填充 (0001,M等于4时)
alter table class add age2 tinyint unsigned;
mysql> desc class;
+------- +--------------------- +------+----- +--------- +---------------- +
| Field | Type | Null | Key | Default | Extra |
+------- +--------------------- +------+----- +--------- +---------------- +
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
| age2 | tinyint(3) unsigned | YES | | NULL | |
+------- +--------------------- +------ +-----+--------- +---------------- +
列可以声明为默认值:
not null default 0;
eg:alter table class add age4 tinyint not null default 0;
2.小数型/浮点型,定点型:
float(M,D) M:精度,总位数;D:小数位
mysql> create table goods(
-> name varchar(10) not null default '',
-> price float(6,2) not null default 0.00
-> )charset utf8;
mysql> insert into goods
-> (name,price)
-> values
-> ('空调',2888.88);
decimal 更精确,用法一样
3.字符型:
char:定长,char(M),M代表字符数
varchar:变长
mysql> create table stu(
-> name char(8) not null default '',
-> waihao varchar(10) not null default ''
-> )charset utf8;
mysql> insert into stu
-> (name,waihao)
-> values
-> ('zhangsan','saner');
char和varchar的区别:
char,M个字符,如果存的小于M个字符,实占M个字符,0<=M<=255.
vachar,M个字符,如果存的N个字符,小于M,实占N个字符+1,2个字节(标志实存的长度)0<=M<=65536(utf8 22000左右)
char与varchar型选择:
1).空间利用率,
四字成语,char(4)
朋友圈动态,varchar(100)
2)速度:定长速度快些
4.日期时间型:
数据是以文件的形式存放在硬盘
列的类型:
1.整型:
tinyint / smallint /
mediumint / int / bigint
tinyint: 1占据空间:1个字节
2存储范围:(-128 to 127)
类型 | 字节 | 位 | 无符号 | 有符号 |
tinyint | 1 | 8 | 0->255 | -128->127 |
smallint | 2 | 16 | ||
mediumint | 3 | 24 | ||
int | 4 | 32 | ||
bigint | 8 | 64 |
mysql> create table class(
-> id int primary key auto_increment,
-> name varchar(10),
-> age tinyint
-> )charset utf8;
(默认为有符号的int)
tinyint(M) unsigned zerofill 用法
M:宽度,在0填充时才有意义
unsigned:无符号
zerofill:0填充 (0001,M等于4时)
alter table class add age2 tinyint unsigned;
mysql> desc class;
+------- +--------------------- +------+----- +--------- +---------------- +
| Field | Type | Null | Key | Default | Extra |
+------- +--------------------- +------+----- +--------- +---------------- +
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
| age2 | tinyint(3) unsigned | YES | | NULL | |
+------- +--------------------- +------ +-----+--------- +---------------- +
列可以声明为默认值:
not null default 0;
eg:alter table class add age4 tinyint not null default 0;
2.小数型/浮点型,定点型:
float(M,D) M:精度,总位数;D:小数位
mysql> create table goods(
-> name varchar(10) not null default '',
-> price float(6,2) not null default 0.00
-> )charset utf8;
mysql> insert into goods
-> (name,price)
-> values
-> ('空调',2888.88);
decimal 更精确,用法一样
3.字符型:
char:定长,char(M),M代表字符数
varchar:变长
mysql> create table stu(
-> name char(8) not null default '',
-> waihao varchar(10) not null default ''
-> )charset utf8;
mysql> insert into stu
-> (name,waihao)
-> values
-> ('zhangsan','saner');
char和varchar的区别:
char,M个字符,如果存的小于M个字符,实占M个字符,0<=M<=255.
vachar,M个字符,如果存的N个字符,小于M,实占N个字符+1,2个字节(标志实存的长度)0<=M<=65536(utf8 22000左右)
char与varchar型选择:
1).空间利用率,
四字成语,char(4)
朋友圈动态,varchar(100)
2)速度:定长速度快些
4.日期时间型:
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复