mysql數(shù)據(jù)類型之一字符型VARCHARVSCHARVARCHAR型和CHAR型數(shù)據(jù)的這個差別是細(xì)微的,但是非常重要。他們都是用來儲存字符串長度小于255的字符。假如你向一個長度為四十個字符的VARCHAR型字段中輸入數(shù)據(jù)BillGates。當(dāng)你以后從這個字段中取出此數(shù)據(jù)時,你取出的數(shù)據(jù)其長度為十個字符——字符串BillGates的長度。現(xiàn)在假如你把字符串輸入一個長度為四十個字符的CHAR型字段中,那么當(dāng)你取出數(shù)據(jù)時,所取出的數(shù)據(jù)長度將是四十個字符。字符串的后面會被附加多余的空格。當(dāng)你建立自己的站點(diǎn)時,你會發(fā)現(xiàn)使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段時,你不需要為剪掉你數(shù)據(jù)中多余的空格而操心。VARCHAR型字段的另一個突出的好處是它可以比CHAR型字段占用更少的內(nèi)存和硬盤空間。當(dāng)你的數(shù)據(jù)庫很大時,這種內(nèi)存和磁盤空間的節(jié)省會變得非常重要
我們提供的服務(wù)有:網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、昌平ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的昌平網(wǎng)站制作公司
MySQL數(shù)據(jù)類型之二文本型TEXT使用文本型數(shù)據(jù),你可以存放超過二十億個字符的字符串。當(dāng)你需要存儲大串的字符時,應(yīng)該使用文本型數(shù)據(jù)。注意文本型數(shù)據(jù)沒有長度,而上一節(jié)中所講的字符型數(shù)據(jù)是有長度的。一個文本型字段中的數(shù)據(jù)通常要么為空,要么很大。當(dāng)你從HTMLform的多行文本編輯框(TEXTAREA)中收集數(shù)據(jù)時,你應(yīng)該把收集的信息存儲于文本型字段中。但是,無論何時,只要你能避免使用文本型字段,你就應(yīng)該不適用它。文本型字段既大且慢,濫用文本型字段會使服務(wù)器速度變慢。文本型字段還會吃掉大量的磁盤空間。一旦你向文本型字段中輸入了任何數(shù)據(jù)(甚至是空值),就會有2K的空間被自動分配給該數(shù)據(jù)。除非刪除該記錄,否則你無法收回這部分存儲空間。
比如說,要生成一個10位的隨機(jī)字符串,可以使用如下語句:
運(yùn)行結(jié)果:
該語句只能生成最長32位(但只有0~9,a~f共16種字符)的字符串,如果需要更長的字符,可以使用 concat 函數(shù)連接多個字符串,如下所示:
這個語句可以生成長度為42個字符的字符串。
運(yùn)行結(jié)果:
因?yàn)?uuid() 函數(shù)返回的字符串中會包含特殊字符 "-" , 所以我們需要通過 replace 函數(shù)將這個特殊字符全部替換掉。這種方式會得到一個32位的字符串,如果有長度要求,可以用substring或concat函數(shù)裁剪或拼接。
運(yùn)行結(jié)果:
set global log_bin_trust_function_creators = 1;
DROP FUNCTION IF EXISTS rand_string;
DELIMITER $$
CREATE FUNCTION rand_string(n INT)
RETURNS VARCHAR(255)
BEGIN
DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
DECLARE return_str varchar(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i n DO
SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));
SET i = i +1;
END WHILE;
RETURN return_str;
END $$
DELIMITER ;
經(jīng)測試,函數(shù)創(chuàng)建后與當(dāng)前數(shù)據(jù)庫綁定,下面語句可以查看函數(shù)相關(guān)信息。
復(fù)制代碼代碼如下:
SHOW FUNCTION STATUS WHERE Db='database_name';