<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    甜咖啡

    我的IT空間

    Mysql數據類型

    表類型
    MySQL的數據表類型很多,其中比較重要的是MyISAM,InnoDB這兩種。
    這兩種類型各有優缺點,需要根據實際情況選擇適合的,MySQL支持對不同的表設置不同的類型。下面做個對比:
    MyISAM表類型是一種比較成熟穩定的表類型,但是MyISAM對一些功能不支持。
    MyISAMInnoDB
    事務不支持支持
    數據行鎖定不支持,只有表鎖定支持
    外鍵約束不支持支持
    表空間大小相對小相對大,最大是2倍
    全文索引支持不支持
    GIS數據支持不支持
    COUNT問題執行COUNT(*)查詢時,速度慢
    一般情況下我覺得選擇MyISAM就行,如果需要事務,或者需要很多用戶同時修改某個數據表里的數據時,可以考慮InnoDB數據表。
    數據類型
    1.整型(xxxint)
    MySQL數據類型含義
    tinyint(m)1個字節表示(-128~127)
    smallint(m)2個字節表示(-32768~32767)
    mediumint(m)3個字節表示(-8388608~8388607)
    int(m)4個字節表示(-2147483648~2147483647)
    bigint(m)8個字節表示(+-9.22*10的18次方)
    右側的取值范圍是在未加unsigned關鍵字的情況下,如果加了unsigned,則最大值翻倍,如tinyint unsigned的取值范圍為(0~256)。
    書上說int(m)括弧里的m是表示SELECT查詢結果集中的顯示寬度,并不影響實際的取值范圍,我測了一下,定義一個字段number 類型為int(4),插入一條記錄"123456",用mysql query broswer執行SELECT查詢,返回的結果集中123456正確顯示,沒有影響到顯示的寬度,不知道這個m有什么用。

    2.浮點型(float和double)
    MySQL數據類型含義
    float(m,d)單精度浮點型,8位精度(4字節),m是十進制數字的總個數,
    d是小數點后面的數字個數。
    double(m,d)雙精度浮點型,16位精度(8字節)
    參數m只影響顯示效果,不影響精度,d卻不同,會影響到精度。
    比如設一個字段定義為float(5,3),如果插入一個數123.45678,實際數據庫里存的是123.457,小數點后面的數別四舍五入截成457了,但總個數不受到限制(6位,超過了定義的5位)。

    3.定點數(decimal)
    decimal(m,d) 定點類型
    浮點型在數據庫中存放的是近似值,而定點類型在數據庫中存放的是精確值。參數m是定點類型數字的最大個數(精度),范圍為0~65,d小數點右側數字的個數,范圍為0~30,但不得超過m。
    對定點數的計算能精確到65位數字。

    4.字符串(char,varchar,xxxtext)
    MySQL數據類型含義
    char(n)固定長度的字符串,最多255個字符
    varchar(n)固定長度的字符串,最多65535個字符
    tinytext可變長度字符串,最多255個字符
    text可變長度字符串,最多65535個字符
    mediumtext可變長度字符串,最多2的24次方-1個字符
    longtext可變長度字符串,最多2的32次方-1個字符
    char和varchar:
    1.都可以通過指定n,來限制存儲的最大字符數長度,char(20)和varchar(20)將最多只能存儲20個字符,超過的字符將會被截掉。n必須小于該類型允許的最大字符數。
    2.char類型指定了n之后,如果存入的字符數小于n,后面將會以空格補齊,查詢的時候再將末尾的空格去掉,所以char類型存儲的字符串末尾不能有空格,varchar不受此限制。
    3.內部存儲的機制不同。char是固定長度,char(4)不管是存一個字符,2個字符或者4個字符(英文的),都將占用4個字節,varchar是存入的實際字符數+1個字節(n<=255)或2個字節(n>255),所以varchar(4),存入一個字符將占用2個字節,2個字符占用3個字節,4個字符占用5個字節。
    4.char類型的字符串檢索速度要比varchar類型的快。

    varchar和text:
    1.都是可變長度的,最多能存儲65535個字符。
    2.varchar可指定n,text不能指定,內部存儲varchar是存入的實際字符數+1個字節(n<=255)或2個字節(n>255),text是實際字符數+2個字節。
    3.text類型不能有默認值。
    4.varchar可直接創建索引,text創建索引要指定前多少個字符。查詢速度varchar要快于text,在都創建了索引的情況下,text的索引好像沒起作用,參見這篇文章:http://forums.mysql.com/read.php?24,105964,105964

    5.二進制數據(xxxBlob)
    XXXBLOB和xxxtext是對應的,不過存儲方式不同,xxxTEXT是以文本方式存儲的,如果存儲英文的話區分大小寫,而xxxBlob是以二進制方式存儲的,不區分大小寫。
    xxxBlob存儲的數據只能整體讀出。
    xxxTEXT可以指定字符集,xxxblob不用指定字符集。

    6.日期時間類型(date,time,datetime,timestamp)
    MySQL數據類型含義
    date日期'2008-12-2'
    time時間'12:25:36'
    datetime日期時間'2008-12-2 22:06:44'
    timestamp不固定
    timestamp比較特殊,如果定義一個字段的類型為timestamp,這個字段的時間會在其他字段修改的時候自動刷新。所以這個數據類型的字段可以存放這條記錄最后被修改的時間,而不是真正來的存放時間。
    數據類型的屬性
    MySQL關鍵字含義
    NULL數據列可包含NULL值
    NOT NULL數據列不允許包含NULL值
    DEFAULT xxx默認值,如果插入記錄的時候沒有指定值,將取這個默認值
    PRIMARY KEY主鍵
    AUTO_INCREMENT遞增,如果插入記錄的時候沒有指定值,則在上一條記錄的值上加1,僅適用于整數類型
    UNSIGNED無符號
    CHARACTER SET name指定一個字符集

    posted on 2011-06-27 09:24 甜咖啡 閱讀(404) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    <2011年6月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    統計

    常用鏈接

    留言簿(1)

    我參與的團隊

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 77777午夜亚洲| 亚洲人成7777影视在线观看| 国产成人 亚洲欧洲| 免费看美女被靠到爽的视频| 亚洲精品国产首次亮相| 免费黄色毛片视频| 青草久久精品亚洲综合专区| 国产精品无码一区二区三区免费 | 亚洲A∨精品一区二区三区下载| 一个人免费观看视频www| 亚洲精品精华液一区二区 | 亚洲精品国产字幕久久不卡| 任你躁在线精品免费| 亚洲第一视频网站| 麻花传媒剧在线mv免费观看| 亚洲av无码国产综合专区| 四虎成人免费观看在线网址| 美女扒开尿口给男人爽免费视频| 亚洲美女高清一区二区三区 | 精品熟女少妇aⅴ免费久久| 久久亚洲国产欧洲精品一| 日本免费一区二区三区四区五六区 | 一本色道久久综合亚洲精品高清| 中文字幕乱码免费看电影| 亚洲黄色在线视频| 日韩免费观看的一级毛片| 国产亚洲情侣久久精品| 亚洲国产成人片在线观看无码| 99热这里有免费国产精品| 亚洲日韩精品国产3区| 亚洲日韩在线中文字幕第一页| 黄色网址在线免费| 亚洲综合国产成人丁香五月激情 | 狠狠亚洲婷婷综合色香五月排名 | jizz18免费视频| 亚洲视频国产精品| 免费女人18毛片a级毛片视频| 永久免费AV无码网站国产| 日韩亚洲国产高清免费视频| 国产成人亚洲精品影院| 亚洲成在人线aⅴ免费毛片|