mysql 主屬性 參照 mysql型別參照

2021-10-18 09:53:56 字數 2969 閱讀 9404

mysql資料庫內容總結

數字型別:

tinyint(m) unsigned zerofull

1個位元組 預設的是有符號的-128~127

unsigned: 無符號整數 範圍0~255

m: 代表寬度 (在zerofull時才有意義),只是乙個顯示效果,不會影響到實際的資料長度

zerofull: 零填充(如果某列是zerofull預設就是unsigned) 因為不會有 0000-1 的情況

零填充(例: 0005,多少個零就是m限制寬度)

列一般不要為null

原因一,null不好比較(等號比較不可用,只可用is null 或 is not null);

原因二,null執行效率更低,可用not null default 0 指定預設值

smallint 同tinyint用法

2個位元組 預設有符號範圍-32768~32767; 無符號範圍0~65535

mediumint 同tinyint用法

3個位元組 預設有符號範圍-8388608~8388607;無符號範圍0~16777215

int 同tinyint用法

4個位元組 預設有符號範圍-2147483648~2147483647; 無符號範圍0~4294967295

bigint 同tinyint用法

8個位元組 預設有符號範圍-9223372036854775808-9223372036854775807;無符號範圍0~18446744073709551615

float(m,d) 浮點型

四個位元組

float(6, 2)表示共有六位(不加小數點),小數佔兩位.

mysql中可以指定小數字數,sql server和oracle中是不允許指定小數字數的

double(m,d) 浮點型

八個位元組

double(6, 2)表示共有六位(不加小數點),小數佔兩位.

mysql中可以指定小數字數,sql server和oracle中是不允許指定小數字數的

decimal(m,d) 定點型

使用同浮點型,只是更精確。

例:float(9,2) decimal(9,2) 存入1234567.23,float會顯示為1234567.25,而decimal會顯示1234567.23,更精確。

浮點和定點型是四個位元組或八個位元組

文字型別:

char char(m),m代表寬度 0 到 255個字元之間

,可容納的字元數(不是位元組,乙個位元組佔八位,乙個漢字佔兩個位元組,utf-8的漢字佔三個位元組),char(8),可存放八個漢字

varchar 變長 varchar(m) m代表寬度 0 到 65535個位元組之間, 大約能存放22000個漢字左右

有1-2個位元組來標記真實的長度

char和varchar區別:

1、char是定長,varchar是變長

2、char的最大的儲存長度是255個字元,這與字符集的設定沒有關係;而varchar的最大長度則是與字符集的設定有關的

因此,如果設定的字符集為

latin1:乙個字元是乙個位元組 ----->則能夠儲存的最大字元數是65532個

gbk:乙個字元是兩個位元組------->則能夠儲存的最大字元數是65532/2個

utf-8:乙個字元是三個位元組------->則能夠儲存的最大字元數是65532/3個

char定長:m個字元,如果存的小於m個字元,實佔m個字元,用空格補齊

varchar變長:m個字元,存的小於m個字元,設為n,n <= m,實佔n個字元

3、利用率

型別          寬度     可存字元     實存字元(i<=m)實佔空間利用率

char(m)  m          m               i                    m                         i/m <= 100%

varchar         m          m               i                    i字元+(1-2)位元組          i/(i + 1-2) <= 100%

char有可能等於百分百,例: 四位學號char(4),利用率為100%;varchar利用率永遠小於100%

4、char的速度快於varchar

text:是文字型別 能夠儲存比較大的資料 但是搜尋的速度比較慢,沒有全文索引    沒有寬度 加了也沒用

因此 如果不是比較大的資料 則建議採用char或者varchar來進行查詢

日期型別:

年               year

日期          date

時間          time

日期時間     datetime

時間戳          timestamp

year型別 乙個位元組 表示 1901-2155[0000,表示錯誤時選擇]

如果輸入2位,'00-69' 表示 2000-2023年 加2000 計算機的元年是從2023年開始

'70-99' 表示 1970-2023年 加1900

推薦輸入四位

date型別 典型格式 1992-08-12

儲存的範圍:'1000-01-01'-->'9999-12-31'

time時間型別 典型格式 hh-mm-ss

儲存的範圍: '-838:59:59'-->'838:59:59'

datetime日期時間型別 典型格式 '1992-09-28 12:23:23'

儲存的範圍: '1000-01-01 00:00:00'-->'9999-12-31 23:59:59'

timestamp時間戳型別

是1970-01-01:00:00:00,到當前的秒數

計算很精確,也可以方便的格式化

注意:真正開發中,很少用日期時間型別來表示乙個需要精確到秒的列,而是用時間戳型別來表示

原因:雖然日期時間型別能精確到秒,並且方便檢視,但是遇到邊界日期計算時很麻煩,不精確,像平年和閏年2月

mysql 參照表 MySQL外部參照表

由於某些原因,我需要對外部參照表進行一些幫助,因此我正在繪製空白.我有以下3張桌子 products id stock number size qty category id name description img 外部參照表 category prod cat id prod id 考慮到這一點...

mysql 參照完整性規則 mysql參照完整性

該樓層疑似違規已被系統摺疊 隱藏此樓檢視此樓 mysql支援資料庫的參照完整性約束嗎?有四個表 表一的主鍵是的表二外鍵 表二的主鍵是表三的外來鍵 表三的主鍵是表四的外來鍵 請問 如果 刪除表一 表2 3 4 會自動刪除嗎?從 3.23.43b 開始 innodb 支援外來鍵約束特性。innodb 表...

mysql 3台主主 mysql主主

設定主 主複製 1 在兩台伺服器上各自建立乙個具有複製許可權的使用者 2 修改配置檔案 主伺服器上 mysqld server id 10 log bin mysql bin relay log relay mysql relay log index relay mysql.index auto i...