MySQL自學篇(四)

2022-04-05 16:32:38 字數 2577 閱讀 8153

3、enum型別

enum是乙個字串物件,其值為表建立時在列規定中列舉的一列值。語法格式如下:

欄位名 enum(『值1』,『值2』...『值n』)

欄位名指將要定義的字段,值n指列舉列表中的第n個值。enum型別的字段在取值時,只能在指定的列舉列表中取值,而且一次只能取乙個。如果建立的成員中有空格時,其尾部的空格將自動被刪除。enum值在內部用整數表示,每個列舉值均有乙個索引:列表值所允許的成員值從1開始編號,mysql儲存的就是這個索引編號。列舉最多可以有65535個元素。

例如:定義enum型別的列(『first』,』second』,』third』),該列可以取的值和每個值的索引如下:

值 索引

null

null

first

second

third

eunm值依照列索引順序排列,並且空字串排在非空字串的前面,null值排在其他所有的列舉值前。

範例:建立表emp10,定義int型別的score欄位,enum型別的字段level,列表值為(『excellent』,』good』,』bad』),向表emp10中插入資料。

create table emp10(score int,level enum('excellent','good','bad'));

insert into emp10 values (70,'good'),(90,1),(80,2),(50,3),(100,'best');

出現提示語:data truncated for column 'level' at row 5

修改sql如下:

insert into emp10 values (70,'good'),(90,1),(80,2),(50,3);

4、set型別

5、set是乙個字串物件,可以有零或多個值。set列最多可以有64個成員,其值為表建立時規定的一列值。指定包括多個set成員的set列值時,各個成員之間用逗號隔開。

語法格式如下:

set(『值1』,』值2』...』值n』)

set值在內部用整數表示,列表中每乙個值都有乙個索引編號。當建立表時,set成員的尾部空格將被自動還是拿出。但與enum型別不同的是,enum型別的字段只能從定義的列值中選擇乙個值插入,而set型別的列可以從定義的列值中選擇多個字元的聯合。

如果插入set欄位中列值有重複,mysql將自動刪除重複的值;插入set欄位的值的順序不重要,mysql會在存入資料庫時,按照定義的順序顯示;如果插入了不正確的值,缺省會忽略這些值,並給出警告

範例5、二進位制型別

mysql支援兩類字元型資料:文字字串、二進位制字串。mysql中的二進位制資料型別有:bit/binary/varbinary/tinyblob/blob/mediumblob/longblob

1、整數和浮點數

如果不需要小數部分,則使用整數來儲存資料;如果需要表示小數,則使用浮點數型別。對於浮點資料列,存入的數值會對該列定義的小數進行四捨五入。

2、浮點數和

浮點數float,double相對於定點數decimal的優勢在於:在長度一定的情況下,浮點數能表示更大的資料範圍。但是由於浮點數容易產生誤差,因此對精度要求比較高時,簡易使用decimal來儲存。decimal在mysql中是以字串儲存的,用於定義貨幣等對精度要求較高的資料,在資料遷移中,float(m,d)是非標準sql定義,資料庫遷移可能會出現問題。最好不要這樣使用。另外,兩個浮點數進行減法和比較運算時,容易出現問題。因此在進行計算的時候,一定要小心,如果進行數值比較,最好使用decimal型別

3、日期與時間型別

mysql對於不同種類的日期和時間有很多的資料型別。如果質押記住年份,則可以使用year型別即可;如果只記錄時間,只需使用time型別

如果需要同時記錄日期和時間可以使用timestamp或者datetime型別。由於timestamp列的取值範圍小於datetime的取值範圍,因此儲存範圍較大的日期最好使用datetime

timestamp也有乙個datetime不具備的屬性,預設情況下,當插入一條記錄但沒有指定timestamp列值時,mysql會把timestamp列設為房前時間。

4、char和varchar之間的特點和選擇

區別:char是固定字串,varchar是可變長度字串。char會自動刪除插入資料的尾部空格,varchar不會刪除尾部空格

char是固定長度,所以處理速度比varchar快。但其缺點是浪費儲存空間。

儲存引擎對於選擇char和varchar的影響:

對於myisam儲存引擎,只好使用固定長度的資料列代替可變長度的資料列。這樣可以是整個表靜態化,插敘更快

對於innodb儲存引擎,使用可變長度的資料列,因為innodb資料表的儲存格式不區分固定長度和可變長度,因此使用char不一定比使用varchar好。但是使用varchar可以節省空間。

5、enum和set

enum只能取單個值,他的資料列表是乙個列舉集合。因此要從多個值中選取乙個時,可以使用enum。

set可以取得多個值。在需要多個值的時候,時候使用set型別

6、blob和text

blob是二進位制字串,text是非二進位制字串。兩者都可以存放大容量的資訊。blob主要用於儲存、音訊等,text只能存放純文字檔案。

mysql自學完整 MySQL自學篇 MySQL

建立資料表 1 建立資料表的語法格式 資料表屬於資料庫,在建立資料表之前要使用 use 指定操作是在哪個資料庫中進行的,如果沒有選擇資料庫,將會出現 no database selected 的錯誤 建立資料表的語句為 create table 語法規則為 create table 欄位1 資料型別...

mysql自學完整 MySQL自學篇(八)

2 字串函式 1 計算字串字元數的函式和字串長度的函式 char length str 返回字串str所包含的字元個數。乙個多位元組字元字元算作乙個單字元 select char length date char length egg char length 中國 2 合併字串函式concat s1...

MySQL自學篇(五)

運算子 作用加法運算 減法運算 乘法運算 除法運算 求餘運算 運算子作用 等於安全的等於。可以用於判斷null 不等於小於等於 大於等於 is null 是否為空 is not null 是否不為空 least 返回最小值 gretest 最大值between and 兩個值之間 isnull 與i...