Mysql支持的多種數(shù)據(jù)類型主要有:數(shù)值數(shù)據(jù)類型、日期/時間類型、字符串類型。?
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供瀾滄網(wǎng)站建設(shè)、瀾滄做網(wǎng)站、瀾滄網(wǎng)站設(shè)計、瀾滄網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、瀾滄企業(yè)網(wǎng)站模板建站服務(wù),十年瀾滄做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
1.整數(shù)數(shù)據(jù)類型及其取值范圍:
類型
說明
存儲需求(取值范圍)
tinyint ? ?很小整數(shù) ? ?1字節(jié)([0~255]、[-128~127]); 255=2^8-1;127=2^7-1 ?
smallint ? ?小整數(shù) ? ?2字節(jié)(0~65535、-32768~32767) ;65535=2^16-1 ?
mediumint ? ?中等 ? ?3字節(jié)(0~16777215) ;16777215=2^24-1 ?
int(integer) ? ?普通 ? ?4字節(jié)(0~4294967295) ;4294967295=2^32-1 ?
bigint ? ?大整數(shù) ? ?8字節(jié)(0~18446744073709551615);18446744073709551615=2^64-1 ?
浮點數(shù)定點數(shù):
類型名稱
說明
存儲需求
float ? ?單精度浮點數(shù) ? ?4字節(jié) ?
double ? ?雙精度浮點數(shù) ? ?8字節(jié) ?
decimal ? ?壓縮的“嚴格”定點數(shù) ? ?M+2字節(jié) ?
注:定點數(shù)以字符串形式存儲,對精度要求高時使用decimal較好;盡量避免對浮點數(shù)進行減法和比較運算。?
2.時間/日期類型:?
year范圍:1901~2155;?
time格式:‘HH:MM:SS’(如果省略寫,并且沒有冒號,則默認最右起2位為秒,再到分,最后到時);?
插入系統(tǒng)當前時間:insert into 表名 values(current_date()),(now());?
date類型:‘YYYY-MM-DD’;?
datetime(日期+時間):‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’,取值范圍:‘1000-01-01 00:00:00’~‘9999-12-31 23:59:59’;?
timestamp格式同datetime,但在存儲時需要4個字節(jié)(datetime需要8字節(jié)),并且以UTC(世界標準時間)進行存儲(即timestamp會隨設(shè)置的時區(qū)而變化,而datetime存儲的絕不會變化);timestamp的范圍:1970-2037。?
3.字符串類型:?
text類型:tinytext、text、mediumtext、longtext;
類型
范圍
tinytext ? ?255=2^8-1 ?
text ? ?65535=2^16-1 ?
mediumtext ? ?16777215=2^24-1 ?
longtext ? ?4294967295=4GB=2^32-1 ?
char的存儲需求是定義時指定的固定長度;varchar的存儲需求是取決于實際值長度。?
set類型格式:set(’值1’,’值2’…) ——可以有0或者多個值,對于set而言,若插入的值為重復(fù)的,則只娶一個。插入的值亂序,則自動按順序插入排列。插入不正常值,則忽略。?
二進制類型:?
bit(M)——保存位字段值(位字段類型),M表示值的位數(shù);?
eg:select BIN(b+0) from 表名;—–b為列名;b+0表示將二進制的結(jié)果轉(zhuǎn)換為對應(yīng)的數(shù)字的值,BIN()函數(shù)將數(shù)字轉(zhuǎn)換為二進制。?
blog——-二進制大對象,用來存儲可變數(shù)量的數(shù)據(jù)。
數(shù)據(jù)類型
存儲范圍(字節(jié))
tinyblog ? ?最多255=2^8-1 字節(jié) ?
bolg ? ?最多65535=2^16-1 字節(jié) ?
mediumblog ? ?最多16777215=2^24-1 字節(jié) ?
longblog ? ?最多4294967295=4GB=2^32-1 字節(jié) ?
Mysql中的序列主要用于主鍵,主鍵是遞增的字段,不可重復(fù)。
Mysql與Oracle不同的是,它不支持原生態(tài)的sequence,需要用表和函數(shù)的組合來實現(xiàn)類似序列的功能。
mysql是沒有序列的,我最近剛做完一個項目也是從oralce移植到mysql數(shù)據(jù)庫上,oracle中 HIbernate配置都是這樣
generator class="sequence"
param name="sequence"SEQUENCE_CHILDREM_ARCHIVE_ID/param
/generator
,到移植到mysql數(shù)據(jù)庫中之后
generator class="identity"/generator
identity或者是increment都是可以滴,前提是你mysql表中的主鍵是auto_increatement的int類型的。
mysql下序列是用關(guān)鍵字auto_crement,起始值及步長增長值由系統(tǒng)以下參數(shù)確定:
mysql show variables like '%auto_increment%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+
2 rows in set (0.00 sec)
mysql
其中auto_increment_offset表示起始值(且必須由1開始),參數(shù)表示auto_increment_increment表示步長增長值(只能是正整數(shù))。
建表示例:
create table t111
(id int auto_increment primary key,
remark varchar(50)
);
由上面所說可知,你的需求在mysql下單用auto_crement是實現(xiàn)不了的。建議你考慮別的辦法吧,或由一些變通的方式實現(xiàn)。
問題分析:序列=自增ID,是數(shù)據(jù)庫根據(jù)數(shù)據(jù)插入先后順序自動生成的。
查詢方式:
只能再查詢自增ID即可
具體操作:MYSQL獲取自增ID的四種方法
select?max(id)?from?tablename
SELECT?LAST_INSERT_ID()?函數(shù)
LAST_INSERT_ID?是與table無關(guān)的,如果向表a插入數(shù)據(jù)后,再向表b插入數(shù)據(jù),LAST_INSERT_ID會改變。
select?@@IDENTITY;
@@identity?是表示的是最近一次向具有identity屬性(即自增列)的表插入數(shù)據(jù)時對應(yīng)的自增列的值,是系統(tǒng)定義的全局變量。一般系統(tǒng)定義的全局變量都是以@@開頭,用戶自定義變量以@開頭。
SHOW?TABLE?STATUS;
得出的結(jié)果里邊對應(yīng)表名記錄中有個Auto_increment字段,里邊有下一個自增ID的數(shù)值就是當前該表的最大自增ID.