A. mysql中常見的數據類型
一:MySQL數據類型
MySQL中定義數據欄位的類型對你資料庫的優化是非常重要的
MySQL支持多種數據類型,大致可以分為三類:數值 日期/時間和字元串
二、數值類型
1.整數類型
B. sql語句分幾類,sql資料庫都有哪幾種數據類型
一、 整數數據類型
整數數據類型是最常用的數據類型之一。
1、INT (INTEGER)
INT (或INTEGER)數據類型存儲從-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之間的所有正負整數。每個INT 類型的數據按4 個位元組存儲,其中1 位表示整數值的正負號,其它31 位表示整數值的長度和大小。
2、SMALLINT
SMALLINT 數據類型存儲從-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之間的所有正負整數。每個SMALLINT 類型的數據佔用2 個位元組的存儲空間,其中1 位表示整數值的正負號,其它15 位表示整數值的長度和大小。
3、TINYINT
TINYINT數據類型存儲從0 到255 之間的所有正整數。每個TINYINT類型的數據佔用1 個位元組的存儲空間。
4、BIGINT
BIGINT 數據類型存儲從-2^63 (-9 ,223, 372, 036, 854, 775, 807) 到2^63-1( 9, 223, 372, 036 ,854 ,775, 807) 之間的所有正負整數。每個BIGINT 類型的數據佔用8個位元組的存儲空間。
二、 浮點數據類型
浮點數據類型用於存儲十進制小數。浮點數值的數據在SQL Server 中採用上舍入(Round up 或稱為只入不舍)方式進行存儲。所謂上舍入是指,當(且僅當)要舍入的數是一個非零數時,對其保留數字部分的最低有效位上的數值加1 ,並進行必要的進位。若一個數是上舍入數,其絕對值不會減少。如:對3.14159265358979 分別進行2 位和12位舍入,結果為3.15 和3.141592653590。
1、REAL 數據類型
REAL數據類型可精確到第7 位小數,其范圍為從-3.40E -38 到3.40E +38。 每個REAL類型的數據佔用4 個位元組的存儲空間。
2、FLOAT
FLOAT數據類型可精確到第15 位小數,其范圍為從-1.79E -308 到1.79E +308。 每個FLOAT 類型的數據佔用8 個位元組的存儲空間。 FLOAT數據類型可寫為FLOAT[ n ]的形式。n 指定FLOAT 數據的精度。n 為1到15 之間的整數值。當n 取1 到7 時,實際上是定義了一個REAL 類型的數據,系統用4 個位元組存儲它;當n 取8 到15 時,系統認為其是FLOAT 類型,用8 個位元組存儲它。
3、DECIMAL
DECIMAL數據類型可以提供小數所需要的實際存儲空間,但也有一定的限制,您可以用2 到17 個位元組來存儲從-10的38次方-1 到10的38次方-1 之間的數值。可將其寫為DECIMAL[ p [s] ]的形式,p 和s 確定了精確的比例和數位。其中p 表示可供存儲的值的總位數(不包括小數點),預設值為18; s 表示小數點後的位數,預設值為0。 例如:decimal (15 5),表示共有15 位數,其中整數10 位,小數5。 位表4-3 列出了各精確度所需的位元組數之間的關系。
C. MySQL的數據類型和建庫策略詳解
無論是在小得可憐的免費資料庫空間或是大型電子商務網站 合理的設計表結構 充分利用空間是十分必要的 這就要求我們對資料庫系統的常用數據類型有充分的認識 下面我就將我的一點心得寫出來跟大家分享
一 數字類型
數字類型按照我的分類方法分為三類 整數類 小數類和數字類
我所謂的 數字類 就是指DECIMAL和NUMERIC 它們是同一種類型 它嚴格的說不是一種數字類型 因為他們實際上是將數字以字元串形式保存的 他的值的每一位(包括小數點)佔一個位元組的存儲空間 因此這種類型耗費空間比較大 但是它的一個突出的優點是小數的位數固定 在運算中不會 失真 所以比較適合用於 價格 金額 這樣對精度要求不高但准確度要求非常高的欄位
小數類 即浮點數類型 根據精度的不同 有FLOAT(單精度)和DOUBLE(雙精度)兩種 它們的優勢是精確度 FLOAT可以表示絕對值非常小 小到約 E ( 小數點後面有 個零)的小數 而DOUBLE更是可以表示絕對值小到約 E ( 小數點後面有 個零)的小數 FLOAT類型和DOUBLE類型佔用存儲空間分別是 位元組和 位元組 如果需要用到小數的欄位 精度要求不高的 當然用FLOAT了!可是說句實在話 我們 民用 的數據 哪有要求精度那麼高的呢?這兩種類型至今我沒有用過——我還沒有遇到適合於使用它們的事例
用的最多的 最值得精打細算的 是整數類型 從只佔一個位元組存儲空間的TINYINT到占 個位元組的BIGINT 挑選一個 夠用 並且佔用存儲空間最小的類型是設計資料庫時應該考慮的 TINYINT SMALLINT MEDIUMINT INT和BIGINT佔用存儲空間分別為 位元組 位元組 位元組 位元組和 位元組 就無符號的整數而言 這些類型能表示的最大整數分別為 和 如果用來保存用戶的年齡(舉例來說 資料庫中保存年齡是不可取的) 用TINYINT就夠了 九城的《縱橫》里 各項技能值 用SMALLINT也夠了 如果要用作一個肯定不會超過 行的表的AUTO_INCREMENT的IDENTIFY欄位 當然用 MEDIUMINT 不用 INT 試想 每行節約一個位元組 行可以節約 兆多呢!
二 日期時間類型
日期和時間類型比較簡單 無非是 DATE TIME DATETIME TIMESTAMP和YEAR等幾個類型 只對日期敏感 而對時間沒有要求的欄位 就用DATE而不用DATETIME是不用說的了 單獨使用時間的情況也時有發生——使用TIME 但最多用到的還是用DATETIME 在日期時間類型上沒有什麼文章可做 這里就不再詳述
三 字元(串)類型
不要以為字元類型就是 CHAR !CHAR和VARCHAR的區別在於CHAR是固定長度 只要你定義一個欄位是CHAR( ) 那麼不論你存儲的數據是否達到了 個位元組 它都要佔去 個位元組的空間 而VARVHAR則是可變長度的 如果一個欄位可能的值是不固定長度的 我們只知道它不可能超過 個字元 把它定義為 VARCHAR( )是最合算的 VARCHAR 類型的實際長度是它的值的(實際長度+ ) 為什麼 + 呢?這一個位元組用於保存實際使用了多大的長度呀!從這個 + 中也應該看到 如果一個欄位 它的可能值最長是 個字元 而多數情況下也就是用到了 個字元時 用VARCHAR就不合算了 因為在多數情況下 實際佔用空間是 個位元組 比用CHAR( )還多佔用一個位元組!
舉個例子 就是一個存儲股票名稱和代碼的表 股票名稱絕大部分是四個字的 即 個位元組 股票代碼 上海的是六位數字 深圳的是四位數字 這些都是固定長度的 股票名稱當然要用 CHAR( ) 股票代碼雖然是不固定長度 但如果使用VARVHAR( ) 一個深圳的股票代碼實際佔用空間是 個位元組 而一個上海的股票代碼要佔用 個位元組!考慮到上海的股票數目比深圳的多 那麼用VARCHAR( )就不如CHAR( )合算了
雖然一個CHAR或VARVHAR的最大長度可以到 我認為大於 的CHAR是幾乎用不到的——很少有大於 個位元組長度的固定長度的東東吧?不是固定長度的就用VARCHAR!大於 的VARCHAR也是幾乎用不到的——比這更大的用TEXT就好了 TINYTEXT 最大長度為 佔用空間也是(實際長度+ ) TEXT 最大長度 佔用空間是(實際長度+ ) MEDIUMTEXT 最大長度 佔用空間是(實際長度+ ) LONGTEXT 最大長度 佔用空間是(實際長度+ ) 為什麼 + ? + ? + ? + ?你要是還不知道就該打PP了 這些可以用在論壇啊 新聞啊 什麼的 用來保存文章的正文 根據實際情況的不同 選擇從小到大的不同類型
四 枚舉和集合類型
枚舉(ENUM)類型 最多可以定義 種不同的字元串從中做出選擇 只能並且必須選擇其中一種 佔用存儲空間是一個或兩個位元組 由枚舉值的數目決定 集合(SET)類型 最多可以有 個成員 可以選擇其中的零個到不限定的多個 佔用存儲空間是一個到八個位元組 由集合可能的成員數目決定
舉個例子來說 在SQLServer中 你可以節約到用一個Bit類型來表示性別(男/女) 但MySQL沒有Bit 用TINTINT?不 可以用ENUM( 帥哥 美眉 )!只有兩種選擇 所以只需一個位元組——跟TINYINT一樣大 但卻可以直接用字元串 帥哥 和 美眉 來存取 真是太方便啦!
lishixin/Article/program/MySQL/201311/29648
D. sql和mysql的區別是什麼
sql和mysql的區別是:
1、本質上:
SQL,是一種資料庫語言,有標準的,相當於C語言;而MySQL是DBMS,資料庫管理系統,是一個資料庫軟體或應用程序。
2、目的上:
SQL用於訪問,更新和操作資料庫中的數據;而MySQL是一種RDBMS,它允許保持資料庫中存在的數據。
3、更新上:
SQL的語言是固定的,命令保持不變;而MySQL可以獲得頻繁的更新。
4、使用上:
要學習SQL語言了才能有效地使用它;而,MySQL可以通過下載和安裝就可輕松獲得並使用。