mysql中常见的数据类型
一:MySQL数据类型
MySQL中定义数据字段的类型对你数据库的优化是非常重要的
MySQL支持多种数据类型,大致可以分为三类:数值 日期/时间和字符串
二、数值类型
1.整数类型
2.浮点数
如果希望保证值比较准确,推荐使用定点数数据类型。MySql中的浮点类型有float,double和real。他们定义方式为:FLOAT(M,D) 、 REAL(M,D) 、 DOUBLE PRECISION(M,D)。
FLOAT和DOUBLE中的M和D的取值默认都为0,即除了最大最小值,不限制位数。允许的值理论上是-1.7976931348623157E+308~-2.2250738585072014E-308、0和2.2250738585072014E-308~1.7976931348623157E+308。M、D范围如下:
(MySql5.7实测,与IEEE标准计算的实际是不同的,下面介绍):M取值范围为0~255。FLOAT只保证6位有效数字的准确性,所以FLOAT(M,D)中,M<=6时,数字通常是准确的。如果M和D都有明确定义,其超出范围后的处理同decimal。
D取值范围为0~30,同时必须<=M。double只保证16位有效数字的准确性,所以DOUBLE(M,D)中,M<=16时,数字通常是准确的。如果M和D都有明确定义,其超出范围后的处理同decimal。
CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉,所以,我们在存储时字符串右边不能有空格,即使有,查询出来后也会被删除。在存储或检索过程中不进行大小写转换。
三、时间日期类型(5)
该“0”值如下:
请点击输入图片描述
四、各种类型占用的存储
1.数值类型
请点击输入图片描述
定点数的比较特殊,而且与具体版本也有关系,此处单独解释:
使用二进制格式将9个十进制(基于10)数压缩为4个字节来表示DECIMAL列值。每个值的整数和分数部分的存储分别确定。每个9位数的倍数需要4个字节,并且“剩余的”位需要4个字节的一部分。下表给出了超出位数的存储需求:
请点击输入图片描述
2.时间日期
请点击输入图片描述
从版本5.6.4开始,存储需求就有所改变,根据精度而定。不确定部分需要的存储如下:
请点击输入图片描述
比如,TIME(0), TIME(2), TIME(4), 和TIME(6) 分别使用3, 4, 5, 6 bytes。
3.字符串
请点击输入图片描述
4.类型的选择
为了优化存储,在任何情况下均应使用最精确的类型。
例如,如果列的值的范围为从1到99999,若使用整数,则MEDIUMINT UNSIGNED是好的类型。在所有可以表示该列值的类型中,该类型使用的存储最少。
用精度为65位十进制数(基于10)对DECIMAL 列进行所有基本计算(+、-、*、/)。
使用双精度操作对DECIMAL值进行计算。如果准确度不是太重要或如果速度为最高优先级,DOUBLE类型即足够了。为了达到高精度,可以转换到保存在BIGINT中的定点类型。这样可以用64位整数进行所有计算,根据需要将结果转换回浮点值。
5.使用其他数据库的SQL语句
为了使用为其它数据库编写的SQL执行代码,MySQL按照下表所示对列类型进行映射。通过这些映射,可以很容易地从其它数据库引擎将表定义导入到MySQL中:
请点击输入图片描述
绛旓細MySQL涓殑鏁版嵁绫诲瀷锛1. 鏁板肩被鍨 鏁存暟绫诲瀷锛氬寘鎷琓INYINT銆丼MALLINT銆丮EDIUMINT銆両NT鍜孊IGINT銆傝繖浜涚被鍨嬬敤浜庡瓨鍌ㄦ暣鏁帮紝鏍规嵁鍏跺悕绉扮殑涓嶅悓锛屽瓨鍌ㄧ殑鏁板煎ぇ灏忓拰鑼冨洿涔熸湁鎵涓嶅悓銆傚皬鏁板拰娴偣鏁扮被鍨嬶細鍖呮嫭FLOAT銆丏OUBLE鍜孌ECIMAL銆傝繖浜涚被鍨嬬敤浜庡瓨鍌ㄥ皬鏁帮紝鍏朵腑DECIMAL绫诲瀷鍏佽鐢ㄦ埛鎸囧畾灏忔暟鐐瑰墠鍚庣殑浣嶆暟銆2. 瀛楃涓茬被鍨 ...
绛旓細涓銆佹暟鍊肩被鍨 1. 鏁存暟绫诲瀷锛氬寘鎷琓INYINT銆丼MALLINT銆丮EDIUMINT銆両NT鍜孊IGINT銆傝繖浜涚被鍨嬬敤浜庡瓨鍌ㄦ暣鏁帮紝鑼冨洿浠-2^浣嶆暟鍒2^浣嶆暟-1銆2. 灏忔暟鍜屾诞鐐规暟锛氬寘鎷現LOAT銆丏OUBLE鍜孌ECIMAL銆傝繖浜涚被鍨嬬敤浜庡瓨鍌ㄥ皬鏁扮偣鍚庢湁鏁板肩殑鏁版嵁锛岀簿纭害鍜岃寖鍥村彇鍐充簬鍏蜂綋鐨勬暟鍊煎ぇ灏忓拰绮惧害璁惧畾銆備簩銆鏃ユ湡鍜屾椂闂寸被鍨 1. 鏃ユ湡绫诲瀷锛欴AT...
绛旓細MySQL鏁版嵁绫诲瀷鏈 鏁存暟绫诲瀷锛欱IT銆丅OOL銆乀INY INT銆丼MALL INT銆丮EDIUM INT銆 INT銆 BIG INT 娴偣鏁扮被鍨嬶細FLOAT銆丏OUBLE銆丏ECIMAL 瀛楃涓茬被鍨锛欳HAR銆乂ARCHAR銆乀INY TEXT銆乀EXT銆丮EDIUM TEXT銆丩ONGTEXT銆乀INY BLOB銆丅LOB銆丮EDIUM BLOB銆丩ONG BLOB 鏃ユ湡绫诲瀷锛欴ate銆丏ateTime銆乀imeStamp銆乀ime銆乊ear 鍏朵粬鏁版嵁绫诲瀷...
绛旓細MySQL鏁版嵁搴撲富瑕佹湁浠ヤ笅绫诲瀷锛1. 鍏崇郴鍨嬫暟鎹簱锛圧DBMS锛夊叧绯诲瀷鏁版嵁搴撴槸MySQL涓渶甯歌鍜屽簲鐢ㄦ渶骞挎硾鐨勬暟鎹簱绫诲瀷銆傚畠閲囩敤鍏崇郴妯″瀷鏉ュ瓨鍌ㄥ拰绠$悊鏁版嵁锛屼互琛ㄦ牸鐨勫舰寮忕粍缁囧拰瀛樺偍鏁版嵁锛屽叿鏈夊己澶х殑鏁版嵁鎿嶄綔鍔熻兘锛屽寘鎷暟鎹煡璇佹彃鍏ャ佹洿鏂板拰鍒犻櫎绛夈2. 鍒楀紡瀛樺偍鏁版嵁搴 鍒楀紡瀛樺偍鏁版嵁搴撴槸MySQL涓竴绉嶇壒娈婄殑鏁版嵁搴撶被鍨...
绛旓細棣栧厛锛涓叉暟鎹被鍨嬫槸鏈甯哥敤鐨勪竴绉锛岀敤浜庡瓨鍌ㄥ鍚嶅瓧銆佸湴鍧鍜岀數璇濆彿鐮佺瓑鏂囨湰淇℃伅銆傚垎涓哄畾闀夸覆锛堝CHAR锛岄暱搴﹀湪鍒涘缓鏃剁‘瀹氾級鍜屽彉闀夸覆锛堝TEXT锛屽彲瀛樺偍涓嶅悓闀垮害鐨勬枃鏈紝浣嗗彉闀垮垪澶勭悊閫熷害杈冩參涓斾笉鏀寔绱㈠紩锛夈侰HAR鍜孷ARCHAR锛堝彲鍙橀暱搴︼紝涓嶈秴杩255瀛楄妭锛夋槸瀹氶暱涓茬殑涓ょ褰㈠紡锛岃孴EXT銆乀INYTEXT鍜孡ONGTEXT鍒欐敮鎸佹洿...
绛旓細Mysql鏀寔鐨勫绉嶆暟鎹被鍨嬩富瑕佹湁锛氭暟鍊兼暟鎹被鍨嬨佹棩鏈/鏃堕棿绫诲瀷銆佸瓧绗︿覆绫诲瀷銆1銆丮ysql鏀寔鎵鏈夋爣鍑哠QL涓殑鏁板肩被鍨锛屽叾涓寘鎷暣鏁板瀷鐨則inyint鍜宐igint锛屽皬鏁板瀷鐨刣ecimal銆2銆丮ySQL鎻愪緵浜8涓熀鏈殑瀛楃涓茬被鍨,鍙互瀛樺偍鐨勮寖鍥翠粠绠鍗曠殑瀛楃鎴浜岃繘鍒跺瓧绗︿覆鏁版嵁銆3銆佸湪澶勭悊鏃ユ湡鍜屾椂闂寸被鍨鐨勫兼椂锛孧ySQL甯︽湁5涓笉...
绛旓細MySQL鏁版嵁搴撶殑绫诲瀷鏈変互涓嬪嚑绉嶏細鍏崇郴鍨嬫暟鎹簱锛圧DBMS锛塎ySQL鏄竴涓叧绯诲瀷鏁版嵁搴撶鐞嗙郴缁燂紝杩欐槸瀹冩渶甯歌鐨勭被鍨嬨傚叧绯诲瀷鏁版嵁搴撳皢鏁版嵁瀛樺偍鍦ㄨ〃涓紝姣忎釜琛ㄩ兘鏈夌壒瀹氱殑缁撴瀯锛岀敱琛屽拰鍒楃粍鎴愩傝繖绉嶆暟鎹簱閫氳繃SQL锛堢粨鏋勫寲鏌ヨ璇█锛夎繘琛屾暟鎹殑澧炲垹鏀规煡鎿嶄綔銆侻ySQL鐨勫叧绯诲瀷鏁版嵁搴撶壒鐐规槸鏀寔ACID浜嬪姟灞炴э紝淇濊瘉鏁版嵁鐨...
绛旓細涓锛歁ySQL鏁版嵁绫诲瀷 MySQL涓畾涔夋暟鎹瓧娈电殑绫诲瀷瀵逛綘鏁版嵁搴撶殑浼樺寲鏄潪甯搁噸瑕佺殑 MySQL鏀寔澶氱鏁版嵁绫诲瀷锛屽ぇ鑷村彲浠ュ垎涓轰笁绫伙細鏁板 鏃ユ湡/鏃堕棿鍜屽瓧绗︿覆 浜屻佹暟鍊肩被鍨 1.鏁存暟绫诲瀷 2.娴偣鏁 濡傛灉甯屾湜淇濊瘉鍊兼瘮杈冨噯纭紝鎺ㄨ崘浣跨敤瀹氱偣鏁版暟鎹被鍨嬨侻ySql涓殑娴偣绫诲瀷鏈塮loat锛宒ouble鍜宺eal銆備粬浠畾涔夋柟寮忎负锛欶LOAT(M,D)...
绛旓細MySQL鏀寔鎵鏈夋爣鍑哠QL鏁板兼暟鎹被鍨嬨傚寘鎷弗鏍兼暟鍊兼暟鎹被鍨(INTEGER銆丼MALLINT銆丏ECIMAL鍜孨UMERIC)锛屼互鍙婅繎浼兼暟鍊兼暟鎹被鍨(FLOAT銆丷EAL鍜孌OUBLE PRECISION)銆傝〃绀烘椂闂村肩殑鏃ユ湡鍜屾椂闂寸被鍨涓篋ATETIME銆丏ATE銆乀IMESTAMP銆乀IME鍜孻EAR銆瀛楃涓茬被鍨鎸嘋HAR銆乂ARCHAR銆丅INARY銆乂ARBINARY銆丅LOB銆乀EXT銆丒NUM鍜孲ET銆侲NUM鏄灇涓剧被鍨...
绛旓細1. MySQL鏁版嵁绫诲瀷鍦MySQL涓鏈夊涓嬪嚑绉嶆暟鎹被鍨嬶細锛1锛夋暟鍊煎瀷鏁板兼槸璇稿32 鎴153.4 杩欐牱鐨勫笺侻ySQL 鏀寔绉戝琛ㄧず娉曪紝绉戝琛ㄧず娉曠敱鏁存暟鎴栨诞鐐规暟鍚庤窡鈥渆鈥濇垨鈥淓鈥濄佷竴涓鍙凤紙鈥+鈥濇垨鈥-鈥濓級鍜屼竴涓暣鏁版寚鏁版潵琛ㄧず銆1.24E+12 鍜23.47e-1 閮芥槸鍚堟硶鐨勭瀛﹁〃绀烘硶琛ㄧず鐨勬暟銆傝1.24E12 涓嶆槸鍚堟硶...