MySQL 2 列型別及列屬性

2021-10-03 11:16:22 字數 3250 閱讀 1099

1.2 時間日期

1.3 字串

1.4 mysql記錄長度

2.列屬性

所謂的資料型別: 對資料進行統一的分類, 從系統的角度出發為了能夠使用統一的方式進行管理: 更好的利用有限的空間.

sql中將資料型別分成了三大類:數值型別, 字串型別和時間日期型別

數值型資料: 都是數值

系統將數值型分為整數型和小數型

系統將整型又細分成了5類:

小數型: 帶有小數點或者範圍超出整型的數值型別.

sql中,將小數型細分成兩種: 浮點型和定點型

(1)浮點型

浮點型資料是一種精度型資料: 因為超出指定範圍之後, 會丟失精度(自動四捨五入)

浮點型:理論分為兩種精度

插入資料: 可以是直接小數,也可以是科學計數法。整型部分是不能超出長度的,但是小數部分可以超出長度(系統會自動四捨五入)

結果: 浮點數一定會進行四捨五入(超出精度範圍); 浮點數如果是因為系統進製導致整數部分超出指定的長度,那麼系統也允許成立.

(2)定點型:decimal(更安全)

在mysql中,定點數以字串形式儲存,因此,其精度比浮點數要高,而且浮點數會出現誤差,這是浮點數一直存在的缺陷。如果要對資料的精度要求比較高,還是選擇定點數decimal比較安全。

定點型: 絕對的保證整數部分不會被四捨五入(不會丟失精度),小數部分有可能(理論小數部分也不會丟失精度)

插入資料:定點數的整數部分一定不能超出長度(進製不可以),小數部分的長度可以隨意超出(系統自動四捨五入)

浮點數如果進製導致長度溢位沒有問題,但是定點數不行

插入資料: 時間time可以是負數,而且可以是很大的負數, year可以使用2位數插入,也可以使用4位數,但是前面新增的前兩位有區別。

timestamp欄位: 只要當前所在的記錄被更新, 該欄位一定會自動更新成當前時間

在sql中,將字串型別分成了6類: char,varchar,text , blob, enum和set

定長字串: char, 磁碟(二維表)在定義結構的時候,就已經確定了最終資料的儲存長度.

char(l): l代表length, 可以儲存的長度, 單位為字元, 最大長度值可以為255.

char(4): 在utf8 環境下,需要4 * 3 = 12個位元組

變長字串: varchar, 在分配空間的時候, 按照最大的空間分配: 但是實際上最終用了多少,是根據具體的資料來確定.

varchar(l): l表示字元長度 理論長度是65536個字元, 但是會多出1到2個位元組來確定儲存的實際長度: 但是實際上如果長度超過255,既不用定長也不用變長, 使用文字字串text

varchar(10): 的確存了10個漢字, utf8環境, 10 * 3 + 1 = 31(bytes)

儲存了3個漢字: 3 * 3 + 1 = 10(bytes)

如何選擇定長或者是變長字串呢?

定長的磁碟空間比較浪費, 但是效率高: 如果資料基本上確定長度都一樣, 就是使用定長, 如身份證, **號碼, 手機號碼等

變長的磁碟空間比較節省, 但是效率低: 如果資料不能確定長度(不同資料有變化), 如姓名, 位址等

如果資料量非常大, 通常說超過255個字元就會使用文字字串

文字字串根據儲存的資料的格式進行分類: text和blob

text: 儲存文字(二進位制資料實際上都是儲存路徑)

blob: 儲存二進位制資料(通常不用)

列舉: enum, 事先將所有可能出現的結果都設計好, 實際上儲存的資料必須是規定好的資料中的乙個.

列舉的使用方式

定義:enum(可能出現的元素列表); 如enum(『男』,』女』,』不男不女』,』妖』,』保密』);

使用: 儲存資料,只能儲存上面定義好的資料

作用:

一、規範資料格式: 資料只能是規定的資料中的其中乙個

二、節省儲存空間(列舉通常有乙個別名: 單選框): 列舉實際儲存的是數值而不是字串本身.

集合跟列舉很類似: 實際儲存的是數值,而不是字串(集合是多選)。

集合使用方式:

定義:set(元素列表)

使用: 可以使用元素列表中的元素(多個), 使用逗號分隔

集合中每乙個元素都是對應乙個對應二進位制位。集合的強大在於能夠規範資料和節省空間。

mysql記錄長度: 65535個位元組, varchar達不到理論長度, null占用乙個位元組, text文字不占用記錄長度(但是本身佔據十個位元組)

列屬性: 真正約束欄位的是資料型別, 但是資料型別的約束很單一. 需要有一些額外的約束, 來更加保證資料的合法性.

列屬性有很多: null/not null, default, primary key, unique key, auto_increment,comment

雖然預設的, 資料庫基本都是字段為空, 但是實際上在真實開發的時候, 盡可能的要保證所有的資料都不應該為空: 空資料沒有意義; 空資料沒有辦法參與運算.

描述, 沒有實際含義: 是專門用來描述字段,會根據表建立語句儲存: 用來給程式猿(資料庫管理員)來進行了解的.

某一種資料會經常性的出現某個具體的值, 可以在一開始就指定好: 在需要真實資料的時候,使用者可以選擇性的使用預設值.

【整理自網上資料】

mysql資料型別及列型別(2)

2.mysql的列 字段 型別 資料庫中的每個表都是由乙個或多個列 字段 構成的。在用create table語句建立乙個表時,要為每列 字段 指定乙個型別。列 字段 的型別比資料型別更為細化,它精確地描述了給定表列 字段 可能包含的值的種類,如是否帶小數 是否文字很多。2.1數值列型別 mysql...

mysql列鍵 Mysql列屬性

列屬性又稱之為字段屬性 在mysql中一共有6個屬性 null,預設值 default 列描述 comment 主鍵 primary key 唯一鍵 unique key 和自動增長 修改資料庫字符集 字符集和校對集 alter database 資料庫名字 charset 字符集 null屬性 1...

mysql列型別 列約束

mysql伺服器端資料的邏輯結構 server database table row column 1.常用的sql語句 1 增 insert into 表 values 值,值,2 刪 delete from 表 3 改 update 表 set 列 值,列 值 4 查 select from 表...