1. 程式人生 > >資料庫選擇合適的資料型別

資料庫選擇合適的資料型別

char與varchar
區別一,定長和變長
char 表示定長,長度固定,varchar表示變長,即長度可變

區別之二,儲存的容量不同
對char來說,最多能存放的字元個數 255,和編碼無關。
而varchar呢,最多能存放 65532 個字元。

char和varchar類似,都是用來儲存字串,但它們儲存和檢索的方式不同。char屬於固定長度的字元型別,而varchar屬於可變長度的字元型別。

應用場景:
由於char是固定長度的,所以它的處理速度比varchar快得多,但是其缺點是浪費儲存空間,程式需要對行尾空格進行處理,所以對於那些長度變化不大並且對查詢速度有較高要求的資料可以考慮使用char型別來儲存。

長度變化大,應該用varchar.(因為char是定長的)

Text與Blob
一般在儲存少量字串的時候,我們會選擇char或者varchar;而在儲存較大文字時,通常會選擇使用text或者blob。二者之間的主要區別是blob能用來儲存二進位制資料,比如照片。

text只能儲存字元資料,比如一篇文章或者日記。

對於含有text和blob欄位的表,如果經常做刪除和修改記錄的操作要定時執行optimize table功能對錶進行碎片整理。

浮點數與定點數
浮點數(float double )一般用於表示含有小數部分的數值。當一個欄位被定義為浮點型別後,如果插入資料的精度超過該列定義的實際精度,則插入值會被四捨五入到實際定義的精度值。
例如:插入值1.23456,該值會被截斷,並儲存為1.2

例如插入一個數131072.32變為131072.31,這是數值使用單精度浮點數表示時,產生了誤差。這是浮點數特有的問題,因此在精度要求比較高的應用中(比如貨幣)要使用定點數而不是浮點數來儲存資料。

定點數(decimal)實際上是以字串形式存放的,所以定點數可以更精確地儲存資料。對於精度要求更高的應用中,建議使用定點數來儲存數值,保證結果的準確性。

所以使用浮點數和定點數是,使用者應該考慮到以下幾個原則:
1.浮點數(float double)存在誤差
2.對於貨幣等對精度敏感的資料,應該使用定點數(decimal)表示或儲存
3.在程式設計中,如果用到浮點數,要特別注意誤差問題,並特別注意 誤差問題,並儘量避免做浮點數比較。
4.要注意浮點數中一些特殊值的處理。

日期型別選擇
如果只需要記錄年份,那麼用一個位元組來儲存year型別完全可以滿足。

如果要記錄年月日時分秒,並且記錄的年份比較久遠,那麼最好使用datatime,而不是timestamp。因為timestamp表示的日期範圍比datatime要短得多。

如果記錄的日期需要讓不同時區的使用者使用,那麼最好使用timestamp,因為日期型別中只有它能和實際時區相對應。

相關推薦

資料庫選擇合適資料型別

char與varchar 區別一,定長和變長 char 表示定長,長度固定,varchar表示變長,即長度可變 區別之二,儲存的容量不同 對char來說,最多能存放的字元個數 255,和編碼無關。 而varchar呢,最多能存放 65532 個字元。

Mysql的基本使用(登陸&退出、建立&刪除&選擇資料庫、基本資料型別、建立&刪除表格等)

登入mysql資料庫 mysql -h hostname -u username -p 如何hostname是本機的話,要替換為127.0.0.1或者是localhost 例子:mysql -h localhost -uroot -p 這樣輸完之後會換行讓你輸密碼,我們也可以直接把密

Mysql的基本使用(登陸&退出、建立&刪除&選擇資料庫、基本資料型別、建立&刪除表格等)

登入mysql資料庫 mysql -h hostname -u username -p 如何hostname是本機的話,要替換為127.0.0.1或者是localhost 例子:mysql -h localhost -uroot -p 這樣輸完之後會換行讓你輸密碼,我

mysql資料庫學習04-資料型別

1、字串 char: 定長字串,可以在後面的小括號中指定固定長度;例如:char(4),表示固定字元長度為4. 如果存"abc",會被儲存為“abc ”,不足4位會在右邊用空格填充。最多支援255個位元組。 varchar: 變長字串,可以在後面的小括號中指定最長字串長度;例如:va

Mysql 選擇優化資料型別

