mysql部門分類 mysql部類參照 mysql

2021-10-17 20:52:33 字數 2969 閱讀 4175

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 無限級分類

兩種思路吧,遞迴 和 非遞迴 遞迴 arr 1 id 1,pid 0 2 id 2,pid 0 3 id 3,pid 1 4 id 4,pid 1 5 id 5,pid 0 6 id 6,pid 3 7 id 7,pid 6 8 id 8,pid 3 9 id 9,pid 4 10 id 10,pi...

Mysql 查詢部門下所有部門

話不多說,直接上sql select dept id,dept name from select t1.dept id,t1.dept name,if find in set parent id,pids 0,pids concat pids,dept id 0 as ischild from se...

mysql部門人員排序設計 MySQL閒談(一)

話外 mysql算是目前最流行的關係學資料庫管理系統,但是mysql中的 my 含義是什麼?可能能很多人都會說命名者想與使用者搞好關係,直接翻譯成 我的sql 讓使用者倍感親切,其實真實原因是mysql創始人monty 其女兒名為 my widenius,monty1995年建立mysql時直接用其...