標籤:截取 hive 文章 pac mat 範圍 schema bar 重做
你看到的這個文章來自於http://www.cnblogs.com/ayanmw
轉載自: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: 0mysql> 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: 0mysql> 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,再重做上一步才行順便提下oracleselect * from v$database;select * from all_users;select * from user_tables;
轉載請註明出處:http://www.cnblogs.com/ayanmw 我會很高興的!
[轉]分析MySQL資料類型的長度【mysql資料欄位 中length和decimals的作用!熟悉mysql必看】