關於mysql資料型別的一點所得

2021-07-01 21:50:59 字數 1483 閱讀 4068

關於mysql中的這兩種資料型別,我覺得需要好好的記錄整理一下,以備日後檢視:

首先是關於char是一種固定長度型別,varchar是一種長度可變的型別。這裡關於固定長度和可變長度,是說的儲存上,並不是我們檢索的結果上,這裡很容易讓人迷糊,

可以舉個例子中說明,如將字串"test   "(字尾三個空格,總共7個位元組)這樣的乙個字串儲存到資料庫中,char(10)和varchar(10) 在儲存的差異,char儲存10個位元組,varchar只 儲存7個。

這裡有個萬分需要注意的地方(雖然儲存上是char存10個,varchar存7個,但是查詢結果卻是char型別的查詢結果是「test」   varchar型別查詢結果是「test   」(字尾三個空格))。所以如果字串後的空格是需要的話,使用char儲存的時候需要進行特別處理了。

關於這兩個求字串長度的函式,我覺個是用的比較多的,也是容易混的兩個,當然還有bit_length函式是求字串二進位制長度的(其實是根據length求的結果再乘以8就是了)

這裡重點說一下length和char_length兩個函式的使用事項:

length求的是字串的位元組數,數字和英文本母是佔乙個位元組,中文佔三個位元組,所以"test" 結果是4    「你好世界」結果是12

char_length求的是字元的長度,也就是有幾個字元,乙個漢字,乙個字母,乙個數字都是乙個字元,所以「test」結果是4   「你好世界」結果也是4.

首先,我覺得應該說明一下mysql中數值型別都有哪些,tinyint、smallint、mediumint、int(integer)、bigint 分別是8位、16位、24位、32位、64位,分別也決定了各自的取值範圍 -2^(n-1) ~ (2^(n-1))-1  如int  是-2的31次方到2的31次方然後再-1

這裡所說的顯示長度值得是int(4) int(10) 這裡的4或者10 ,其實這個顯示長度和取值範圍沒有什麼關係。這裡如果輸入的值的長度超出了顯示長度,是會正常顯示的,如果不夠顯示長度也是正常顯示,並沒有填充空格啊??從查詢結果上是這樣的,沒研究儲存上是怎麼樣。日後查資料。

mysql中關於時間的資料型別有year、date、time、datetime、timestamp,這裡重點說明一下datetime和timestamp這兩種型別。

不過這之前先簡單了解一下:year(1901--2155) 乙個位元組儲存需求   time三個位元組儲存需求  date 三個位元組   datetime8個位元組 timestamp4個位元組。

如果插入的資料不符合資料型別的,如插入乙個日期是2015-04-32,那麼就會變成000-00-00這樣的形式、如果插入的year是2255同樣也會變成0000這樣的樣子。

這裡區別一下datetime和timestamp

簡單的將就是timestamp是帶著時區的,datetime是按照實際輸入的格式儲存,輸入什麼存什麼,但是timestamp儲存是以utc格式進行儲存帶著時區,儲存是對時區進行換算,檢索時還要進行換算回來。

暫時先總結以上四點。

對於表列資料型別選擇的一點思考

簡介 sqlserver每個表中各列的資料型別的選擇通常顯得很簡單,但是對於具體資料型別的選擇的不同對效能的影響還是略有差別。本篇文章對sql server表列資料型別的選擇進行一些探索。一些資料儲存的基礎知識 在sql server中,資料的儲存以頁為單位。八個頁為乙個區。一頁為8k,乙個區為64...

MySQL所使用的資料型別和範圍

在 mysql 中,有三種主要的型別 文字 數字和日期 時間型別。資料型別 描述char size 儲存固定長度的字串 可包含字母 數字以及特殊字元 在括號中指定字串的長度。最多 255 個字元。varchar size 儲存可變長度的字串 可包含字母 數字以及特殊字元 在括號中指定字串的最大長度。...

關於資料儲存型別的一點分析

簡介 sql server每個表中各列的資料型別的有各種形式,產生的效果也各有不同,我們主要根據效率兼顧效能的情況下討論下如何規定型別。在sql server中,資料的儲存以頁為單位。八個頁為乙個區。一頁為8k,乙個區為64k,這個意味著1m的空間可以容納16個區。sql server中的分配單元分...