[转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】
转载自:http://blog.csdn.net/daydreamingboy/article/details/6310907
分析MySQL数据类型的长度
MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、FLOAT(Length, Decimals)、DOUBLE(Length, Decimals)和DECIMAL(Length, Decimals)。
然而,这些数据类型的长度,并不是都指数据的大小。具体说就是:
(1)CHAR、VARCAHR的长度是指字符的长度,例如CHAR[3]则只能放字符串"123",如果插入数据"1234",则从高位截取,变为"123"。 VARCAHR同理。
(2)TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的长度,其实和数据的大小无关!Length指的是显示宽度,举个例子:
mysql> create table test(id int(3) zerofill);
Query OK, 0 rows affected (0.09 sec) mysql> insert into test(id) values(1),(1234);
Query OK, 2 rows affected (0.06 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from test;
+------+
| id |
+------+
| 001 |
| 1234 |
+------+
2 rows in set (0.00 sec)
可以看出,id的显示宽度为3,不足的左边补0,数据长度超过的则原样输出。如果没有zerofill,则看不出显示宽度,没有前导零。
(3)FLOAT、DOUBLE和DECIMAL的长度指的是全部数位(包括小数点后面的),例如DECIMAL(4,1)指的是全部位数为4,小数点后1位,如果插入1234,则查询的数据是999.9。过程如下
mysql> alter table test add realnum decimal(4,1);
Query OK, 2 rows affected (0.03 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> insert into test(id,realnum) values(2,1234);
Query OK, 1 row affected, 1 warning (0.05 sec) mysql> select * from test;
+------+---------+
| id | realnum |
+------+---------+
| 001 | NULL |
| 1234 | NULL |
| 002 | 999.9 |
+------+---------+
3 rows in set (0.02 sec)
附录 常见MySQL数据类型(留作备忘)
|
类 型 |
大 小 |
描 述 |
|
CAHR(Length) |
Length字节 |
定长字段,长度为0~255个字符 |
|
VARCHAR(Length) |
String长度+1字节或String长度+2字节 |
变长字段,长度为0~65 535个字符 |
|
TINYTEXT |
String长度+1字节 |
字符串,最大长度为255个字符 |
|
TEXT |
String长度+2字节 |
字符串,最大长度为65 535个字符 |
|
MEDIUMINT |
String长度+3字节 |
字符串,最大长度为16 777 215个字符 |
|
LONGTEXT |
String长度+4字节 |
字符串,最大长度为4 294 967 295个字符 |
|
TINYINT(Length) |
1字节 |
范围:-128~127,或者0~255(无符号) |
|
SMALLINT(Length) |
2字节 |
范围:-32 768~32 767,或者0~65 535(无符号) |
|
MEDIUMINT(Length) |
3字节 |
范围:-8 388 608~8 388 607,或者0~16 777 215(无符号) |
|
INT(Length) |
4字节 |
范围:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(无符号) |
|
BIGINT(Length) |
8字节 |
范围:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(无符号) |
|
FLOAT(Length, Decimals) |
4字节 |
具有浮动小数点的较小的数 |
|
DOUBLE(Length, Decimals) |
8字节 |
具有浮动小数点的较大的数 |
|
DECIMAL(Length, Decimals) |
Length+1字节或Length+2字节 |
存储为字符串的DOUBLE,允许固定的小数点 |
|
DATE |
3字节 |
采用YYYY-MM-DD格式 |
|
DATETIME |
8字节 |
采用YYYY-MM-DD HH:MM:SS格式 |
|
TIMESTAMP |
4字节 |
采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年 |
|
TIME |
3字节 |
采用HH:MM:SS格式 |
|
ENUM |
1或2字节 |
Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一 |
|
SET |
1、2、3、4或8字节 |
与ENUM一样,只不过每一列都可以具有多个可能的值 |
参考资料:http://blog.csdn.net/reanimation1/archive/2008/08/26/2833327.aspx
mysql查看表的结构的mysql语句为:
mysql查看表结构命令,如下: desc 表名;
show columns from 表名;
describe 表名;
show create table 表名; use information_schema;
select * from columns where table_name='表名'; 顺便记下:
show databases; --显示数据库列表
use 数据库名; --设置为当前工作数据库
show tables; --显示当前工作数据库 下的表 列表 原有一unique索引AK_PAS_Name(PAC_Name)在表tb_webparamcounter中,
执行以下sql修改索引
alter table tb_webparamcounter drop index AK_PAS_Name;
alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name); 若发现索引的逻辑不对,还需要再加一个字段进去,执行
alter table tb_webparamcounter drop index AK_PAS_Name;
alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name,PAC_Value);
注意:这时的PC_ID,PAC_Name,PAC_Value三个字段不是FOREIGN KEY
否则必需先drop FOREIGN KEY,再重做上一步才行 顺便提下oracle
select * from v$database;
select * from all_users;
select * from user_tables;
[转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】的更多相关文章
- MySQL中各种数据类型的长度及在开发中如何选择
接触MySQL这个数据库大概快要两年了,不过由于没有特别深入系统的去学习,大多也是停留在一知半解的状态.今天在工作中刚好碰到了表设计的问题,顺便写篇博客,把MySQL中数据类型和字段类型选择这方面给弄 ...
- MySQL数据类型的长度
MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length).VARCHAR(Length).TINYINT(Length). SMALLINT(Length).ME ...
- (转载)MySQL LIKE 用法:搜索匹配字段中的指定内容
(转载)http://www.5idev.com/p-php_mysql_like.shtml MySQL LIKE 语法 LIKE 运算符用于 WHERE 表达式中,以搜索匹配字段中的指定内容,语法 ...
- mysql 允许在唯一索引的字段中出现多个null值
线上问题:org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [update fl_table ...
- mysql数据类型最大长度记录
MySQL中各数据类型的取值范围 转在这里,慢慢记下来. TINYINT -128 - 127 TINYINT UNSIGNED 0 - 255 SMALLINT -32768 - 32767 SMA ...
- MySQL数据类型字节长度
1.字符串 char(n): n 字节长度 varchar(n): 如果是 utf8 编码, 则是 3 n + 2字节; 如果是 utf8mb4 编码, 则是 4 n + 2 字节. 2.数值类型: ...
- MySQL 使用while语句向数据表中批量插入数据
1.创建一张数据表 mysql> create table test_while ( -> id int primary key) charset = utf8; Query OK, ro ...
- 字段中有空的时候 进行逻辑运算,mysql 与 oracle 处理函数IFNULL() 与 nvl() ,选取NULL 值 。
mySQL数据库: SELECT id_p,IFNULL(math,0)+IFNULL(english,0) 总分 from mytest_brian1 Oracle 数据库: select id_ ...
- php 替换 oracle 数据字段中“看不见”换行符号
工作需要,把oracle中的数据导出csv,导出代码如下:<?php$file_name = "申請書承認(予定休出).csv";header("Content-D ...
随机推荐
- linux密码暴力破解机
linux 密码保存在 /etc/shadow shadow 文件的保存格式 python:$$mWSyC6Pv$hpMreQT77R9ML/Xx1QnRAow1tUTDjIowaTssV7bZw9S ...
- 洛谷P3964 [TJOI2013]松鼠聚会 [二分答案,前缀和,切比雪夫距离]
题目传送门 松鼠聚会 题目描述 草原上住着一群小松鼠,每个小松鼠都有一个家.时间长了,大家觉得应该聚一聚.但是草原非常大,松鼠们都很头疼应该在谁家聚会才最合理. 每个小松鼠的家可以用一个点x,y表示, ...
- P2690 接苹果
P2690 接苹果f[i][j][k]表示i=1或2,表示j时刻cow在哪棵树下j表示时刻k表示转移了k次如果当前第1棵树落苹果f[1][t][left]=max(f[1][t-1][left],f[ ...
- Linux-c系统编程
进程相关的概念 程序和进程 程序:二进制文件.占用磁盘空间 进程:运行着的程序,数据在内存中,占用系统资源,CPU,物理内存() PCB描述进程(进程控制块) 把描述进程的所有信息的那条记录叫做 PC ...
- 暴力探测蓝牙设备工具redfang
暴力探测蓝牙设备工具redfang 根据是否可以被扫描到,蓝牙设备具有可见(Disoverable)和不可见(non discoverable)两种模式.为了扫描不可见蓝牙设备,Kali Linu ...
- XXX on tree
%了发树上莫队 nlognsqrt(n) // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; in ...
- Android学习之路(转载)
原文地址:http://stormzhang.github.io/android/2014/07/07/learn-android-from-rookie/ 硬件 电脑–推荐Mac 首先声明我不是果粉 ...
- Atcoder Grand Contest 010 B - Boxes 差分
B - Boxes 题目连接: http://agc010.contest.atcoder.jp/tasks/agc010_b Description There are N boxes arrang ...
- android studio 使用总结
网站1:http://stormzhang.com/posts.html 网站2:http://blog.csdn.net/hyr83960944/article/details/38388429
- 初始化collectionViewCell
#import <UIKit/UIKit.h> @interface TonyCollectionViewCell : UICollectionViewCell @property UII ...