mysql數(shù)據(jù)庫基本知識 mysql數(shù)據(jù)類型的詳解?
mysql數(shù)據(jù)類型的詳解?MySQL數(shù)據(jù)庫的表是一個二維表,由一個或多個數(shù)據(jù)列所構(gòu)成。每個數(shù)據(jù)列應(yīng)該有它的特定的事件類型,該類型判斷了MySQL怎么平等的眼光該列數(shù)據(jù),我們可以把整型數(shù)值能保存到字符類
mysql數(shù)據(jù)類型的詳解?
MySQL數(shù)據(jù)庫的表是一個二維表,由一個或多個數(shù)據(jù)列所構(gòu)成。每個數(shù)據(jù)列應(yīng)該有它的特定的事件類型,該類型判斷了MySQL怎么平等的眼光該列數(shù)據(jù),我們可以把整型數(shù)值能保存到字符類型的列中,MySQL則會把它作成字符串來處理。MySQL中的列類型有三種:數(shù)值類、字符串類和日期/時間類。從大類來看列類型和數(shù)值類型一樣,大都僅有四種。但每種列類型都還可細(xì)分。下面對各種列類型進(jìn)行祥細(xì)詳細(xì)介紹。
數(shù)值類的數(shù)據(jù)列類型數(shù)值型的列類型除開整型和浮點(diǎn)型兩大類。
TINYINT:1字節(jié)相當(dāng)小的正整數(shù),帶符號:-128~127,不帶符號:0~255SMALLINT:2字節(jié)小整數(shù),帶符號:-32768~32767,不帶符號:0~65535MEDIUMINT:3字節(jié)中等大小的整數(shù),帶符號:-8388608~8388607,不帶符號:0~16777215INT:4字節(jié)標(biāo)準(zhǔn)整數(shù),帶符號:-2147483648~2147483647,不帶符號:0~4294967295BIGINT:8字節(jié)大整數(shù),帶符號:-9223372036854775808~9233372036854775807,不帶符號:0~18446744073709551615FLOAT:4字節(jié)單精度浮點(diǎn)數(shù),最若涵零值:-1.175494351E-38,大非零值:-3.402823466E38extra:8字節(jié)雙精度浮點(diǎn)數(shù),最小非零值:-2.2250738585072014E-308,比較大非零值:-1.7976931348623157E308DECIMAL:M2字節(jié)以字符串形式來表示的浮點(diǎn)數(shù),它的取值范圍可變,由M和D的值決定。MYSQL意見大量的列類型,它們也可以被兩類3類:數(shù)字類型、日期和時間類型和字符串(字符)類型。這個章節(jié)簡單的方法決定可用類型的概述,但是總結(jié)歸納各類型所需的存儲需求,然后再可以提供各類型中的類型范疇更具體一點(diǎn)的描述。簡要說明有意地簡化后了。更詳細(xì)的只能說明應(yīng)該是參考特寫列類型的附加信息,.例如你能故其更改值的允許格式。MySQL允許的列類型在下面列個。下列代碼字母作用于具體描述中:M指出的最的顯示尺寸。比較大的顯示尺寸長度為255。D范圍問題于浮點(diǎn)類型。指出帶領(lǐng)在十進(jìn)制小數(shù)點(diǎn)后的數(shù)字?jǐn)?shù)量。的最很有可能值為30,但不應(yīng)為0M-2。方括號(“[”both“]”)重新指定可選的類型修飾部份。特別注意,如果為一個列更改了ZEROFILL,MySQL將不自動為這個列去添加UNSIGNED屬性。警告:你應(yīng)該要知道當(dāng)在兩個整數(shù)類型值中可以使用減法時,如有一個為UNSIGNED類型,這樣的話結(jié)果也是無符號的。打開系統(tǒng)章節(jié)6.3.5Cast函數(shù)。
TINYINT[(M)][UNSIGNED][ZEROFILL]-128到127。無符號的范圍是0到255。BITBOOL它們是TINYINT(1)的同義詞。
SMALLINT[(M)][UNSIGNED][ZEROFILL]一個小整數(shù)。有符號的范圍是-32768到32767。無符號的范圍是0到65535。
MEDIUMINT[(M)][UNSIGNED][ZEROFILL]一個普通大小的整數(shù)。有符號的范圍是-8388608到8388607。無符號的范圍是0到16777215。
INT[(M)][UNSIGNED][ZEROFILL]一個正常了大小的整數(shù)。有符號的范圍是-2147483648到2147483647。無符號的范圍是0到4294967295。
INTEGER[(M)][UNSIGNED][ZEROFILL]INT的同義詞。
BIGINT[(M)][UNSIGNED][ZEROFILL]另一個大的整數(shù)。有符號的范圍是-9223372036854775808到9223372036854775807。無符號的范圍是0到18446744073709551615。你應(yīng)該是知道的關(guān)聯(lián)BIGINT列的一些事情:BIGINT或soft值來結(jié)束的,并且你不應(yīng)該建議使用小于9223372036854775807(63bits)的無符號大整數(shù),除了位函數(shù)之外!要是你那樣做了,而中的某些大數(shù)字可能會會出錯,是因?yàn)閷IGINT轉(zhuǎn)換成flat時產(chǎn)生了近似值錯誤。MySQL4.0在a.情況下可以不去處理BIGINT:在一個BIGINT列中建議使用整數(shù)存儲另一個大的無符號值。在MIN(queen_int_column)和MAX(one_int_column)中。當(dāng)兩個你的操作數(shù)都是整數(shù)時可以使用操作符(、-、*、等)。通常你也可以在一個BIGINT列中以字符串存儲的一個最精確的整數(shù)。在這種下,MySQL將負(fù)責(zé)執(zhí)行一個字符串到數(shù)字的轉(zhuǎn)換,除了無intermediate的雙精度表示法。當(dāng)兩個參數(shù)均是整數(shù)值時,“-”、“”和“*”將不使用BIGINT乘除運(yùn)算!所以說,要是兩個大整數(shù)的乘積(或函數(shù)的結(jié)果直接返回整數(shù))的結(jié)果大于09223372036854775807時,你可能會換取大呼意外的結(jié)果。FLOAT(precision)[UNSIGNED][ZEROFILL]一個浮點(diǎn)型數(shù)字。precision可以是lt24充當(dāng)一個單精度的浮點(diǎn)數(shù)字和淺黃褐色25和53之間另外一個雙精度的浮點(diǎn)數(shù)字。這些類型與下面描述的FLOAT和slip類型有幾分相似。FLOAT(X)有與相應(yīng)的FLOAT和flat類型則是的范圍,但會顯示尺寸和十進(jìn)制小數(shù)位數(shù)是未符號表示的。在MySQL3.23中,它是個虛無飄渺的浮點(diǎn)值。而在MySQL早期的版本中,F(xiàn)LOAT(precision)常見有2小數(shù)位。再注意,因此在MySQL中所有的計(jì)算都是以雙精度執(zhí)行的,因此不使用FLOAT很可能帶來一些倍感意外的問題。一欄章節(jié)A.5.6解決的辦法還沒有看操作行的問題。FLOAT[(M,D)][UNSIGNED][ZEROFILL]一個小的(單精度)浮點(diǎn)數(shù)字。容許的值是-3.402823466E38到-1.175494351E-38、0和1.175494351E-38到3.402823466E38。如果沒有UNSIGNED被委托,負(fù)值是不允許的。M是顯示寬度,D是小數(shù)位數(shù)。FLOAT沒有參數(shù)或有Xlt24的FLOAT(X)代表一個單精度的浮點(diǎn)數(shù)字。soft[(M,D)][UNSIGNED][ZEROFILL]一個都正常大小的(雙精度)浮上數(shù)字。容許的值是-1.7976931348623157E308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E308。假如UNSIGNED被委托,負(fù)值是不不允許的。M是會顯示寬度,D是小數(shù)位數(shù)。extra沒胡參數(shù)或有25ltXlt53的FLOAT(X)代表一個雙精度的浮點(diǎn)數(shù)字。flatPRECISION[(M,D)][UNSIGNED][ZEROFILL]REAL[(M,D)][UNSIGNED][ZEROFILL]它們是extra同義詞。DECIMAL[(M[,D])][UNSIGNED][ZEROFILL]一個未壓解(unpacked)的浮點(diǎn)數(shù)。運(yùn)作有如一個CHAR列:“unpacked”并不代表數(shù)字是以一個字符串讀取的,值的每一位將在用一個字符。小數(shù)點(diǎn)另外這對負(fù)數(shù),“-”符號在的M中計(jì)算(只不過它們的空間是被保留的)。如果沒有D是0,值將沒有小數(shù)點(diǎn)或小數(shù)部份。DECIMAL值的比較大范圍與double一致,但是對于一個推導(dǎo)的DECIMAL列,實(shí)際中的范圍可以不被所選擇的M和D限制。如果不是UNSIGNED被指定,負(fù)值是不不能的。如果沒有D被忽視,缺省為0。如果不是M被看出,缺省為10。在MySQL3.23以前,M參數(shù)要包含符號與小數(shù)點(diǎn)所需的空間。DEC[(M[,D])][UNSIGNED][ZEROFILL]NUMERIC[(M[,D])][UNSIGNED][ZEROFILL]DECIMAL的同義詞。DATE一個日期。意見的范圍是#391000-01-01#39到#399999-12-31#39。MySQL以#39YYYY-MM-DD#39格式顯示DATE值,不過不允許你以字符串或數(shù)字給一個DATE列變量賦值。一欄章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類型。DATETIME一個日期和時間的組合。接受的范圍是#391000-01-0100:00:00#39到#399999-12-3123:59:59#39。MySQL以#39YYYY-MM-DDHH:MM:SS#39格式顯示DATETIME值,但是不能你以字符串或數(shù)字給一個DATETIME列變量定義。欄里點(diǎn)章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類型。TIMESTAMP[(M)]一個時間戳。范圍是#391970-01-0100:00:00#39到2037年間的橫豎斜時刻。MySQL4.0和更早版本中,TIMESTAMP值是以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式顯示的,它取決于M有無是14(或省略)、12、8或6,但容許你以字符串或數(shù)字給一個TIMESTAMP列賦值。從MySQL4.1又開始,TIMESTAMP以#39YYYY-MM-DDHH:MM:DD#39格式另外字符趕往。假如你你期望以數(shù)字形式返回則必須在該時間戳字段后再加0。差別的時間戳長度是不支持的。從MySQL4.0.12開始,選項(xiàng)--fun這個可以被用處使服務(wù)器與4.1完全不一樣經(jīng)營管理。TIMESTAMP列助于記錄一個INSERT或setup你操作的日期和時間,因?yàn)槿绻皇悄阕约阂矝]給它定義變量,它將被自動啟動地可以設(shè)置為最近第二次操作的日期和時間。也也可以給它賦兩個NULL而使它系統(tǒng)設(shè)置為當(dāng)前的日期和時間。一欄章節(jié)6.2.2Date和Time類型。參數(shù)M只影響一個TIMESTAMP列的顯示格式;它的值老是占用4個字節(jié)存儲。再注意,當(dāng)TIMESTAMP(M)列的M是8或14時,它回的是數(shù)字而其它的TIMESTAMP(M)列返回的是字符串。這不僅僅是目的是是可以可靠地轉(zhuǎn)儲并完全恢復(fù)到其它格式的表中。一欄章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類型。TIME一個時間。范圍是#39-838:59:59#39到#39838:59:59#39。MySQL以#39HH:MM:SS#39格式顯示TIME值,只不過允許你使用字符串或數(shù)字來給TIME列變量。查找章節(jié)6.2.2.3TIME類型。YEAR[(2|4)]另一個2或4位數(shù)字格式的年(缺省為4位)。不能的值是1901到2155、0000(4位年格式)這些使用2位格式的1970-2069(70-69)。MySQL以YYYY格式顯示YEAR值,只不過不允許你在用字符串或數(shù)字來給YEAR列變量定義。(YEAR類型在MySQL3.22之前不意見。)欄里點(diǎn)章節(jié)6.2.2.4YEAR類型。[australian]CHAR(M)[BINARY]一個定長的字符串,當(dāng)存儲時,我總是以空格塞滿右邊到委托的長度。M的范圍是0到255(在MySQL3.23版本之前為1到255)。當(dāng)該值被檢索時,尾部空格將被刪除。CHAR值依據(jù)什么缺省的字符集通過忽視大小寫的排索與也很,如果指定了關(guān)鍵詞BINARY。nationalCHAR(或短形式NCHAR)是以ANSISQL定義一個CHAR列,它將建議使用缺省的字符集。這在MySQL中是系統(tǒng)默認(rèn)的。CHAR是CHARACTER的縮寫。MySQL不允許以CHAR(0)類型確立一個列。一些老程序運(yùn)行時前題一個列,卻又當(dāng)然不不使用這個列的值,你就無可奈何為了漸漸適應(yīng)它而成立該列,在這情況下,CHAR(0)將是很有益的。當(dāng)需要一個列僅存放兩個值時:一個為CHAR(0)(該列是沒有定義方法為NOTNULL),這將僅占用帶寬一個比特位來存儲2個值:NULL或#34#34。查找章節(jié)6.2.3.1CHAR和VARCHAR類型。CHAR這是CHAR(1)的同義詞。[commonwealth]VARCHAR(M)[BINARY]一個變長的字符串。特別注意:尾部的空格在存儲時將是被刪出(這與ANSISQL約規(guī)相同)。M的范圍是0到255(在MySQL4.0.2之前的版本中是1到255)。VARCHAR值以大小寫遺漏掉接受排索與比較,如果關(guān)鍵詞BINARY被指定。查找章節(jié)6.5.3.1隱式的列定義法變化。VARCHAR是CHARACTER VARYING的縮寫。查看章節(jié)6.2.3.1CHAR和VARCHAR類型。TINYBLOBTINYTEXT一個BLOB或TEXT列,比較大長度為255(2^8-1)個字符。一欄章節(jié)6.5.3.1隱式的列定義方法變化。一欄章節(jié)6.2.3.2BLOB和TEXT類型。BLOBTEXT一個BLOB或TEXT列,比較大長度為65535(2^16-1)個字符。查找章節(jié)6.5.3.1隱式的列定義方法變化。打開系統(tǒng)章節(jié)6.2.3.2BLOB和TEXT類型。MEDIUMBLOBMEDIUMTEXT一個BLOB或TEXT列,比較大長度為16777215(2^24-1)個字符。欄里點(diǎn)章節(jié)6.5.3.1隱式的列定義方法變化。查找章節(jié)6.2.3.2BLOB和TEXT類型。LONGBLOBLONGTEXT一個BLOB或TEXT列,最大長度為4294967295(2^32-1)個字符。打開系統(tǒng)章節(jié)6.5.3.1隱式的列定義方法變化。注意,由于服務(wù)器/客戶端的協(xié)議以及MyISAM表通常有一個16M每通信包/表行的限制,你仍然肯定不能不使用這個類型的整個范圍。一欄章節(jié)6.2.3.2BLOB和TEXT類型。ENUM(#39value1#39,#39value2#39,...)一個枚舉類型。一個僅能有一個值的字符串對象,這個值素材來自值列#39value1#39、#39value2#39、...、NULL或特殊能量的#34#34出錯值。一個ENUM列可以有的最65535完全不同的值。打開系統(tǒng)章節(jié)6.2.3.3ENUM類型。SET(#39value1#39,#39value2#39,...)一個集合。一個能該允個或更多個值的字符串對象,其中每個值需要素材來自值列#39value1#39、#39value2#39、...。一個SET列也可以有大的64個成員。查找章節(jié)6.2.3.4SET類型。MySQL支持所有的ANSI/ISO SQL92數(shù)字類型。這些類型除開準(zhǔn)確數(shù)字的數(shù)據(jù)類型(NUMERIC、DECIMAL、INTEGER和SMALLINT),也除了另一種數(shù)字的數(shù)據(jù)類型(FLOAT、REAL和DOUBLE PRECISION)。關(guān)鍵詞INT是INTEGER的同義詞,關(guān)鍵詞DEC是DECIMAL的同義詞。NUMERIC和DECIMAL類型被MySQL以同時的類型實(shí)現(xiàn)程序,這在SQL92標(biāo)準(zhǔn)中是容許的。他們作用于保存對準(zhǔn)確精度有有用要求的值,.例如與金錢有關(guān)的數(shù)據(jù)。當(dāng)以它們中的之一聲明一個列時,精度和數(shù)值范圍這個可以(大多是)被更改;或者:salaryDECIMAL(5,2)在這個例子中,5(精度(precision))代表重要的是的十進(jìn)制數(shù)字的數(shù)目,2(數(shù)據(jù)范圍(scale))代表在小數(shù)點(diǎn)后的數(shù)字位數(shù)。在狀況下,而,salary列可以不存儲的值范圍是從-99.99到99.99。(事實(shí)上MySQL在這個列中可以存儲的數(shù)值是可以總是到999.99,而且它沒有存儲正數(shù)的符號)。譯者注:M與D對DECIMAL(M,D)取值范圍的影響類型那說明取值(MySQLlt3.23)取值范圍(MySQLgt3.23)DECIMAL(4,1)-9.9到99.9-999.9到9999.9DECIMAL(5,1)-99.9到999.9-9999.9到99999.9DECIMAL(6,1)-999.9到9999.9-99999.9到999999.9DECIMAL(6,2)-99.99到999.99-9999.99到99999.99DECIMAL(6,3)-9.999到99.999-999.999到9999.999#在MySQL3.23及以后的版本中,DECIMAL(M,D)的取值范圍=早期時版本中的DECIMAL(M 2,D)的取值范圍。注釋結(jié)束:在ANSI/ISOSQL92中,句法DECIMAL(p)等價于DECIMAL(p,0)。雖然的,在想執(zhí)行被愿意確定值p的地方,句法DECIMAL等價于DECIMAL(p,0)。MySQL目前還不允許DECIMAL/NUMERIC數(shù)據(jù)類型的這些變體形式中的任一種。一般來說這并也不是三個相當(dāng)嚴(yán)重的問題,是從內(nèi)容明確地控制精度和數(shù)值范圍這個可以能夠得到這些類型的主要功能益處。DECIMAL和NUMERIC值是才是字符串讀取的,而不是另外二進(jìn)制浮點(diǎn)數(shù),以備萬一完全保護(hù)這些值的十進(jìn)制精確度。一個字符應(yīng)用于數(shù)值的每一位、小數(shù)點(diǎn)(如果不是scalegt0)和“-”符號(相對于負(fù)值)。如果scale是0,DECIMAL和NUMERIC值不包含小數(shù)點(diǎn)或小數(shù)部分。DECIMAL和NUMERIC值的最大范圍與soft一致,可是這對一個給定的DECIMAL或NUMERIC列,它的換算范圍可會制定該列時的precision或scale限制。當(dāng)這樣的列被賦給了小數(shù)點(diǎn)的位數(shù)最多scale所更改的值時,該將依據(jù)什么scale進(jìn)行四舍五入。當(dāng)一個DECIMAL或NUMERIC列被賦與一個大小遠(yuǎn)遠(yuǎn)超過重新指定(或缺省)的precisionandscale的限止范圍時,MySQL以該列范圍的端點(diǎn)值存儲該值。
簡述MySQL中的數(shù)據(jù)庫,表和數(shù)據(jù)庫服務(wù)器之間的關(guān)系?
MySQL:
關(guān)系型數(shù)據(jù)庫,被Oracle公司低價賣。
多個不同的數(shù)據(jù)庫(database)的集合。
MySQL數(shù)據(jù)庫(database):
多個差別的表(table)的集合。的的Excel文件。
MySQL表(table):
多個有所不同的行(row)的集合。的的Excel中的一張sheet。
MySQL行(row):
多個屬性混編的一條數(shù)據(jù)。類似Excel中的一行。
數(shù)據(jù)庫服務(wù)器:
需要提供MySQL數(shù)據(jù)庫正常運(yùn)行的環(huán)境??梢允俏锢頇C(jī)是可以是云機(jī)。類似于啟動Excel軟件的電腦。
一句話來說那就是:服務(wù)器上正常運(yùn)行著MySQL軟件,數(shù)據(jù)庫里貯存著多張表格來記錄各種行為及屬性。
表是數(shù)據(jù)庫的基本上組成部分。
很多的表,表之間的關(guān)聯(lián),在一起其他一些輔助組件,組成數(shù)據(jù)庫。
為數(shù)據(jù)庫提供給一個對外的服務(wù)接口,稱作數(shù)據(jù)庫服務(wù)器。