原則: 更小的通常更好(一般情況下,儘量使用最小的資料型別) 簡單就好 儘量避免NULL 整數型別 實數型別 字串型別   VARCHAR:可變長字串。VARCHAR需要使用1或兩個額外位元組來記錄字串長度。所以VARCHAR型別最大長度不能超過  65535。(字元

oracle資料庫——常用的資料型別

  2018-12-19    23:08:03   oracle資料庫中常用的資料型別有23種,我們把資料型別分為字元型、數字型、日期型和其他資料型別。 一、字元型: 資料型別 取值範圍 (位元組) 說明 v

資料庫中的----資料型別

資料型別 資料型別分類 數值型別 tinyint型別 無符號型別 bit型別 小數型別 float型 decimal型 decimal和float區別

資料庫 引擎,資料型別,約束

引擎(****) 前提: 引擎是建表是規定, 提供給表使用的, 不是資料庫​mysql> show engines; # 展示所有引擎# 重點: # innodb(預設): 支援事務, 行級鎖, 外來鍵# myisam: 查詢效率要優於innodb, 當不需要支援事務, 行級鎖, 外來鍵, 可以通過設

Oracle資料庫常用的資料型別

主要介紹一下oralce資料庫中常用的資料型別,以後有時間可以再補充其他的資料型別,下面列舉的是經常可以見到使用到的資料型別: (1)CHAR(length) 用來儲存固定長度的字串,length引

各種資料庫常用的資料型別

Oracle資料庫的資料型別 CHAR-----固定長度字串-----最大長度2000 bytes VARCHAR2 -----可變長度的字串 -----最大長度4000 bytes NCHAR -----根據字符集而定的固定長度字串 -----最大長度2000 byt

資料庫】 sqlite3資料型別和函式

sqlite3支援的資料型別: NULL、INTEGER、REAL、TEXT、BLOB 但是,sqlite3也支援如下的資料型別 smallint           16位整數 integer             32位整數 decimal(p,s)   p是精確值,

MySQL資料庫的基本資料型別

整數型別 數值型資料型別主要用來儲存數字,包含的型別有: TINYINT、SMALLINT、MEDIUMINT、 INT(INTEGER)、 BIGINT。 下面通過一個例子來檢視各種型別的所佔有的資料空間,注意,我使用的版本是mysql5.6.28,可以通過下面的

MySQL—MySQL資料庫支援的資料型別

         在資料庫中,資料型別對於設計資料庫者來說十分重要,記得在一次資料庫大會上,某前輩說了這麼一句話:“如果是我面試DBA,我第一個問題就是關於tinyint、smallint、mediumint、int、bigint的區別,如果這些不能詳細解釋,後面不管他表

資料庫中常用資料型別的取值範圍介紹(以mysql、SQL Server為準)

        在資料庫設計時,會對欄位資料型別和欄位長度進行考慮。最終選定的欄位資料型別和欄位長度又會對資料庫的效能和佔用空間大小造成一定影響。欄位的資料型別定了,則欄位在資料庫中佔用的儲存空間大小也已經定了,其與指定的資料型別長度無關。以資料庫開發中最常用的欄位型別in

MySQL資料庫基礎:資料型別及列型別

  我們要把現實世界中的各種資訊轉換成計算機能理解的東西,這些轉換後的資訊就形成了資料。例如,某人的出生日期是“1987年5月23日”,他的身高是170釐米,等等。資料不僅包括數字、字母、文字和其他特殊字元組成的文字形式的資料,而且還包括圖形、影象、動畫、影像、聲音等多媒體

【Oracle】資料庫儲存JSON資料型別的大檔案;

一、問題 因為需要在資料庫儲存pdf的解析檔案,需要用大的資料型別儲存資料內容,所以需要使用CLOB資料檔案型別; 二、方法 資料庫使用CLOB型別的資料,使用方法和其他的一樣,是Character Large Object 的縮寫;在使用Mybatis

MySQL(五)---- 選擇合適資料型別

        每當建立一張資料表的時候我們就面臨著選擇什麼樣的資料型別,選多大的等等問題,很多人憑感覺選了型別估計了大小,但這麼做往往後期出錯或浪費空間,因此根據特性選擇合適的型別及大小很有必要。 一、CHAR 與 VARCHAR   &n

選擇合適的Hadoop資料型別

為了用作Mapreduce計算的value資料型別,資料型別必須實現org.apache.hadoop.io.Writable介面。Writable介面定義了當需要資料傳輸和資料儲存時,Hadoop應如何序列化和反序列化值。 為了用作Mapreduce計算的

8.2 第八章 選擇合適資料型別

8.3 浮點數與定點數 對於小數的表示,MySQL 分為兩種方式:浮點數和定點數。浮點數包括 float(單精度)和 double(雙精度),而定點數則只有 decimal 一種表示。定點數在 MyS

資料庫優化——選擇合適的欄位型別

一、非數字型別 型別 範圍 說明 Char(N) [ binary] N=1~255 個字元 binary :分辨大小寫 固定長度 std_name cahr(32) not null VarChar(N)[binary] N=1~255 個字元 binary :分辨